PostgreSQL 备份,至少要分清三条路线。
1. 逻辑备份:导出对象和数据
最经典:
pg_dump mydb > db.sql更常用的生产方式:
pg_dump -Fc mydb > db.dump恢复:
createdb mydb_restore
pg_restore -d mydb_restore db.dump如果是大库,pg_restore 可以并行:
pg_restore -d mydb_restore -j 4 db.dump逻辑备份适合:
- 单库迁移
- 部分恢复
- 跨版本搬运
- 对象级选择恢复
2. 全实例逻辑备份
pg_dumpall > cluster.sql这会包含整个 cluster 的数据库对象和全局对象,更像“把整座馆的目录和档案都导成脚本”。
3. 物理备份 / 基础备份
如果你要的是整套实例级恢复、PITR、复制起点,就要看:
pg_basebackup -D /backup/base -Ppg_basebackup 做的是cluster 级别基础备份,不是单库备份。
还有一个常见误区要立刻纠正:
直接 tar 数据目录官方文档明确说,这种文件系统级拷贝要想可用,数据库服务器必须关闭;否则拿到的可能不是一致快照。
所以:
- 在线逻辑备份:
pg_dump - 在线物理基础备份:
pg_basebackup - 冷拷贝数据目录:只能在停库时做
再补一句生产级现实:
备份不等于恢复。 真正靠谱的备份策略,至少要定期演练恢复。