mysqldump cron 作业在终端中运行,但不在 cron 选项卡中运行

mysqldump cron 作业在终端中运行,但不在 cron 选项卡中运行

我有这个 cron 任务,

/usr/bin/mysqldump -u username -p'password' MyDatabase > /backup/CronBackup/MyDatabaseBackup.sql &>/backup/CronBackup/cronBackupLog.log

我浏览过这个页面: 为什么我的 crontab 不工作?我该如何排除故障?

cron运行后,cronBackupLog.log 从未出现过......

grep mysqldump cron在目录中运行/var/log显示:

[root@server log]# grep mysqldump cron
May 20 00:00:01 server CROND[3104]: (username) CMD (/usr/bin/mysqldump -u username -p'password' MyDatabase > /backup/CronBackup/MyDatabaseBackup.sql)
May 21 00:00:01 server CROND[15318]: (username) CMD (/usr/bin/mysqldump -u username -p'password' MyDatabase > /backup/CronBackup/MyDatabaseBackup.sql)
May 22 00:00:01 server CROND[23517]: (username) CMD (/usr/bin/mysqldump -u username -p'password' MyDatabase > /backup/CronBackup/MyDatabaseBackup.sql)
May 22 10:30:01 server CROND[17670]: (username) CMD (/usr/bin/mysqldump -u username -p'password' --single-transaction MyDatabase > /backup/CronBackup/MyDatabaseBackup.sql)
May 22 11:00:01 server CROND[18543]: (username) CMD (/usr/bin/mysqldump -u username -p'password' MyDatabase > /backup/CronBackup/MyDatabaseBackup.sql &>/backup/CronBackup/cronBackupLog.log)

所以我知道它至少必须启动。问题是,如果我在终端中运行我尝试的命令,它会执行,几分钟后它就会完成,我有一个新的数据库备份。如果我进入 phpmyadmin、cron 作业,并将其插入每 12 小时或 30 分钟运行一次,或者无论它是什么时候(通常是 12 小时,如您在上面看到的),它就不会完成任何关键任务。

我有兴趣创建一个基于时间的文件名,但可能要等我让基本文件名工作完成后才能创建。

关于如何解决此问题的任何建议都会有所帮助,我感觉我完全错过了一些东西。谢谢。

以 root 用户身份运行与以具有所有 mysql 权限的用户身份运行有什么区别吗?正如我所说,在终端中运行它可以工作,并且它使用高权限用户来运行。我只是不确定 cron 是否需要以 root 身份运行。

跑步

CentOS 6.10
MySQL Ver 14.14 Distrib 5.7.26, for Linux (x86_64) using  EditLine wrapper

答案1

我个人总是在 bash 中创建一个备份脚本,然后在 crontab 中使用它,而不是使用 mysqldump 命令本身,这提供了更多的控制和更容易的调试,尽管使用 mysqldump 命令也应该有效。我想知道添加--single-transaction到 cron 中是否有帮助。

/usr/bin/mysqldump -u username -p'password' --single-transaction MyDatabase > /backup/CronBackup/MyDatabaseBackup.sql

还要确保 cron 用户有写入该/backup/CronBackup目录的权限。

这也是一个很好的链接https://www.linode.com/docs/databases/mysql/use-mysqldump-to-back-up-mysql-or-mariadb/

相关内容