温馨提示×

centos中postgresql如何备份

小樊
47
2026-09-27 13:59:14
栏目: 云计算

在 CentOS 中备份 PostgreSQL 常见、推荐的方式是使用官方工具 pg_dump / pg_dumpall,也可以做物理备份(如文件级或 WAL 归档)。下面按最常用 → 进阶给你说明。


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

1. 基本命令

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

示例:

pg_dump -U postgres mydb > /backup/mydb_2026-01-21.sql

2. 使用自定义格式(推荐,支持压缩和恢复灵活)

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

三、免密码备份(生产环境推荐)

方法 1:使用 .pgpass

vi ~/.pgpass

内容:

localhost:5432:mydb:postgres:密码

权限:

chmod 600 ~/.pgpass

方法 2:环境变量

export PGPASSWORD=密码
pg_dump -U postgres mydb > backup.sql

四、定时自动备份(crontab)

编辑定时任务:

crontab -e

每天凌晨 2 点备份:

0 2 * * * /usr/bin/pg_dump -U postgres mydb > /backup/mydb_$(date +\%F).sql

五、物理备份(进阶)

适合大型数据库:

1. 冷备(停库)

直接复制数据目录:

/var/lib/pgsql/data

2. 热备(推荐)

  • 开启 WAL 归档
  • 使用 pg_basebackup

示例:

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

六、备份建议

✅ 小型库:pg_dump
✅ 多库/用户权限重要:pg_dumpall
✅ 大库/高可用:pg_basebackup + WAL
✅ 备份后定期测试恢复


如果你愿意,可以告诉我:

  • PostgreSQL 版本
  • 数据量大小
  • 是否生产环境

我可以帮你写一套完整备份 + 自动清理脚本。

0 踩