一、备份类型选择
在CentOS系统中使用pgAdmin制定PostgreSQL备份策略时,需先明确备份类型。物理备份(如pg_basebackup)直接复制数据库文件(数据文件、WAL日志等),恢复速度快,适合大型数据库或需要快速恢复的场景,但无法跨版本使用;逻辑备份(如pg_dump/pg_dumpall)以SQL语句形式导出数据,支持跨版本迁移和选择性恢复(如特定表、模式),但恢复速度较慢。建议结合两者优势:物理备份作为基础,逻辑备份用于补充特定对象的恢复需求。
二、备份周期与频率
根据数据的重要性和变动频率设定周期:
cron作业自动化执行(如0 2 * * *表示每天凌晨2点执行增量备份)。三、备份存储管理
pg_dump的-Fc(自定义格式)结合-z(压缩)选项,或pg_basebackup的-z选项对备份文件加密和压缩,减少存储空间占用;find命令自动删除,如find /path/to/backup -name "*.backup" -mtime +30 -exec rm -f {} \;)。四、自动化与监控
pg_dump/pg_basebackup)、参数配置(用户名、数据库名、路径)和错误检查(如验证备份文件是否存在),示例脚本:#!/bin/bash
DB_USER="postgres"
DB_NAME="mydatabase"
BACKUP_DIR="/var/lib/pgsql/backup"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/${DB_NAME}_${DATE}.backup"
# 执行pg_dump逻辑备份
pg_dump -U $DB_USER -d $DB_NAME -F c -f $BACKUP_FILE
# 检查备份是否成功
if [ -f "$BACKUP_FILE" ]; then
    echo "$(date): Backup successful: $BACKUP_FILE" >> /var/log/pg_backup.log
else
    echo "$(date): Backup failed" >> /var/log/pg_backup.log
    exit 1
fi
# 清理30天前的备份
find $BACKUP_DIR -name "*.backup" -mtime +30 -exec rm -f {} \;
cron作业调度脚本(如每天凌晨1点执行):0 1 * * * /path/to/backup_script.sh >/dev/null 2>&1
cron日志(/var/log/cron)或第三方监控工具(如Zabbix)监控备份作业状态,设置告警(如邮件、短信)通知管理员备份失败。五、备份验证与测试
pg_restore的-i(校验)选项验证逻辑备份文件的完整性(如pg_restore -U postgres -d mydatabase -F c -i /path/to/backup_file.backup);pg_restore命令),验证备份文件的可恢复性,确保恢复流程正确(如恢复到特定数据库、指定表)。六、权限与安全管理
backup_user),授予最小必要权限(如SELECT、CONNECT),避免使用超级用户(postgres)执行备份;700(仅所有者可读写执行),限制未授权访问(如chmod 700 /var/lib/pgsql/backup);