温馨提示×

debian如何备份postgresql

小樊
37
2026-09-26 15:52:31
栏目: 云计算

在 Debian 上备份 PostgreSQL 常见、可靠的做法是使用官方工具 pg_dump / pg_dumpall,配合系统级方式作为补充。下面按「最常用 → 进阶」说明。


一、使用 pg_dump 备份单个数据库(推荐)

1. 基本命令

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

或使用压缩:

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

说明:

  • -Fc:自定义格式(压缩、可恢复)
  • postgres:PostgreSQL 默认超级用户

2. 恢复数据库

# 普通 SQL
sudo -u postgres psql dbname < dbname_2026-01-21.sql

# 自定义格式
sudo -u postgres pg_restore -d dbname dbname_2026-01-21.dump

二、使用 pg_dumpall 备份所有数据库 + 用户角色

适合整体迁移或灾备:

sudo -u postgres pg_dumpall > all_$(date +%F).sql

恢复:

sudo -u postgres psql < all_2026-01-21.sql

✅ 包含:

  • 所有数据库
  • 用户、权限
  • 表空间

三、自动定时备份(cron)

编辑定时任务:

sudo crontab -u postgres -e

示例(每天 2 点):

0 2 * * * pg_dump -Fc mydb > /var/backups/pg/mydb_$(date +\%F).dump

建议备份目录:

/var/backups/postgresql/

四、物理备份(高级)

1. 基础备份(冷备)

sudo systemctl stop postgresql
sudo tar czf /backup/pgdata.tar.gz /var/lib/postgresql/
sudo systemctl start postgresql

2. 热备(推荐生产环境)

  • pg_basebackup
  • WAL 归档
  • 配合 Point-in-Time Recovery (PITR)

示例:

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

五、备份安全建议

  • ✅ 备份文件权限:
chmod 600 dbname.dump
  • ✅ 异地备份(rsync / scp / 对象存储)
  • ✅ 定期测试恢复
  • ✅ 记录 PostgreSQL 版本(psql --version)

六、快速选择建议

场景 推荐方式
单库备份 pg_dump
多库 + 用户 pg_dumpall
生产环境 pg_basebackup + WAL
简单灾备 pg_dump + cron

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

  • PostgreSQL 版本
  • 单机 / 主从
  • 是否 Docker

我可以给你一份可直接用的备份脚本。

0 踩