为mysqldump创建一个cron作业

时间:2013-04-06 18:36:25

标签: mysql ubuntu cron

我正在尝试为数据库备份创建一个cron作业。

这是我到目前为止所做的:

mysqldump.sh

 mysqldump -u root -ptest --all-databases | gzip > "/db-backup/backup/backup-$(date)" 2> dump.log

 echo "Finished mysqldump $(date)" >> dump.log

Cron工作:

 32 18 * * * /db-backup/mysqldump.sh

我遇到的问题是作业不通过cron执行,或者当我不在目录中时。

有人可以提供建议。我的路径不正确吗?

另外,我不确定以下行会将错误输出到dump.log:

 mysqldump -u root -ptest --all-databases | gzip > "/db-backup/backup/backup-$(date)" 2> dump.log

什么有效:

 mysqldump -u root -ptest --all-databases | gzip > "../db-backup/backup/backup-$(date).sql.gz" 2> ../db-backup/dump.log

 echo "Finished mysqldump $(date)" >> ../db-backup/dump.log

1 个答案:

答案 0 :(得分:6)

您可以检查一些事项,但更多信息总是更有帮助(文件的权限和位置,整个文件内容等)。

  1. 使用Shebang syntax为您的环境添加mysqldump.sh文件永远不会有害。我冒昧地猜测#!/bin/bash就足够了。
  2. 而不是mysqldump -u ....使用绝对路径/usr/bin/mysqldump(或者在系统中的任何位置)。绝对路径在任何形式的脚本中都是一个好主意,因为很难说用户是否拥有与您相同的环境。
  3. 至于在dump.log中存储错误,我不相信你的语法是正确的。我很确定你将错误从gzip传递到dump.log,而不是来自mysqldump的错误。这似乎是fairly common question到达mysqldump $PARAMS | gzip -c dump-$(date)

    的答案