温馨提示×

CentOS怎样备份PostgreSQL

小樊
37
2026-08-05 00:04:40
栏目: 云计算

CentOS 上备份 PostgreSQL,常见且推荐的方式有 逻辑备份(pg_dump/pg_dumpall)物理备份(文件系统/PG_BASEBACKUP)。下面按常用场景详细说明。


一、环境说明

  • CentOS 7 / 8 / Stream
  • PostgreSQL 10+
  • postgres 用户操作为例

二、逻辑备份(最常用 ✅)

1️⃣ 备份单个数据库(推荐)

su - postgres
pg_dump dbname > /backup/dbname_$(date +%F).sql

压缩备份:

pg_dump dbname | gzip > /backup/dbname_$(date +%F).sql.gz

2️⃣ 备份所有数据库

pg_dumpall > /backup/all_db_$(date +%F).sql

⚠️ 注意:

  • pg_dumpall 只能生成 SQL 文本
  • 不支持并行备份

3️⃣ 常用参数

参数 说明
-h 数据库主机
-p 端口
-U 用户名
-F c 自定义格式(可压缩,支持选择性恢复)
-j 并行备份
-f 输出文件

示例(压缩 + 并行):

pg_dump -U postgres -d dbname -F c -j 4 -f /backup/dbname.dmp

三、恢复备份

1️⃣ SQL 备份恢复

psql dbname < dbname_2026-01-20.sql

2️⃣ 自定义格式恢复

pg_restore -U postgres -d dbname dbname.dmp

四、物理备份(生产环境推荐)

✅ 方法一:pg_basebackup(官方推荐)

pg_basebackup -D /backup/pgdata_$(date +%F) -F t -z -P -U postgres

恢复步骤:

  1. 停止 PostgreSQL
  2. 清空数据目录
  3. 解压备份到数据目录
  4. 启动 PostgreSQL

✅ 方法二:WAL 归档(高可用 & PITR)

适用于:

  • 大型数据库
  • 需要时间点恢复

需要配置:

wal_level = replica
archive_mode = on
archive_command = 'cp %p /archive/%f'

五、定时备份(crontab)

crontab -e

每天凌晨 2 点备份:

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

六、备份目录建议

/backup/postgresql/
├── logical/
├── physical/
└── archive/

七、权限与注意事项

  • 建议使用 postgres 用户
  • 备份前确认磁盘空间
  • 测试恢复流程
  • 备份文件应异地保存

八、你适合哪种方式?

场景 推荐
小数据库 pg_dump
生产环境 pg_basebackup + WAL
多库 pg_dumpall
快速恢复 物理备份

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

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

我可以帮你定制 完整的备份与恢复方案

0