全书目录

第八篇:PostgreSQL 完全指南 —— 时间档案馆宇宙

第十三章:备份 —— 备份不是“导一份 SQL”就结束

1 分钟 421 字 第 177 / 962 个阅读单元

PostgreSQL 备份,至少要分清三条路线。

1. 逻辑备份:导出对象和数据

最经典:

bash
pg_dump mydb > db.sql

更常用的生产方式:

bash
pg_dump -Fc mydb > db.dump

恢复:

bash
createdb mydb_restore
pg_restore -d mydb_restore db.dump

如果是大库,pg_restore 可以并行:

bash
pg_restore -d mydb_restore -j 4 db.dump

逻辑备份适合:

  • 单库迁移
  • 部分恢复
  • 跨版本搬运
  • 对象级选择恢复

2. 全实例逻辑备份

bash
pg_dumpall > cluster.sql

这会包含整个 cluster 的数据库对象和全局对象,更像“把整座馆的目录和档案都导成脚本”。

3. 物理备份 / 基础备份

如果你要的是整套实例级恢复、PITR、复制起点,就要看:

bash
pg_basebackup -D /backup/base -P

pg_basebackup 做的是cluster 级别基础备份,不是单库备份。

还有一个常见误区要立刻纠正:

text
直接 tar 数据目录

官方文档明确说,这种文件系统级拷贝要想可用,数据库服务器必须关闭;否则拿到的可能不是一致快照。

所以:

  • 在线逻辑备份:pg_dump
  • 在线物理基础备份:pg_basebackup
  • 冷拷贝数据目录:只能在停库时做

再补一句生产级现实:

备份不等于恢复。 真正靠谱的备份策略,至少要定期演练恢复。