创建备份脚本
sudo vim /usr/local/bin/pgsql_backup/xxx.sh
备份脚本
# 配置参数
BACKUP_DIR="/var/backups/pgsql/ms_suggestion_box"
DB_NAME="ms_suggestion_box_dev" # 替换为实际数据库名
DATE=$(date +'%Y-%m-%d_%H-%M')
SQL_BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}-${DATE}.sql.gz"
DUMP_BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}-${DATE}.dump"
创建备份目录(如果不存在)
mkdir -p ${BACKUP_DIR}
chown postgres:postgres ${BACKUP_DIR}
执行 SQL 格式备份
sudo -u postgres pg_dump ${DB_NAME} | gzip > ${SQL_BACKUP_FILE}
执行 DUMP 格式备份
sudo -u postgres pg_dump -Fc -f ${DUMP_BACKUP_FILE} ${DB_NAME}
保留最近 10 个 SQL 和 DUMP 备份
find ${BACKUP_DIR} -type f -name "*.sql.gz" | sort -r | sed -n '11,$p' | xargs -r rm -f
find ${BACKUP_DIR} -type f -name "*.dump" | sort -r | sed -n '11,$p' | xargs -r rm -f
输出备份完成信息
echo "备份完成:"
echo " SQL 格式: ${SQL_BACKUP_FILE}"
echo " DUMP 格式: ${DUMP_BACKUP_FILE}"
授予执行权限
sudo chmod +x /usr/local/bin/pgsql_backup.sh
测试执行备份
sudo /usr/local/bin/pgsql_backup.sh
配置定时任务
sudo crontab -e
添加定时任务
0 2 * * * /usr/local/bin/pgsql_backup.sh
定时任务日志
sudo grep CRON /var/log/syslog