自动备份的基础是编写一个Shell脚本,利用PostgreSQL的pg_dump命令行工具实现数据库备份。以下是具体步骤:
/opt/pg_backup),并赋予写入权限:sudo mkdir -p /opt/pg_backup
sudo chmod 755 /opt/pg_backup
/opt/pg_backup/pg_backup.sh),内容如下:#!/bin/bash
# 配置变量
BACKUP_DIR="/opt/pg_backup"
DATE=$(date +%Y%m%d_%H%M%S) # 备份文件名包含时间戳
DB_NAME="your_database_name" # 替换为目标数据库名
DB_USER="your_postgres_user" # 替换为PostgreSQL用户名(如postgres)
BACKUP_FILE="$BACKUP_DIR/${DB_NAME}_$DATE.sql" # 备份文件路径
# 执行备份(使用pg_dump命令)
pg_dump -U $DB_USER -d $DB_NAME -f "$BACKUP_FILE"
# 可选:删除7天前的旧备份(避免占用过多空间)
find "$BACKUP_DIR" -type f -name "${DB_NAME}_*.sql" -mtime +7 -exec rm {} \;
chmod +x /opt/pg_backup/pg_backup.sh
通过CentOS的cron服务,定期执行上述备份脚本:
crontab -e
0 2 * * * /opt/pg_backup/pg_backup.sh >> /opt/pg_backup/backup.log 2>&1
说明:
0 2 * * *:表示每天凌晨2点执行;>> /opt/pg_backup/backup.log 2>&1:将脚本输出(包括错误信息)追加到日志文件,便于后续排查问题。若希望通过pgAdmin的Web界面管理定时任务,可使用pgAgent(PostgreSQL的作业调度器):
sudo yum install epel-release
sudo yum install pgagent
sudo systemctl start pgagent
sudo systemctl enable pgagent # 开机自启
pg_dump命令(如pg_dump -U postgres -d your_database_name -f /opt/pg_backup/backup.sql);psql命令),确保备份文件未损坏;gpg等工具加密(如gpg -c /opt/pg_backup/backup.sql);/opt/pg_backup/backup.log)监控备份是否成功,及时处理失败情况。以上方法均适用于CentOS系统,可根据实际需求选择Shell脚本+Cron(简单易用)或pgAgent(图形化管理)的方式实现pgAdmin自动备份。