在 CentOS 上备份 PostgreSQL,常见、可靠的方式主要有以下几种(按使用频率排序)。以下示例以 PostgreSQL 10+ 为例,低版本也基本通用。
pg_dump(最常用,逻辑备份)pg_dump -U 用户名 数据库名 > backup.sql
sudo -u postgres pg_dump mydb > /tmp/mydb_$(date +%F).sql
sudo -u postgres pg_dump mydb | gzip > /tmp/mydb_$(date +%F).sql.gz
sudo -u postgres psql mydb < backup.sql
pg_dumpall(备份所有数据库)sudo -u postgres pg_dumpall > /tmp/all_db_$(date +%F).sql
sudo -u postgres psql -f /tmp/all_db_*.sql
⚠️ 恢复时会覆盖所有数据库
pg_basebackup(物理备份,生产推荐)pg_basebackup -U postgres -D /backup/pgdata -F tar -z -P
常用参数说明:
-D:备份目录-F tar:打包-z:压缩-P:显示进度vi /usr/local/bin/pg_backup.sh
#!/bin/bash
BACKUP_DIR=/data/pg_backup
DATE=$(date +%F)
mkdir -p $BACKUP_DIR
sudo -u postgres pg_dumpall | gzip > $BACKUP_DIR/pg_$DATE.sql.gz
chmod +x /usr/local/bin/pg_backup.sh
crontab -e
0 2 * * * /usr/local/bin/pg_backup.sh
每天凌晨 2 点备份
/data/pg_backup/
/var/backups/postgresql/
sudo -u postgres ...
which pg_dump
如未找到,可能是 PostgreSQL 安装在非默认路径,例如:
/usr/pgsql-14/bin/pg_dump
| 场景 | 推荐方式 |
|---|---|
| 小数据库 | pg_dump |
| 整实例备份 | pg_dumpall |
| 大数据量 / HA | pg_basebackup |
| 自动备份 | cron + pg_dumpall |
如果你愿意,我可以:
告诉我你的 PostgreSQL 版本 + 数据量 + 是否生产环境 即可。