为mysqldump创建一个cron作业

Bri*_*ian 5 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
Run Code Online (Sandbox Code Playgroud)

Cron工作:

 32 18 * * * /db-backup/mysqldump.sh
Run Code Online (Sandbox Code Playgroud)

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

有人可以建议.我的路径不正确吗?

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

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

什么有效:

 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
Run Code Online (Sandbox Code Playgroud)

小智 6

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

  1. mysqldump.sh使用适用于您的环境的Shebang语法为文件添加前言绝不会有任何损害.我敢冒险猜测#!/bin/bash就足够了.
  2. 而不是mysqldump -u ....使用绝对路径/usr/bin/mysqldump(或在您的系统上的任何地方).绝对路径总是以任何形式脚本的一个好主意,因为这是很难说,如果用户为你做了相同的环境.

至于在dump.log中存储错误,我不相信你的语法是正确的.我很确定你将错误gzip传递给dump.log,而不是错误mysqldump.这似乎是一个相当普遍的问题,它得出了答案mysqldump $PARAMS | gzip -c dump-$(date)