在 CentOS 中备份 PostgreSQL 常见、推荐的方式是使用官方工具 pg_dump / pg_dumpall,也可以做物理备份(如文件级或 WAL 归档)。下面按最常用 → 进阶给你说明。
pg_dump -U 用户名 数据库名 > /backup/dbname_$(date +%F).sql
示例:
pg_dump -U postgres mydb > /backup/mydb_2026-01-21.sql
pg_dump -U postgres -Fc mydb > /backup/mydb_$(date +%F).dump
恢复时:
pg_restore -U postgres -d mydb /backup/mydb_2026-01-21.dump
pg_dumpall -U postgres > /backup/all_db_$(date +%F).sql
恢复:
psql -U postgres -f /backup/all_db_2026-01-21.sql
vi ~/.pgpass
内容:
localhost:5432:mydb:postgres:密码
权限:
chmod 600 ~/.pgpass
export PGPASSWORD=密码
pg_dump -U postgres mydb > backup.sql
编辑定时任务:
crontab -e
每天凌晨 2 点备份:
0 2 * * * /usr/bin/pg_dump -U postgres mydb > /backup/mydb_$(date +\%F).sql
适合大型数据库:
直接复制数据目录:
/var/lib/pgsql/data
pg_basebackup示例:
pg_basebackup -U postgres -D /backup/pgdata -Ft -z -P
✅ 小型库:pg_dump
✅ 多库/用户权限重要:pg_dumpall
✅ 大库/高可用:pg_basebackup + WAL
✅ 备份后定期测试恢复
如果你愿意,可以告诉我:
我可以帮你写一套完整备份 + 自动清理脚本。