在 CentOS 上备份 PostgreSQL,常用方式有三种:pg_dump(逻辑备份)、pg_dumpall、物理备份(WAL + pg_basebackup)。下面按常见场景说明。
先确认 PostgreSQL 版本与数据目录(常见示例):
psql --version
systemctl status postgresql
示例路径(CentOS 7/8):
/var/lib/pgsql/14/datapostgresql-14sudo -u postgres pg_dump dbname > /backup/dbname_$(date +%F).sql
压缩备份:
sudo -u postgres pg_dump dbname | gzip > /backup/dbname_$(date +%F).sql.gz
✅ 适合:
sudo -u postgres pg_dumpall > /backup/all_db_$(date +%F).sql
⚠ 不建议频繁使用,文件较大
pg_dump -s dbname > dbname_schema.sql
pg_dump -a dbname > dbname_data.sql
sudo -u postgres psql dbname < dbname_2026-01-21.sql
gunzip < dbname.sql.gz | sudo -u postgres psql dbname
sudo -u postgres pg_basebackup \
-D /backup/pgdata_$(date +%F) \
-Ft -z -P
参数说明:
-Ft:tar 格式-z:压缩-P:显示进度✅ 适合:
⚠ 需要开启 WAL(默认开启)
编辑定时任务:
sudo -u postgres crontab -e
每天凌晨 2 点备份:
0 2 * * * /usr/bin/pg_dump dbname | gzip > /backup/dbname_$(date +\%F).sql.gz
mkdir -p /backup/pgsql
chown postgres:postgres /backup/pgsql
permission denied
✅ 使用 postgres 用户执行
which pg_dump
或指定完整路径:
/usr/pgsql-14/bin/pg_dump
| 场景 | 方案 |
|---|---|
| 小数据量 | pg_dump |
| 大数据量 | pg_basebackup + WAL |
| 容灾 | 物理备份 |
| 升级迁移 | pg_dump |
如果你愿意,可以告诉我:
我可以帮你设计一套 完整备份 + 恢复方案。