备份恢复指南(Backup & Recovery)
文档编号:DOC-OPS-AM-05
版本:V1.0
创建日期:2026-08-11
维护人:听云(WCL) / TL
保密级别:🟢 可公开发布
关联文档:管理员操作手册 README、部署流程、故障排查、凭据管理
一、文档定位
本文件定义听云(WCL)维护的备份与恢复体系,包括备份策略、恢复流程、演练机制。目标是确保在故障 / 数据丢失 / 安全事件发生时,能快速恢复业务,控制数据损失在可接受范围内。
1.1 备份恢复目标
| 指标 |
目标 |
说明 |
| RPO(恢复点目标) |
< 1 小时 |
最多丢失 1 小时数据 |
| RTO(恢复时间目标) |
< 4 小时 |
4 小时内恢复服务 |
| 备份成功率 |
≥ 99.5% |
月度 |
| 恢复演练频率 |
每月 1 次 |
验证备份有效性 |
| 备份保留周期 |
30 天 + 长期归档 |
满足合规要求 |
1.2 备份原则
- 3-2-1 原则:3 份数据 / 2 种介质 / 1 份异地
- 自动化:备份任务全自动,减少人为遗漏
- 可验证:每次备份后验证完整性
- 定期演练:每月演练恢复流程
- 分级备份:关键数据高频 / 非关键数据低频
二、备份策略
2.1 备份对象与频率
| 备份对象 |
备份类型 |
频率 |
保留周期 |
存储位置 |
| 数据库(主库) |
全量备份 |
每日 02:00 |
30 天 |
Cloudflare R2 + 本地 |
| 数据库(增量) |
增量备份 |
每小时 |
7 天 |
Cloudflare R2 |
| 数据库(WAL) |
日志归档 |
实时 |
7 天 |
Cloudflare R2 |
| 配置文件(.env) |
全量备份 |
每次变更 + 每日 |
90 天 |
TL 本地 + Cloudflare R2 |
| Docker 镜像 |
镜像归档 |
每次发布 |
90 天 |
镜像仓库 + 本地 |
| 用户上传文件 |
全量备份 |
每日 03:00 |
30 天 |
Cloudflare R2 跨桶复制 |
| 日志文件 |
压缩归档 |
每日 04:00 |
30 天 |
Cloudflare R2 |
| 代码仓库 |
Git 镜像 |
实时(push 触发) |
永久 |
Gitee + 本地镜像 |
2.2 备份类型说明
| 类型 |
说明 |
优点 |
缺点 |
| 全量备份 |
备份全部数据 |
恢复简单 |
耗时 / 占空间 |
| 增量备份 |
备份上次备份后变化 |
快 / 省空间 |
恢复复杂 |
| 差异备份 |
备份上次全量后变化 |
折中 |
折中 |
| 日志归档 |
WAL / binlog |
RPO 极低 |
恢复时需重放 |
2.3 备份存储层级
热存储(本地) → 最近 7 天备份,快速恢复
↓
温存储(R2) → 最近 30 天备份,分钟级恢复
↓
冷存储(R2 Glacier) → 90 天以上归档,小时级恢复
三、备份执行 SOP
3.1 数据库自动备份
3.1.1 全量备份脚本(示例)
#!/bin/bash
# 数据库全量备份脚本
# 每日 02:00 由 cron 触发
BACKUP_DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="db_full_${BACKUP_DATE}.sql.gz"
BACKUP_DIR="/backup/db"
R2_BUCKET="hk2026-backup"
R2_PATH="db/full/${BACKUP_FILE}"
# 1. 执行备份
pg_dump $DATABASE_URL | gzip > ${BACKUP_DIR}/${BACKUP_FILE}
# 2. 验证完整性
if [ ! -s ${BACKUP_DIR}/${BACKUP_FILE} ]; then
echo "ERROR: Backup file is empty"
# 告警通知
exit 1
fi
# 3. 上传到 R2
aws s3 cp ${BACKUP_DIR}/${BACKUP_FILE} s3://${R2_BUCKET}/${R2_PATH} \
--endpoint-url $R2_ENDPOINT
# 4. 清理本地旧备份(保留 7 天)
find ${BACKUP_DIR} -name "db_full_*.sql.gz" -mtime +7 -delete
# 5. 清理 R2 旧备份(保留 30 天)
aws s3 ls s3://${R2_BUCKET}/db/full/ --endpoint-url $R2_ENDPOINT | \
awk '{print $4}' | \
while read file; do
# 30 天前的文件删除
# ...
done
3.1.2 备份验证
每次备份完成后自动验证:
| 验证项 |
方法 |
失败处置 |
| 文件大小 |
ls -la |
0 字节 → 告警 |
| 文件完整性 |
gzip -t |
损坏 → 重新备份 |
| 数据库可恢复 |
每月恢复测试 |
不可恢复 → 排查 |
| R2 上传成功 |
aws s3 ls |
失败 → 重试 / 告警 |
3.2 配置文件备份
| 触发条件 |
备份内容 |
存储位置 |
| 每次配置变更 |
.env.prod.local + docker-compose.prod.yml |
TL 本地 + R2 |
| 每日定时 |
全部配置文件 |
R2 |
| 部署前 |
部署前快照 |
R2 + 本地 |
注意:.env.prod.local 含凭据明文,备份文件须加密存储,访问权限仅 TL。
3.3 镜像备份
| 触发条件 |
备份内容 |
存储位置 |
| 每次发布 |
新版本镜像 |
镜像仓库 |
| 每次发布 |
上一版本镜像(保留 24h) |
本地 |
| 每月归档 |
当月全部发布镜像 |
R2 |
四、恢复 SOP
4.1 恢复场景
| 场景 |
恢复类型 |
RTO |
数据损失 |
| 误删数据 |
时间点恢复(PITR) |
1 小时 |
< 1 小时 |
| 数据库损坏 |
全量 + WAL 恢复 |
2 小时 |
< 1 小时 |
| 服务故障 |
镜像回滚 |
30 分钟 |
0 |
| 配置错误 |
配置回滚 |
15 分钟 |
0 |
| 数据中心故障 |
异地恢复 |
4 小时 |
< 1 小时 |
| 勒索软件 |
异地冷备份恢复 |
8 小时 |
< 24 小时 |
4.2 数据库恢复流程
T0:确认需要恢复
↓
T+5min:评估恢复点
├─ 误删数据 → 选择误删前的时间点
├─ 数据库损坏 → 选择最近的全量 + WAL
└─ 灾难恢复 → 选择异地备份
↓
T+10min:TL 授权恢复操作
↓
T+15min:停止服务(避免数据冲突)
↓
T+30min:恢复全量备份
├─ 下载备份文件
├─ 解压
└─ 恢复到数据库
↓
T+45min:重放 WAL(到目标时间点)
↓
T+60min:验证数据完整性
├─ 关键表行数
├─ 最新数据时间戳
└─ 业务数据抽样验证
↓
T+75min:重启服务
↓
T+90min:业务流程验证
↓
T+120min:恢复完成 + OWLG 记录
4.3 配置恢复流程
T0:确认配置错误
↓
T+5min:从备份恢复配置
├─ 从 R2 下载最近配置备份
└─ 恢复 .env.prod.local / docker-compose.prod.yml
↓
T+10min:重启服务
↓
T+15min:验证服务正常
↓
T+30min:恢复完成 + OWLG 记录
4.4 镜像回滚流程
详见 deployment-guide.md §四 回滚 SOP。
五、恢复演练
5.1 演练频率
| 演练类型 |
频率 |
范围 |
| 数据库恢复演练 |
每月 1 次 |
全量恢复 + WAL 重放 |
| 配置恢复演练 |
每季度 1 次 |
配置文件恢复 |
| 镜像回滚演练 |
每次发布后 |
验证回滚可用 |
| 异地恢复演练 |
每年 1 次 |
完整异地恢复 |
5.2 演练 SOP
T-7 日:制定演练计划
├─ 演练目标
├─ 演练步骤
├─ 成功标准
└─ 回滚预案
↓
T-1 日:TL 审批演练计划
↓
T 日:执行演练
├─ 在隔离环境恢复
├─ 验证数据完整性
├─ 验证业务流程
└─ 记录演练时长
↓
T+1 日:编写演练报告
├─ 演练结果
├─ 发现的问题
└─ 改进项
↓
T+7 日:改进项落地
5.3 演练成功标准
| 标准 |
目标 |
| 恢复时间 |
≤ RTO |
| 数据损失 |
≤ RPO |
| 数据完整性 |
100% |
| 业务流程 |
全部通过 |
| 监控告警 |
正常上报 |
六、备份监控与告警
6.1 备份监控指标
| 指标 |
阈值 |
告警级别 |
| 备份任务执行成功率 |
< 100% |
P2 |
| 备份文件大小 |
较上次下降 > 50% |
P2 |
| 备份耗时 |
较上次增加 > 100% |
P3 |
| R2 存储空间 |
> 80% |
P2 |
| 备份文件完整性 |
验证失败 |
P1 |
| 恢复演练 |
未按期执行 |
P3 |
6.2 备份告警响应
| 告警 |
响应 |
| 备份失败 |
立即排查 + 手动备份 |
| 备份文件异常 |
验证 + 重新备份 |
| R2 空间不足 |
清理旧备份 + 扩容 |
| 演练未按期 |
月底前补演练 |
七、修订记录
| 版本 |
日期 |
修订人 |
修订内容 |
| V1.0 |
2026-08-11 |
DT |
初始化备份恢复指南;定义 RPO<1h / RTO<4h 目标;定义 8 类备份对象策略 + 3 级存储层级;定义数据库/配置/镜像恢复 SOP + 月度演练机制 |
本文件为听云(WCL)备份恢复体系规范。每月演练 + 每次变更前备份 + 恢复后验证。