在 Debian 上备份 PostgreSQL,常见做法有 逻辑备份(pg_dump / pg_dumpall) 和 物理备份(文件系统 / pg_basebackup)。下面按使用频率从高到低说明。
sudo -u postgres pg_dump 数据库名 > db_$(date +%F).sql
压缩备份:
sudo -u postgres pg_dump 数据库名 | gzip > db_$(date +%F).sql.gz
sudo -u postgres pg_dumpall > all_$(date +%F).sql
sudo -u postgres pg_dump -s 数据库名 > schema.sql
sudo -u postgres psql 数据库名 < db_2026-01-21.sql
或恢复全部:
sudo -u postgres psql < all_2026-01-21.sql
sudo -u postgres pg_basebackup -D /var/backups/pgbackup -Ft -z -P
说明:
-D:备份目录-Ft:tar 格式-z:压缩-P:显示进度物理备份通常配合 WAL 归档 做时间点恢复(PITR)
编辑定时任务:
sudo crontab -u postgres -e
每天凌晨 2 点备份:
0 2 * * * pg_dump 数据库名 | gzip > /var/backups/pg_$(date +\%F).sql.gz
postgres 用户或有权限的用户执行pg_dump -h 主机 -U 用户 数据库名 > db.sql
如果你愿意,我可以: