跳转至

备份恢复指南(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 备份原则

  1. 3-2-1 原则:3 份数据 / 2 种介质 / 1 份异地
  2. 自动化:备份任务全自动,减少人为遗漏
  3. 可验证:每次备份后验证完整性
  4. 定期演练:每月演练恢复流程
  5. 分级备份:关键数据高频 / 非关键数据低频

二、备份策略

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)备份恢复体系规范。每月演练 + 每次变更前备份 + 恢复后验证。