自定义MySQL备份计划脚本
1.备份脚本
#!/bin/bash
##定义MySQL用户名和密码
MYSQL_USER="root" MYSQL_PASSWD="123456"
#获取当前时间字符串
now=$(date +"%Y_%m_%d_%H_%M_%S")
# 定义备份文件名
BACK_NAME="backup_$now.sql"
GZIP_BACK_NAME="backup_$now.tar.gz"
# 定义备份文件的存储路径
BACK_DIR="backup/"
# 执行mysqldump命令去执行备份操作
mysqldump --defaults-extra-file=config.cnf \
--set-gtid-purged=OFF \
--opt \
-B \
--default-character-set=utf8 \
--flush-logs \
--all-databases >$BACK_DIR$BACK_NAME
echo "开始压缩文件"
tar -czf $BACK_DIR$GZIP_BACK_NAME --no-xattrs $BACK_DIR$BACK_NAME
echo "压缩完成"
echo "删除sql文件"
rm -rf $BACK_DIR$BACK_NAME
backcount=$(find $BACK_DIR -mtime +3 -name backup_*.tar.gz | wc -l)
echo "当前备份数量:"$backcount
# 如果3天前的文件数量大于3,则删除
if [ ${backcount} -gt 3 ]; then
find $BACK_DIR -mtime +3 -name backup_*.tar.gz | xargs rm -rf
fi
# 清理3天前的备份文件
# find $BACK_DIR -type f -mtime +3 | xargs rm -rf
echo $now"数据库备份完成"
2. 启动脚本
dump.sh
#!/bin/bash
ps -ef | grep mysqldump.sh | grep -v "grep"
if [[ $? -ne 0 ]]; then
echo "start process....."
nohup sh /www/wwwroot/mysql/mysqldump.sh >>/www/wwwroot/mysql/dump.log 2>&1 &
else
echo "running ..."
fi
exit 0
计划任务配置
#每日凌晨3点进行一次数据全量备份
0 3 * * * sh /www/wwwroot/mysql/dump.sh
本作品采用《CC 协议》,转载必须注明作者和本文链接