PostgreSQLNotes

第 29 章:备份恢复

zjc 于 2026-01-29 发布

这是《PostgreSQL 零基础实战指南》的独立章节版。本章从概念、实操和生产排查三个视角展开,代码块保留了原书可直接运行的版本。 备份是最后的安全网。生产方案必须能恢复,并且恢复能力被演练验证过。

29.1 备份类型

类型 说明
逻辑备份 SQL 或归档文本
物理备份 数据目录和 WAL
基础备份 + WAL 支持 PITR
快照 存储层一致性快照

29.2 pg_dump

pg_dump -h localhost -U postgres -Fc -d shop -f shop.dump

恢复:

createdb shop_restore
pg_restore -d shop_restore shop.dump

适合小库和单库迁移,大库恢复较慢。

29.3 pg_dumpall

pg_dumpall -f cluster.sql

包含角色、表空间和数据库定义。全局对象需要定期备份。

29.4 PITR

要素:

基础备份
连续 WAL 归档
恢复目标时间
配置和密码等外部资源

归档配置:

archive_mode = on
archive_command = 'test ! -f /archive/%f && cp %p /archive/%f'

29.5 备份工具

常见工具:

工具 用途
pgBackRest 物理备份和仓库管理
Barman 备份与恢复
wal-g WAL 和对象存储
pg_dump 逻辑导出

选择标准:

  1. 全量 / 增量能力;
  2. 对象存储支持;
  3. 压缩加密;
  4. 并行恢复;
  5. 与云环境兼容;
  6. 团队熟悉度。

29.6 恢复流程

1. 确认故障和恢复目标
2. 准备新实例
3. 恢复基础备份
4. 配置 restore_command
5. 设置 recovery_target
6. 启动恢复
7. 校验数据
8. 切换应用
9. 保留故障现场

29.7 校验

SELECT count(*) FROM orders;
SELECT max(created_at) FROM orders;
SELECT pg_current_wal_lsn();

还应校验:

  1. 关键表行数;
  2. 业务指纹;
  3. 索引完整性;
  4. 应用登录;
  5. 复制状态。

29.8 RPO 与保留策略

全量:每周
差异 / 增量:每日
WAL:连续归档
异地:按灾备等级

RPO 取决于 WAL 归档连续性,而不是备份文件本身。

本章小结

逻辑备份适合小规模和迁移,物理备份加 WAL 是生产恢复主流方案。备份必须加密、异地保存、容量监控,并定期做真实恢复演练。

思考题

  1. pg_dump 和物理备份有什么区别?
  2. PITR 为什么需要连续 WAL?
  3. RPO 如何确定?
  4. 恢复后如何校验?
  5. 哪些全局对象容易被漏备份?