pgAdmin在Debian上的备份策略
一 策略总览
二 备份方式与适用场景
| 方式 | 工具 | 适用场景 | 主要优点 | 关键注意点 |
|---|---|---|---|---|
| 逻辑备份 | pg_dump / pgAdmin | 单库/多库、跨版本迁移、选择性恢复 | 灵活、可单表/单Schema恢复、便于版本迁移 | 大数据量时耗时与占用高,恢复需重建索引 |
| 物理备份 | pg_basebackup | 整机恢复、快速回滚、备机搭建 | 速度快、一致性好 | 需WAL归档做PITR,跨小版本更稳妥 |
| 全局对象 | pg_dumpall | 新建/重建集群 | 一次备份全局角色/表空间 | 不含用户数据,需与数据备份配合 |
| 配置与元数据 | 文件拷贝 | 灾备与迁移 | 恢复效率高 | 注意权限与路径一致性 |
| 说明:pgAdmin的备份对话框支持对数据库/模式/表等对象选择备份范围与选项,适合标准化执行与审计。 |
三 自动化与保留策略示例
#!/bin/bash
set -Eeuo pipefail
source /data/backup_config.env # DB_HOST DB_PORT DB_USER DB_NAME BACKUP_DIR RETENTION_DAYS LOG_FILE
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}_${TIMESTAMP}.dump"
mkdir -p "$BACKUP_DIR"
pg_dump --host="$DB_HOST" --port="$DB_PORT" --username="$DB_USER" \
--format=c --blobs --verbose --file="$BACKUP_FILE" "$DB_NAME"
echo "[$(date)] Backup completed: $BACKUP_FILE (size=$(stat -c%s "$BACKUP_FILE"))" >> "$LOG_FILE"
# 清理过期
find "$BACKUP_DIR" -name "${DB_NAME}_*.dump" -mtime +"$RETENTION_DAYS" -delete
0 2 * * * /usr/local/bin/pg_backup.sh >> /var/log/pg_cron.log 2>&1
createdb -h $DB_HOST -p $DB_PORT -U $DB_USER test_restore_$(date +%s)
pg_restore -h $DB_HOST -p $DB_PORT -U $DB_USER --dbname=test_restore_$(date +%s) --verbose "$BACKUP_FILE"
psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d test_restore_$(date +%s) -c "SELECT COUNT(*) FROM important_table;"
dropdb -h $DB_HOST -p $DB_PORT -U $DB_USER test_restore_$(date +%s)
四 恢复流程与注意事项
pg_restore -h localhost -U postgres -d target_db -v /backups/mydb_20250101.dump