温馨提示×

PostgreSQL Debian如何备份

小樊
59
2026-08-02 05:38:04
栏目: 云计算

在 Debian 系统上备份 PostgreSQL 常见且推荐的方式主要有以下几种,按使用场景从高到低说明。


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

适合:

  • 单库备份
  • 小到中型数据库
  • 需要跨版本迁移

1️⃣ 备份单个数据库

sudo -u postgres pg_dump dbname > dbname_$(date +%F).sql

示例:

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

2️⃣ 压缩备份(推荐)

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

3️⃣ 恢复数据库

sudo -u postgres psql mydb < /backup/mydb_2026-01-21.sql

或解压后恢复:

gunzip < /backup/mydb_2026-01-21.sql.gz | sudo -u postgres psql mydb

二、使用 pg_dumpall(全实例备份)

适合:

  • 备份所有数据库
  • 保留用户、角色、权限
sudo -u postgres pg_dumpall > /backup/all_databases_$(date +%F).sql

恢复:

sudo -u postgres psql -f /backup/all_databases_2026-01-21.sql

⚠️ 注意:pg_dumpall 不支持并行,速度较慢。


三、物理备份(适用于生产环境)

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

适合:

  • 大型数据库
  • 热备份
  • 主从复制
sudo -u postgres pg_basebackup \
  -D /backup/pg_basebackup_$(date +%F) \
  -Ft -z -P

参数说明:

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

恢复时需要:

  • PostgreSQL 版本一致
  • 替换 data 目录
  • 配置 recovery.conf / postgresql.conf

✅ 方法 2:WAL 归档 + 连续备份(企业级)

流程:

  1. 开启 WAL 归档
  2. 使用 pg_basebackup
  3. 持续归档 WAL 文件

postgresql.conf 示例:

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

适合:

  • 时间点恢复(PITR)
  • 金融、核心业务系统

四、Debian 下的自动化备份(cron)

示例:每天凌晨 2 点备份

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

五、备份文件安全建议

✅ 存储位置:

  • 本地 + 远程(rsync / scp / 对象存储)

✅ 权限控制:

chmod 600 /backup/*.sql

✅ 定期清理旧备份:

find /backup -name "*.sql.gz" -mtime +30 -delete

六、常见错误排查

❌ pg_dump: error: connection to server failed

sudo -u postgres pg_dump ...

❌ 版本不一致

pg_dump --version
psql --version

七、推荐方案总结

场景 推荐方式
小数据库 pg_dump
多库 + 用户 pg_dumpall
生产环境 pg_basebackup + WAL
自动备份 cron + pg_dump

如果你愿意,我可以:

  • ✅ 给你一个 生产级备份脚本
  • ✅ 帮你设计 主从 + 备份架构
  • ✅ 根据你 PostgreSQL 版本(如 14 / 15 / 16)给出精确配置

只要告诉我你的 Debian 版本 + PostgreSQL 版本 + 数据规模 即可。

0 踩