温馨提示×

debian postgresql怎么备份

小樊
34
2026-10-08 08:33:33
栏目: 云计算

在 Debian 上备份 PostgreSQL,常见做法有逻辑备份(pg_dump / pg_dumpall)和物理备份(文件级 / WAL 归档)。下面按使用频率从高到低说明。


一、逻辑备份(最常用)

1. 备份单个数据库

pg_dump -U postgres 数据库名 > db_backup.sql

如果 PostgreSQL 在本地且用 peer 认证:

sudo -u postgres pg_dump 数据库名 > db_backup.sql

压缩备份:

pg_dump -U postgres 数据库名 | gzip > db_backup.sql.gz

2. 备份所有数据库

pg_dumpall -U postgres > all_db_backup.sql

3. 只备份结构(不含数据)

pg_dump -U postgres -s 数据库名 > schema.sql

4. 恢复备份

psql -U postgres 数据库名 < db_backup.sql

或解压后恢复:

gunzip < db_backup.sql.gz | psql -U postgres 数据库名

二、定时自动备份(推荐)

使用 cron(Debian 自带)

编辑定时任务:

sudo crontab -e

每天凌晨 2 点备份:

0 2 * * * pg_dump -U postgres 数据库名 | gzip > /backup/db_$(date +\%F).sql.gz

确保 /backup 目录存在且 postgres 用户有写权限。


三、物理备份(适合大型数据库)

1. 停库冷备(最简单但需停机)

systemctl stop postgresql
cp -r /var/lib/postgresql/15/main /backup/pgdata
systemctl start postgresql

2. 热备(不中断服务,推荐生产环境)

使用 pg_basebackup:

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

结合 WAL 归档可实现时间点恢复(PITR),配置较复杂,适合 DBA 场景。


四、Debian 常见路径说明

  • 数据目录:/var/lib/postgresql/<版本>/main
  • 配置文件:/etc/postgresql/<版本>/main/
  • 服务管理:
systemctl status postgresql

五、备份建议总结

✅ 小中型库:pg_dump + cron
✅ 多库环境:pg_dumpall
✅ 大型/关键业务:物理备份 + WAL 归档
✅ 备份文件一定要异地保存

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

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

我可以帮你写一套完整备份 + 自动清理脚本。

0 踩