crontab定时执行mysql备份脚本出错导致数据为空

Java技术 潘老师 2年前 (2022-02-28) 1598 ℃ (0) 扫码查看

潘老师最近写了一个MySQL定时备份的shell脚本,但是发现通过定时任务执行的备份文件大小是空的,而通过手工执行脚本生成的备份文件是正常有数据的,原因在于这里定时任务执行的脚本中出现了错误。

原因分析

首选我们来定位原因,通过查看crontab的执行日志:

tail -100 /var/log/cron

这里我查看了cron日志的最后100行,发现了问题所在。具体如图:

crontab执行MySQL定时备份报错
也就是说crontab在执行我的备份脚本时发现mysqldump指令找不到,这其实是很奇怪的事,mysql环境变量也是配置了的,而且单独执行shell脚本时也没问题,但crontab执行就找不到,可能是因为这个环境变量配置只针对某个用户有效,而crontab执行的默认用户并没有该环境变量配置导致的。

解决办法

咱不管它具体什么原因,直接一招解决即可。
1)先找到mysqldump指令全路径,可以通过如下指令:

whereis mysqldump

我这里发现是在/home/mysql/mysql/bin/mysqldump

2)然后只需要将原shell脚本中的mysqldump改为全路径的/home/mysql/mysql/bin/mysqldump即可,然后再次上传就解决了这个问题。

总结

以上就是crontab定时执行mysql备份脚本出错导致数据为空的原因和解决方案,找到原因基本就找到了方案。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/java/4583.html
喜欢 (2)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】