← 中文资源

简体中文版本

执行季度恢复演练

把最新生产备份恢复到隔离实例,核对行数与校验和,并记录实际恢复耗时。

阅读英文原文

概述

备份任务成功只说明转储文件写出来了,并不代表能恢复。恢复演练是验证完整链路的唯一方式:存储访问、加密密钥、工具版本、扩展可用性、磁盘空间和耗时。演练还会产出可以在评审中站得住脚的 RTO 数字。

步骤

  1. 在隔离实例上创建演练库,不要使用生产或预发环境:
createdb -h drill-db.internal -U postgres restore_drill
  1. 恢复最新备份并计时,关闭属主和 ACL 重映射以避免角色不存在导致失败:
time pg_restore -h drill-db.internal -U postgres -d restore_drill \
  --no-owner --no-acl --jobs=4 /backups/latest.dump
  1. 对比备份清单中的快照,核对关键表的行数与校验和:
SELECT 'orders' AS t, count(*), md5(sum(id)::text) FROM orders;
  1. 将耗时、结果和问题写入带日期的演练报告,然后删除演练库释放空间。

验证

预期 pg_restore 无致命错误完成,行数与校验和与备份清单一致,索引和约束确实存在,实测耗时与 RTO 目标对比有明确结论。若扩展缺失,应先创建扩展再恢复,并把该步骤写入恢复手册。

注意事项

  • 逻辑转储演练不覆盖基于 WAL 的时间点恢复,需要单独演练。
  • 演练硬件性能可能与生产不同,实测时间只是估算。
  • pg_restore 可能以警告结束,必须核对数据而不只看退出码。
  • 每次大版本升级后重新演练,并在同一次变更中更新恢复手册。