通过PHP中的crontab设置定期备份MySQL数据库无法正常工作

时间:2012-10-05 04:31:33

标签: php mysql linux cron crontab

我已经选择通过我的php应用程序安排定期的mysql转储。 Crontab设置为用户' www-data'如下:

1 * * * * mysqldump --user=root --password=1 --host=localhost dbname > /var/www/myapp/../backups/db_`date '+%F-%H-%M-%S'`.sql

当我crontab -u www-data -l时,我可以看到上面的cron。

问题是这个cron没有被执行。它应该每1分钟执行一次吗? 此外,我已将/var/www的权限设置为777.仍然未创建文件。

mysqldump --user=root --password=1 --host=localhost dbname > /var/www/myapp/../backups/db_`date '+%F-%H-%M-%S'`.sql

当我在终端输入此内容时,文件创建正常。问题只在于cron作业。请帮忙。

更新

我把它改成了

* * * * * mysqldump --user=root --password=1 --host=localhost dbname > /var/www/myapp/../backups/db_`date '+%F-%H-%M-%S'`.sql

即使现在它也无法正常工作

2 个答案:

答案 0 :(得分:1)

有时crontab不具备常规shell所具有的所有环境变量。

也许它不知道在哪里找到mysqldump。你能尝试给出命令的完整路径,就像这样:

* * * * * /usr/bin/mysqldump --user=root --password=1 --host=localhost dbname > /var/www/myapp/../backups/db_`date '+%F-%H-%M-%S'`.sql

答案 1 :(得分:0)

您列出的cron应该在每小时的第1分钟执行。

我使用简单的python脚本做类似的事情:

import os
os.system('dump command for database1')
os.system('dump command for database2')

它让一切都井井有条。我在cronjob上运行脚本。

1 * * * * python /path/to/script