MySQL备份不适用于cronjob

时间:2017-09-21 04:54:11

标签: mysql cron

我每天都尝试备份我的数据库。当我运行我的脚本时,它完美无缺。但是当我把它放到crontab中时,gz-archive是空的。它创建了一个空的sql文件,然后将其压缩为gz文件。

有人可以解释直接运行和运行cronjob之间的区别吗?

#!/usr/local/bin/bash

DATE=`date '+%Y-%m-%d_%H%M%S'`

mysqldump -u myUser -ptest*123 private_db | gzip > /mnt/backup#/MySQL/mysqlBackup_$DATE.sql.gz

if [ -f /mnt/backup#/MySQL/mysqlBackup_$DATE.sql.gz ]; then
        logger "Backup: MySQL private_db ...success"
else
        logger "Backup: MySQL private_db ...FAILED"
fi

1 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案。这是一个问题取决于我的操作系统。我使用FreeBSD,而cronjob以root身份运行。但是cronjob root与用户root有不同的系统环境。所以我在我的剧本中添加了一些环境。

#!/usr/local/bin/bash

DATE=`date '+%Y-%m-%d_%H%M%S'`

SHELL=/bin/csh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin

/usr/local/bin/mysqldump -u myUser -ptest*123 private_db | gzip > /mnt/backup#/MySQL/mysqlBackup_$DATE.sql.gz

if [ 1000 -gt $(wc -c </mnt/backup#/MySQL/mysqlBackup_$DATE.sql.gz) ];then
        logger "Backup: MySQL private_db ...FAILED (filesize to small )"
else
        if [ -f /mnt/backup#/MySQL/mysqlBackup_$DATE.sql.gz ]; then
                logger "Backup: MySQL private_db ...success"
        else
                logger "Backup: MySQL private_db ...FAILED"
        fi
fi