温馨提示×

怎样备份Debian的PostgreSQL

小樊
50
2026-09-14 14:00:27
栏目: 云计算

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


一、逻辑备份(最常用)

1. 备份单个数据库

sudo -u postgres pg_dump 数据库名 > db_$(date +%F).sql

压缩备份:

sudo -u postgres pg_dump 数据库名 | gzip > db_$(date +%F).sql.gz

2. 备份所有数据库

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

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

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

4. 恢复备份

sudo -u postgres psql 数据库名 < db_2026-01-21.sql

或恢复全部:

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

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

使用 pg_basebackup

sudo -u postgres pg_basebackup -D /var/backups/pgbackup -Ft -z -P

说明:

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

物理备份通常配合 WAL 归档 做时间点恢复(PITR)


三、自动定时备份(cron)

编辑定时任务:

sudo crontab -u postgres -e

每天凌晨 2 点备份:

0 2 * * * pg_dump 数据库名 | gzip > /var/backups/pg_$(date +\%F).sql.gz

四、注意事项

  1. 权限问题
    • 必须用 postgres 用户或有权限的用户执行
  2. 版本一致
    • 恢复时 PostgreSQL 大版本尽量一致
  3. 备份验证
    • 定期测试恢复,避免“假备份”
  4. 远程备份
    pg_dump -h 主机 -U 用户 数据库名 > db.sql
    

如果你愿意,我可以:

  • 给你一套 生产环境备份脚本
  • 讲 WAL + PITR 高级备份
  • 或针对 Docker / 云数据库 给方案

0 踩