温馨提示×

PostgreSQL如何备份CentOS数据

小樊
46
2026-08-20 03:16:25
栏目: 云计算

在 CentOS 上备份 PostgreSQL 数据库,常见做法有 逻辑备份物理备份 两种。下面按最常用、最安全的方式给你详细说明,并附示例。


一、逻辑备份(推荐新手 / 日常备份)

使用 pg_dumppg_dumpall,只备份数据库内容(SQL 级别)。

1️⃣ 备份单个数据库

pg_dump -U 用户名 数据库名 > backup.sql

示例:

su - postgres
pg_dump -U postgres mydb > /backup/mydb_$(date +%F).sql

✅ 优点

  • 简单、跨版本兼容
  • 适合中小型数据库

❌ 缺点

  • 数据量大时恢复慢

2️⃣ 备份所有数据库

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

3️⃣ 压缩备份(节省空间)

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

4️⃣ 恢复备份

psql -U postgres -d mydb < backup.sql

或解压后恢复:

gunzip < backup.sql.gz | psql -U postgres -d mydb

二、物理备份(适合生产环境)

直接备份数据库文件,速度快,适合大数据量。

方式一:冷备份(停机备份)

systemctl stop postgresql
cp -a /var/lib/pgsql/data /backup/pgdata_$(date +%F)
systemctl start postgresql

⚠️ 需要停机,不推荐线上使用


方式二:热备份(推荐 ✅)

使用 pg_basebackup

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

参数说明:

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

✅ 不需要停机
✅ 可用于主从复制


三、WAL 归档(企业级)

用于 时间点恢复(PITR)

1️⃣ 修改 postgresql.conf

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

2️⃣ 重启 PostgreSQL

systemctl restart postgresql

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

crontab -e

每天凌晨 2 点备份:

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

五、备份建议(重要)

✅ 定期测试恢复
✅ 备份文件不要放在数据库同一磁盘
✅ 生产环境推荐:

pg_basebackup + WAL 归档


六、常见路径(CentOS)

项目 路径
数据目录 /var/lib/pgsql/data
配置文件 /var/lib/pgsql/data/postgresql.conf
日志 /var/lib/pgsql/data/log/

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

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

我可以帮你定制一套完整备份方案(含脚本)。

0