PostgreSQL 备份恢复与版本升级(pg_dump / pg_basebackup / pg_upgrade)
2026-08-11 01:32:30
# 数据库
PG 的备份恢复体系成熟,配合 WAL 归档还能做时间点恢复(PITR)。版本升级则有专门的 pg_upgrade 工具。本文一并梳理。
一、逻辑备份
1 | pg_dump -U postgres -Fc mydb > mydb.dump # 自定义格式(推荐,可选择性恢复) |
恢复:
1 | pg_restore -U postgres -d mydb -j 4 mydb.dump # -j 并行 |
二、物理备份 + PITR
1 | pg_basebackup -h 主库 -U repl -D /backup/base -Fp -Xs # 基础备份 |
配合 postgresql.conf 开启 WAL 归档:
1 | archive_mode = on |
恢复时:还原基础备份 → 在 recovery.signal 中指定 recovery_target_time → 启动到指定时间点。
三、大版本升级(pg_upgrade)
以 14 → 16 为例:
1 | # 安装新版本后 |
--link 速度快但原数据目录会被改,升级前务必全量备份。
四、版本升级注意事项
- 扩展兼容性:确认
pg_stat_statements、postgis等扩展在新版本可用。 - 编码与 locale:新老集群需一致,否则
pg_upgrade报错。 - 先升级测试库:在镜像环境验证应用兼容性,再动生产。
五、备份铁律(与 MySQL 一致)
- 定期 + 异地 + 加密;
- 演练恢复,不要等到出事才发现备份坏了;
- 大库优先考虑物理备份/PITR。
小结
逻辑用 pg_dump/pg_restore,时间点恢复靠基础备份+WAL 归档;大版本升级用 pg_upgrade(–link 快但先备份);升级前核对扩展与 locale。