← 中文资源

简体中文版本

恢复生产备份并验证其可用性

把生产备份恢复到隔离环境,核对行数与校验和、运行只读冒烟测试,并记录真实恢复时间与数据丢失窗口。

阅读英文原文

目标

证明生产备份能够在恢复目标内还原为可用数据库,并记录实测恢复时间与数据丢失窗口,而不是只确认备份文件存在。

步骤

  1. 选择一份全量备份和恢复目标时间点,记录备份时间戳及对应的恢复点目标。
  2. 在独立网络创建隔离实例,规格与生产一致,且生产凭据不可用;确认两个网络互不可达。
  3. 还原全量备份并重放 WAL 或事务日志到目标时间,记录每个阶段的起止时间:
pg_restore --dbname=postgres --create --clean --if-exists \
  --jobs=4 /backups/acme-prod-2026-10-21.dump

psql -d acme_prod_restore -c \
  "SELECT count(*) FROM orders WHERE created_at >= '2026-10-20';"

psql -d acme_prod_restore -c \
  "SELECT last_value FROM orders_id_seq;"
  1. 核对大表行数、序列值、约束和扩展,并比较抽样校验和。
  2. 用只读应用副本连接恢复库,执行登录、查询和报表等主要流程。
  3. 计算从故障开始到应用可用的时间,与恢复时间目标对比并写入报告。

验证

恢复库报告的目标时间正确;关键表行数和校验和与生产一致;序列值不会导致主键冲突;扩展、角色和权限齐全;只读冒烟测试全部通过;报告中写明实测恢复时间和数据丢失窗口。

回滚

隔离环境中的恢复完全可逆:销毁实例和快照即可,生产不受影响。若在真实事件中执行了就地恢复,回滚依赖恢复前创建并验证过的快照,因此必须先做快照再操作。只有报告导出后才能销毁恢复实例;为节省空间而删除生产备份是不可逆步骤,绝不属于本演练的范围。