灾难恢复演练的频率、场景与验收
DR 演练验证的是“真出事时能不能在 RTO 内恢复、会丢多少数据(RPO)”,不是“备份任务是否成功”。备份成功不等于可恢复;必须实际恢复到独立环境并校验数据。
演练类型从桌面推演、单组件故障、区域切换到全量恢复。频率按业务等级定,核心系统至少每季度一次切换演练。
DR 分级:
| 等级 | RTO | RPO | 方案 | 演练频率 |
|---|---|---|---|---|
| 核心交易 | 15 分钟 | 0 | 多活 + 同步复制 | 每季度切换 |
| 重要服务 | 1 小时 | 5 分钟 | 同城双活 + 异步复制 | 每半年 |
| 内部系统 | 8 小时 | 24 小时 | 备份恢复 | 每年 |
演练方案模板:
演练名称:prod-sh-1 区域故障切换
时间窗口:2026-11-08 02:00–05:00 CST
范围:支付、订单;不含风控
前置条件:备份校验通过、DNS TTL 调到 60s、观察者就位
步骤:
1. 冻结变更,通知业务
2. 停止 prod-sh-1 写入或模拟区域故障
3. 提升 prod-sh-2 数据库为主
4. 切换全局流量
5. 验证核心链路和关键报表
6. 记录实测 RTO/RPO
中止条件:数据不一致、双写、错误率 > 5%
回滚:切回 prod-sh-1,恢复复制关系
备份恢复验证:
velero restore create --from-backup prod-20261017 --namespace-mappings prod:drill
kubectl -n drill get pods
kubectl -n drill get pvc
psql "$DR_DSN" -c "select count(*) from orders;"
切换后验证:
kubectl --context prod-sh-2 get nodes
kubectl --context prod-sh-2 -n checkout get pods
curl -fsS https://api.example.com/healthz
记录实测结果:
| 指标 | 目标 | 实测 | 差距 | 改进项 |
|---|---|---|---|---|
| RTO | 15 分钟 | 22 分钟 | +7 分钟 | 预拉起副本,减少镜像拉取 |
| RPO | 0 | 30 秒 | +30 秒 | 改为同步复制 |
| 数据校验 | 100% | 99.98% | -0.02% | 补恢复后对账任务 |
演练判定规则:
合上页面,先回答,再展开对照。