MySQLDump通过shell脚本没有被执行,为什么?

时间:2013-08-22 16:29:10

标签: mysql linux bash shell centos

大家好,

我相信你在阅读这项援助请求时表现得很好。我在Linux世界中并不是很有经验,但我正努力尽快学习。所以请原谅任何明显的无知,并尽可能提供帮助。

我正在运行一个ClearOS v5.2企业服务器(基于Centos Linux发行版),我在shell脚本中使用以下命令来备份我的MySQL数据库。

mysqldump -u root -pMYPASSWORD --all-databases > /mnt/shares/flexshares/backup/MySQL/mysql-backup-`date +%Y-%m-%d-%H-%M`.sql

我每天上午1:15使用cron作业来调用此脚本。现在,我可以在cron日志中看到作业在那时被执行并且脚本被调用,但是命令没有执行(下面的日志条目)。我这样说是因为我没有看到在 / mnt / shares / flexshares / backup / MySQL 目录中创建sql文件。

Aug 21 01:15:01 server1 crond[27842]: (root) CMD (/root/my_scripts/backup-mysql.sh)
Aug 22 01:15:01 server1 crond[9031]: (root) CMD (/root/my_scripts/backup-mysql.sh)

奇怪的是,如果我从CLI运行相同的命令,它会毫无问题地执行,并且MySQL数据库被转储到目标目录( / mnt / shares / flexshares / backup / MySQL )。

我错过了什么或者我在脚本中包含了什么导致它无法运行?这是我的shell脚本(“backup-mysql.sh”):

#!/bin/bash
# FULL BACKUP OF MySQL DATABASE
mysqldump -u root -pMYPASSWORD --all-databases > /mnt/shares/flexshares/backup/MySQL/mysql-backup-`date +%Y-%m-%d-%H-%M`.sql

我非常感谢能得到的任何帮助,谢谢。

V / R

的Kismet

3 个答案:

答案 0 :(得分:3)

我认为您的命令无法从脚本中正确执行。你能试试以下吗?

         #!/bin/sh
         DUMPFILE=mysql-backup-`date +%Y-%m-%d-%H-%M`.sql
         `mysqldump -u root -pMYPASSWORD --all-databases > $DUMPFILE`

答案 1 :(得分:2)

我觉得这个剧本没有问题。

请检查您是否获得了足够的执行权限,并且您的cron条目是否正确。

尝试自己执行脚本,看看是否正在生成DB文件。

答案 2 :(得分:0)

我非常感谢你的帮助。基于 @Narayan 的评论,该问题可能出在cron工作 - 我用cron工作做了一些测试,看看我的问题出在哪里。好吧,不久我尝试通过 ./ backup-mysql.sh 直接从CLI运行脚本时拒绝访问。

这促使我检查脚本文件的权限,具有讽刺意味的是它不可执行。我相信这就是脚本没有从cron工作中运行的原因。我更改了权限并进行了测试,一切正常。

我想我在Linux世界的那一天的课程,检查允许总是!无论如何,谢谢你的帮助,我真的很感激。