温馨提示×

centos如何备份postgresql数据

小樊
44
2026-09-12 07:23:26
栏目: 云计算

在 CentOS 上备份 PostgreSQL 数据,常见、推荐的方式是使用 pg_dump / pg_dumpall(逻辑备份)或 文件系统 / 物理备份(如 pg_basebackup)。下面按使用场景说明。


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

1. 基本命令

pg_dump -U 用户名 数据库名 > /backup/dbname_$(date +%F).sql

示例:

pg_dump -U postgres testdb > /backup/testdb_2026-01-15.sql

2. 使用压缩备份(推荐)

pg_dump -U postgres testdb | gzip > /backup/testdb_$(date +%F).sql.gz

3. 自定义格式(支持并行和恢复更灵活)

pg_dump -U postgres -Fc testdb > /backup/testdb.dump

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

适合备份 整个实例(含角色、表空间)

pg_dumpall -U postgres > /backup/all_$(date +%F).sql

恢复时:

psql -U postgres -f /backup/all_2026-01-15.sql

三、免密码备份(重要)

方法 1:使用 .pgpass

vi ~/.pgpass

内容:

hostname:port:database:user:password

示例:

localhost:5432:testdb:postgres:123456

权限:

chmod 600 ~/.pgpass

四、使用 pg_basebackup(物理备份,适合大库)

适合 全量备份 + 后续 WAL 归档

pg_basebackup -U postgres -D /backup/pgdata -Ft -z -P

参数说明:

  • -D 备份目录
  • -Ft tar 格式
  • -z 压缩
  • -P 显示进度

⚠️ 需要 postgresql.conf 中开启:

wal_level = replica

五、结合 crontab 定时备份(推荐)

编辑定时任务:

crontab -e

每日凌晨 2 点备份:

0 2 * * * pg_dump -U postgres testdb | gzip > /backup/testdb_$(date +\%F).sql.gz

六、恢复示例

恢复 SQL 备份

psql -U postgres testdb < /backup/testdb_2026-01-15.sql

恢复 dump 格式

pg_restore -U postgres -d testdb /backup/testdb.dump

七、注意事项

  • 确保 /backup 有足够空间
  • 生产环境建议 逻辑备份 + 物理备份 + WAL 归档
  • 定期测试恢复
  • 权限问题注意 SELinux

如果你能告诉我:

  • PostgreSQL 版本
  • 数据量大小
  • 是否主从 / 高可用

我可以给你更合适的备份方案。

0