1、任务执行的备份sql文件大小为0k,手动执行正常。

思路:大概率是任务执行时没有执行mysqldump这一行,问题就在这。
查看shell脚本文件内容。

自己检查为发现问题,经过请教同事,问题出在mysqldump未被识别,所以语句没执行,需要加上mysqldump路径。
修改过程:
原脚本:

查看mysqldump路径

修改路径

重新修改定时,任务运行成功。
2、MySQL5.7MySQL8.0定时备份脚本--亲测好用
脚本内容
#! /bin/bash
#保存备份个数,备份7天数据
number=7
#备份保存路径 看具体情况配置此目录
backup_dir=/data/mysqlbackup
#日期
dd=`date +%Y-%m-%d-%H-%M-%S`
#备份工具-- 先用which mysqldump 查看备份工具位置再配置tool
#tool=mysqldump
#用户名
username=root
#密码
#password=123456
#将要备份的数据库
#database_name=edoctor
#如果文件夹不存在则创建
if [ ! -d $backup_dir ];
then
mkdir -p $backup_dir;
fi
#简单写法 mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql
#$tool -u $username -p$password -A > $backup_dir/$dd.sql
#压缩备份
#$tool -u $username -p$password -A -B -R --triggers --master-data=2 --single-transaction |gzip > /data/mysqlbackup/$dd.sql.gz
#标准写法
$tool -u $username -p$password -A -B -R --triggers --master-data=2 --single-transaction > /data/mysqlbackup/$dd.sql
#写创建备份日志
echo "create $backup_dir/$dd.dupm" >> $backup_dir/log.txt
#找出需要删除的备份
delfile=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | head -1`
#判断现在的备份数量是否大于$number
count=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | wc -l`
if [ $count -gt $number ]
then
#删除最早生成的备份,只保留number数量的备份
rm $delfile
#写删除文件日志
echo "delete $delfile" >> $backup_dir/log.txt
fi
crontab -e中的内容
30 2 * * * /data/mysqlbackup.sh




