温馨提示×

centos如何备份postgresql

小樊
48
2026-09-06 12:15:49
栏目: 云计算

在 CentOS 上备份 PostgreSQL 常用且推荐的方式是逻辑备份(pg_dump / pg_dumpall)物理备份(文件系统 / WAL 归档)。下面按常见场景说明。


一、使用 pg_dump 备份单个数据库(最常用)

1. 基本命令

pg_dump -U postgres -h localhost dbname > dbname_$(date +%F).sql

2. 压缩备份

pg_dump -U postgres dbname | gzip > dbname_$(date +%F).sql.gz

3. 自定义格式(推荐,支持并行和恢复选项)

pg_dump -U postgres -Fc dbname > dbname.dump

4. 使用密码(避免交互)

设置环境变量:

export PGPASSWORD=yourpassword

或在 ~/.pgpass 中配置(更安全)。


二、使用 pg_dumpall 备份所有数据库和角色

pg_dumpall -U postgres > all_db_$(date +%F).sql

适合:

  • 备份全部库
  • 保留用户、权限、表空间

三、恢复备份

恢复 SQL 备份

psql -U postgres dbname < dbname.sql

恢复 dump 格式

pg_restore -U postgres -d dbname dbname.dump

恢复 pg_dumpall

psql -U postgres < all_db.sql

四、CentOS 定时自动备份(crontab)

示例:每天凌晨 2 点备份

crontab -e

添加:

0 2 * * * /usr/bin/pg_dump -U postgres dbname | gzip > /backup/db_$(date +\%F).sql.gz

确保:

  • /backup 存在
  • postgres 用户有写权限

五、物理备份(适合大型库)

1. 冷备份(停库)

systemctl stop postgresql
tar czf /backup/pgdata.tar.gz /var/lib/pgsql/data
systemctl start postgresql

2. 热备份(推荐)

  • 开启 WAL 归档
  • 使用 pg_basebackup
pg_basebackup -U postgres -D /backup/pgdata -Ft -z -P

六、备份建议

✅ 定期测试恢复
✅ 备份文件异地保存
✅ 大库用 -Fc + pg_restore
✅ 生产环境用 WAL 归档做增量

如果你愿意,我可以:

  • 给你一个完整备份脚本
  • PostgreSQL 版本(如 12/13/14/15) 细化
  • 教你 主从 + 定时备份方案

直接告诉我你的版本和使用场景即可。

0