在 CentOS 上备份 PostgreSQL 常用且推荐的方式是逻辑备份(pg_dump / pg_dumpall)和物理备份(文件系统 / WAL 归档)。下面按常见场景说明。
pg_dump -U postgres -h localhost dbname > dbname_$(date +%F).sql
pg_dump -U postgres dbname | gzip > dbname_$(date +%F).sql.gz
pg_dump -U postgres -Fc dbname > dbname.dump
设置环境变量:
export PGPASSWORD=yourpassword
或在 ~/.pgpass 中配置(更安全)。
pg_dumpall -U postgres > all_db_$(date +%F).sql
适合:
psql -U postgres dbname < dbname.sql
pg_restore -U postgres -d dbname dbname.dump
psql -U postgres < all_db.sql
crontab -e
添加:
0 2 * * * /usr/bin/pg_dump -U postgres dbname | gzip > /backup/db_$(date +\%F).sql.gz
确保:
/backup 存在systemctl stop postgresql
tar czf /backup/pgdata.tar.gz /var/lib/pgsql/data
systemctl start postgresql
pg_basebackuppg_basebackup -U postgres -D /backup/pgdata -Ft -z -P
✅ 定期测试恢复
✅ 备份文件异地保存
✅ 大库用 -Fc + pg_restore
✅ 生产环境用 WAL 归档做增量
如果你愿意,我可以:
直接告诉我你的版本和使用场景即可。