在 CentOS 上备份 PostgreSQL,常见且推荐的方式有 逻辑备份(pg_dump/pg_dumpall) 和 物理备份(文件系统/PG_BASEBACKUP)。下面按常用场景详细说明。
postgres 用户操作为例su - postgres
pg_dump dbname > /backup/dbname_$(date +%F).sql
压缩备份:
pg_dump dbname | gzip > /backup/dbname_$(date +%F).sql.gz
pg_dumpall > /backup/all_db_$(date +%F).sql
⚠️ 注意:
pg_dumpall 只能生成 SQL 文本| 参数 | 说明 |
|---|---|
-h |
数据库主机 |
-p |
端口 |
-U |
用户名 |
-F c |
自定义格式(可压缩,支持选择性恢复) |
-j |
并行备份 |
-f |
输出文件 |
示例(压缩 + 并行):
pg_dump -U postgres -d dbname -F c -j 4 -f /backup/dbname.dmp
psql dbname < dbname_2026-01-20.sql
pg_restore -U postgres -d dbname dbname.dmp
pg_basebackup -D /backup/pgdata_$(date +%F) -F t -z -P -U postgres
恢复步骤:
适用于:
需要配置:
wal_level = replica
archive_mode = on
archive_command = 'cp %p /archive/%f'
crontab -e
每天凌晨 2 点备份:
0 2 * * * /usr/bin/pg_dump dbname | gzip > /backup/db_$(date +\%F).sql.gz
/backup/postgresql/
├── logical/
├── physical/
└── archive/
postgres 用户| 场景 | 推荐 |
|---|---|
| 小数据库 | pg_dump |
| 生产环境 | pg_basebackup + WAL |
| 多库 | pg_dumpall |
| 快速恢复 | 物理备份 |
如果你愿意,可以告诉我:
我可以帮你定制 完整的备份与恢复方案 ✅