为 MySQLdump 创建 crontab

为 MySQLdump 创建 crontab

我正在尝试创建一个 crontab 来备份 MySQL 中的数据库,该mysqldump命令作为单个命令或运行 bash 脚本运行良好,没有任何错误,但是当我将 bash 脚本添加到 crontab 文件时,它没有执行,下面是我的代码:

#!/bin/bash

mysqldump --column-statistics=0 -h xx.xx.xx.xxx -u wissam -p'xxxxxx' 
--all-databases | gzip > ~/Desktop/DBs/Backup"$(date +"%Y_%m_%d_%I_%M_%p")file.sql.gz" 

crontab 命令:

09 9    * * *   root    sh /home/ahmad/Desktop/DBs/mysqlcron.sh 2>&1>> /home/ahmad/Desktop/DBs/MySQLdump.log

已添加到/etc/crontab,之后我尝试重新启动服务,但对我不起作用,我也尝试了这些解决方案123但仍然没有工作。

请问有什么帮助吗?

答案1

Crontab 需要绝对路径,因此除了 Rinzwind 的建议外,还可以使用

09 9    * * *   root    /bin/bash /home/ahmad/Desktop/DBs/mysqlcron.sh 2>&1>> /home/ahmad/Desktop/DBs/MySQLdump.log

或者

09 9    * * *   root    /home/ahmad/Desktop/DBs/mysqlcron.sh 2>&1>> /home/ahmad/Desktop/DBs/MySQLdump.log

答案2

请使用绝对路径。

mysqldump

~/

需要一个目录。“~”永远不会扩展到您的用户。

除此之外:

-h xx.xx.xx.xxx -u wissam -p'xxxxxx' 

非常糟糕,因为它会将主机和密码回显到进程列表中。使用...

--defaults-extra-file=.mysql

并至少将密码放入该文件中。

相关内容