温馨提示×

PostgreSQL如何备份CentOS

小樊
38
2026-08-05 00:43:31
栏目: 云计算

CentOS 上备份 PostgreSQL 常见有几种方式,下面按常用程度给你说明,并附上示例命令


一、使用 pg_dump(最常用,逻辑备份)

适用于 单库备份,支持跨版本恢复。

1️⃣ 安装 PostgreSQL(如已安装可跳过)

yum install -y postgresql

2️⃣ 备份单个数据库

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

示例:

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

✅ 推荐加上 -Fc(自定义格式,可压缩、可恢复):

pg_dump -U postgres -Fc testdb > /backup/testdb_2026-01-21.dump

3️⃣ 恢复数据库

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

或(自定义格式):

pg_restore -U postgres -d testdb /backup/testdb_2026-01-21.dump

二、备份所有数据库(pg_dumpall)

适合 整实例备份

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

恢复:

psql -U postgres < /backup/all_databases_2026-01-21.sql

⚠️ 注意:不支持 -Fc 格式


三、物理备份(WAL + 数据目录,生产环境推荐)

1️⃣ 使用 pg_basebackup

适合 大数据量 / 高可用 / 主从

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

参数说明:

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

恢复时需要:

  • 数据目录
  • WAL 日志

四、使用系统定时任务(crontab 自动备份)

1️⃣ 编写备份脚本

vi /backup/pg_backup.sh

内容示例:

#!/bin/bash
export PGPASSWORD="数据库密码"
pg_dump -U postgres testdb | gzip > /backup/testdb_$(date +%F).sql.gz

2️⃣ 赋予执行权限

chmod +x /backup/pg_backup.sh

3️⃣ 添加定时任务

crontab -e

每天凌晨 2 点备份:

0 2 * * * /backup/pg_backup.sh

五、备份注意事项 ✅

  • 备份用户权限
    至少要有 CONNECTSELECT 权限
  • 防止密码暴露
    • 使用 ~/.pgpass
  • 大库建议
    • 使用 pg_basebackup
  • 验证备份是否可用
    • 定期做恢复测试

六、总结对比

方式 适用场景 是否支持增量
pg_dump 单库、小库
pg_dumpall 全实例
pg_basebackup 生产环境 ✅(配合 WAL)

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

  • PostgreSQL 版本
  • 数据库大小
  • 是否主从架构

我可以帮你 定制最合适的备份方案

0