当前位置: 首页 > Linux

手动执行mysqldump脚本成功,但是crontab执行失败

时间:2023-04-07 01:18:15 Linux

MySQL定时备份数据库/weixin_...查看备份时发现cron备份mysql脚本失败,但是手动mysql备份脚本成功。检查cron环境变量:#cat/etc/crontab...SHELL=/bin/shPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin...网上说可以查看系统的路径,然后查看mysql的路径,然后用绝对路径执行muysqldump。在线命令:查看root用户的环境变量:#echo$PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/app/mysql/bin根据网上对比,发现cron环境变量/app/mysql/bin少了解决办法:  脚本中mysqldump命令使用绝对路径。查看了root用户的环境变量,没有找到mysql相关bin的位置:echo$PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games然后使用whereis命令找到mysql相关内容的位置。找到后修改配置文件.sh如下:#!/bin/bash#保存备份次数,备份2天的数据number=2#备份保存路径backup_dir=/var/back#Datedd=`date+%Y-%m-%d-%H-%M-%S`#备份工具(重点注意)tool=/usr/bin/mysqldump#用户名username=root#密码password=****#数据库待备份database_name=article#如果文件夹不存在,则创建if[!-d$备份目录];然后mkdir-p$backup_dir;fi#简单写法mysqldump-uroot-p123456users>/root/mysqlbackup/users-$filename.sql$tool-u$username-p$password$database_name>$backup_dir/$database_name-$dd.sql#写入创建备份日志echo"create$backup_dir/$database_name-$dd.dupm">>$backup_dir/log.txt#找出要删除的备份delfile=`ls-l-crt$backup_dir/*.sql|awk'{print$9}'|head-1`#判断当前备份数是否大于$numbercount=`ls-l-crt$backup_dir/*.sql|awk'{print$9}'|wc-l`if[$count-gt$number]then#删除最早生成的备份,只保留备份数rm$delfile#写入删除文件日志echo"delete$delfile">>$backup_dir/log.txtfiand在crontab中配置定时任务