Centos 使用 cron 作业备份 mysql

Centos 使用 cron 作业备份 mysql

根据本教程http://www.a2hosting.com/kb/getting-started-guide/backing-up-your-data/backups-on-dedicated-servers-and-vps尝试备份 mysql 数据库

我做到了:

1)在home目录中创建文件夹。/home/USERNAME/backup/

2)在文件夹中backup创建文件,命名为backup-cron-mysql.sh

3)创建内容backup-cron-mysql.sh

#!/bin/bash
db_name=dabase_name
db_user=user
db_password=password
backup_filename=$db_name-`date +%F`

mysqldump -h localhost -u $db_user -p$db_password $db_name | gzip > /home/USERNAME/dbbackup/$backup_filename.sql.gz

使 backup-cron-mysql.sh 可执行(八进制:0755)

4)创建文件夹dbbackup.路径:/home/USERNAME/dbbackup/

5)使用putty.exe登录并输入crontab –e,然后按 Enter。后者发现 cron 配置文件位于目录中/var/spool/cron/,文件名为root

6)root使用 Notepad++ 打开文件并粘贴以下代码

45 14 * * *     /bin/sh /home/USERNAME/backup/backup-cron-mysql.sh
[email protected]

结果/home/USERNAME/dbbackup/必须看到一些文件。但却看不到任何内容(空文件夹)。

请建议需要更正什么,以备份 mysql

答案1

检查以下文件以了解 cron 日志输出。/var/log/syslog

您还可以使用此命令过滤日志:

grep CRON /var/log/syslog

要配置你的 cron 作业中的日志:

 45 14 * * *     /bin/sh /home/USERNAME/backup/backup-cron-mysql.sh 2>&1 >> /var/log/myjob.log

https://askubuntu.com/questions/56683/where-is-the-cron-crontab-log

答案2

一些想法:

  1. 由于您使用的是 CentOS,因此 Cron 日志的默认位置应该是/var/log/cron。那里可能没有太多信息,但它至少应该告诉您 Cron 守护程序是否正在尝试运行您的脚本。

  2. 上述 Zeeshan 的输出重定向可能可以成功运行,但更简单的表示方法是使用“将所有输出重定向到文件”...例如

    45 14 * * * /bin/sh /home/USERNAME/backup/backup-cron-mysql.sh &> /some/file

    这里很好地概述了 Bash 重定向方法:
    http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html

  3. Crontab 文件有几个方面比较挑剔;其中之一是它们要求文件的最后一行是空白行。我建议确保文件末尾至少有一个空行(多留几个也无妨,所以你可以放几个进去以防万一。)

  4. 在尝试使用 Cron 自动执行备份脚本之前,您是否手动运行过备份脚本?如果脚本本身有问题,在其上添加 Cron 自动化只会使故障排除变得更加困难。

相关内容