本文引用的文件
本文件面向AI有声书生成平台,提供一套完整的备份与恢复方案,覆盖数据库(MySQL)、文件存储(本地/阿里云OSS)以及配置文件等关键资产。内容包括:
围绕备份与恢复的关键目录与文件如下:
部署与备份:生产部署脚本中包含服务器侧备份逻辑
graph TB
subgraph "应用层"
APP["后端应用<br/>server/src/app.ts"]
CFG["配置模块<br/>server/src/config/index.ts"]
STORE["存储服务<br/>server/src/services/storage.service.ts"]
OSS["OSS服务<br/>server/src/services/oss.service.ts"]
end
subgraph "数据层"
PRISMA["Prisma Schema<br/>server/prisma/schema.prisma"]
MYSQL["MySQL 数据库"]
MIGLOCK["迁移锁<br/>server/prisma/migrations/migration_lock.toml"]
end
subgraph "文件存储"
LOCAL["本地上传目录<br/>process.cwd()/uploads"]
ALI["阿里云OSS Bucket"]
end
subgraph "部署与备份"
DPROD["生产部署脚本<br/>deploy-prod.sh"]
DAUTO["自动部署脚本<br/>server/deploy-auto.sh"]
DSIM["简化部署脚本<br/>server/deploy-simple.sh"]
end
APP --> CFG
APP --> STORE
STORE --> OSS
STORE --> LOCAL
APP --> PRISMA
PRISMA --> MYSQL
DPROD --> MYSQL
DPROD --> LOCAL
DAUTO --> MYSQL
DSIM --> MYSQL
图表来源
章节来源
章节来源
备份与恢复涉及以下关键路径:
恢复验证:部署完成后进行关键文件存在性检查与服务健康检查
sequenceDiagram
participant CI as "CI/运维"
participant REM as "远端服务器"
participant DB as "MySQL"
participant FS as "文件系统"
participant APP as "后端应用"
CI->>REM : "执行生产部署脚本"
REM->>REM : "创建备份目录"
REM->>DB : "备份数据库部署前"
REM->>FS : "备份上传目录部署前"
REM->>REM : "解压并替换服务与前端"
REM->>APP : "复制生产配置(.env.production -> .env)"
REM->>APP : "生成Prisma客户端"
REM->>APP : "启动PM2服务"
REM->>APP : "健康检查"
APP-->>REM : "返回健康状态"
REM-->>CI : "部署完成"
图表来源
章节来源
RTO/RPO
RTO取决于备份介质与恢复脚本执行效率
flowchart TD
Start(["开始备份"]) --> CheckLock["检查迁移锁文件"]
CheckLock --> LockOK{"迁移锁正常?"}
LockOK --> |否| Abort["中止并告警"]
LockOK --> |是| DumpDB["执行数据库全量备份"]
DumpDB --> BackupUploads["备份上传目录"]
BackupUploads --> Store["写入服务器备份目录"]
Store --> Done(["完成"])
Abort --> Done
图表来源
章节来源
RTO/RPO
RTO取决于对象数量与网络带宽
flowchart TD
S(["开始文件备份"]) --> DetectStore{"存储类型?"}
DetectStore --> |本地| LocalBackup["拷贝本地uploads目录"]
DetectStore --> |OSS| OSSBackup["列举并备份OSS对象"]
LocalBackup --> SaveLocal["保存至服务器备份目录"]
OSSBackup --> SaveOSS["保存至服务器备份目录"]
SaveLocal --> E(["结束"])
SaveOSS --> E
图表来源
章节来源
恢复流程
部署脚本会再次复制生产配置到运行时配置文件
sequenceDiagram
participant Ops as "运维"
participant Server as "服务器"
Ops->>Server : "备份生产配置"
Ops->>Server : "备份运行时配置(.env)"
Ops->>Server : "恢复配置文件"
Server->>Server : "部署脚本复制生产配置到运行时"
图表来源
章节来源
恢复测试
健康检查接口验证服务可用性
sequenceDiagram
participant Ops as "运维"
participant Prod as "生产部署脚本"
participant Auto as "自动部署脚本"
participant Sim as "简化部署脚本"
Ops->>Prod : "执行生产部署"
Ops->>Auto : "触发自动部署"
Ops->>Sim : "执行简化部署"
Prod-->>Ops : "部署完成并健康检查"
Auto-->>Ops : "部署完成"
Sim-->>Ops : "服务启动完成"
图表来源
章节来源
部署脚本依赖服务器侧备份与PM2进程管理
graph LR
CFG["配置模块<br/>config/index.ts"] --> DB["数据库连接"]
STORE["存储服务<br/>storage.service.ts"] --> OSS["OSS服务<br/>oss.service.ts"]
STORE --> FS["本地文件系统"]
DPROD["生产部署脚本"] --> DB
DPROD --> FS
DPROD --> APP["后端应用"]
图表来源
章节来源
章节来源
本方案通过“部署前备份”与“双后端存储”相结合的方式,确保数据库与文件数据在生产环境中的高可靠与可恢复性。配合自动化脚本与恢复测试,可有效达成RTO/RPO目标,并保障业务连续性。