CentOS脚本实现数据库自动化备份指南
准备工作
确认系统已安装mysql/mariadb-client
与cron
服务。执行以下命令验证:
which mysqldump
systemctl status crond
创建备份脚本
新建/opt/db_backup.sh
文件并添加可执行权限:
#!/bin/bash
# 定义备份参数
BACKUP_DIR="/data/backups/mysql"
DB_USER="backup_user"
DB_PASSWORD="secure_password"
DB_NAME="your_database"
DATE_STAMP=$(date +%Y%m%d_%H%M%S)
# 创建备份目录
mkdir -p ${BACKUP_DIR}/${DATE_STAMP}
# 执行数据库备份
mysqldump -u${DB_USER} -p${DB_PASSWORD} ${DB_NAME} | gzip > ${BACKUP_DIR}/${DATE_STAMP}/${DB_NAME}_${DATE_STAMP}.sql.gz
# 记录日志与错误处理
if [ $? -eq 0 ]; then
echo "[SUCCESS] ${DATE_STAMP} 备份成功" >> ${BACKUP_DIR}/backup.log
else
echo "[ERROR] ${DATE_STAMP} 备份失败" >> ${BACKUP_DIR}/backup.log
exit 1
fi
# 清理30天前备份
find ${BACKUP_DIR} -type d -mtime +30 -exec rm -rf {} ;
配置定时任务
通过crontab -e
添加每日凌晨执行计划:
0 2 * * * /bin/bash /opt/db_backup.sh >/dev/null 2>&1
安全强化建议
- 使用
chmod 600
保护包含密码的脚本文件 - 在
my.cnf
配置文件中设置[client]段存储凭证 - 建议使用
openssl
对备份文件加密 - 配置异地备份存储策略(AWS S3/OSS/NFS)
备份验证方法
- 检查
backup.log
确认执行状态 - 使用
zcat
命令预览压缩包内容 - 通过
mysql -e "SHOW DATABASES"
验证数据完整性