← 中文资源

简体中文版本

通过恢复验证数据库备份

把 PostgreSQL 备份恢复到隔离数据库,比较行数与校验和,并记录恢复时间,证明备份确实可用。

阅读英文原文

未恢复过的备份只是假设

备份任务会以多种方式静默失败:转储被截断、加密密钥丢失、存储桶为空,或恢复目标缺少扩展。唯一可靠的验证是恢复到隔离环境并检查数据。应安排计划、指定负责人并记录结果。

pg_dump -Fc -f backup.dump "$DATABASE_URL"
createdb restore_test
pg_restore --no-owner --dbname=restore_test backup.dump
psql restore_test -c "SELECT count(*) FROM orders;"

比较有意义的数据

行数能发现缺表,但发现不了列被截断或值被破坏。对不可变表,按顺序对行计算确定性校验和。对可变表,与一致性快照比较或接受有记录的时间偏差。还要检查序列、索引、约束和扩展;应用可能恢复了行,却因序列缺失而失败。

测量恢复目标

记录恢复耗时、恢复的数据量和备份代表的时间点,并与恢复时间目标和恢复点目标比较。一个六小时才能恢复的备份即使技术上有效,也不满足两小时目标。要在与生产相近的硬件上测试,而不只是笔记本。

保护演练过程

使用专用恢复环境,不要在生产上操作。限制可读取备份和加密密钥的人员,并审计恢复访问。验证后删除临时数据库并安全移除临时转储。验证流程泄露完整生产数据副本,就是一次新事故,而不是控制措施。