在Cron作业中转储和压缩MySQL

在Cron作业中转储和压缩MySQL,mysql,cron,gzip,Mysql,Cron,Gzip,我想要的是在一定的时间间隔转储MySQL数据库,然后在完成后将该文件夹同步到我的S3存储桶中。我的每一个剧本都遇到了同样的问题 如果我直接运行脚本,它工作得很好。DB转储,并被gzip压缩,没有任何问题。如果我从Cron作业运行脚本,脚本似乎是分块执行的。它一次转储和压缩75-100兆之间的数据,覆盖刚刚完成的数据。因此,我没有得到一个完整的541Mb gzip文件,而是得到了一个只有75Mb的文件,而不是完整的文件 它几乎像是在转储完成之前开始压缩 这是我正在使用的当前脚本。没什么大不了的 #

我想要的是在一定的时间间隔转储MySQL数据库,然后在完成后将该文件夹同步到我的S3存储桶中。我的每一个剧本都遇到了同样的问题

如果我直接运行脚本,它工作得很好。DB转储,并被gzip压缩,没有任何问题。如果我从Cron作业运行脚本,脚本似乎是分块执行的。它一次转储和压缩75-100兆之间的数据,覆盖刚刚完成的数据。因此,我没有得到一个完整的541Mb gzip文件,而是得到了一个只有75Mb的文件,而不是完整的文件

它几乎像是在转储完成之前开始压缩

这是我正在使用的当前脚本。没什么大不了的

#!/bin/bash

NOW=$(date +%Y-%m-%d--%H)

echo Dumping database at production-$NOW.sql
mysqldump --user=USERNAME --password=PASSWORD --routines DBNAME > /var/mysqlBackups/production-$NOW.sql

echo Zipping production-$NOW.sql
gzip /var/mysqlBackups/production-$NOW.sql

printf "Completed backup and gzip\n\n"
我曾尝试将我的env变量添加到脚本中,但没有任何效果,而且这不是一个可以手动运行的脚本


有什么想法,或者从哪里开始?我快疯了。

crontab条目看起来像什么?cron作业多久运行一次?脚本运行需要多长时间?***/3***/bin/sh/var/scripts/backupDB.sh>>/var/log/cron.log现在它是一个开发服务器,没有其他运行,因此运行不到10分钟。它会转储到一个3.4 gb的sql文件,然后压缩到一个541 mb的gz文件。您是否设置了
MAILTO
环境变量(例如,crontab文件顶部的
MAILTO=username
),以便向您发送每个cronjob的stdout和stderr?crontab条目看起来像什么?cron job运行的频率如何?脚本运行需要多长时间?***/3***/bin/sh/var/scripts/backupDB.sh>>/var/log/cron.log现在它是一个开发服务器,没有其他运行,因此运行不到10分钟。它会转储到一个3.4 gb的sql文件,然后压缩到一个541 mb的gz文件。您是否设置了
MAILTO
环境变量(例如,crontab文件顶部的
MAILTO=username
),以便向您发送每个cronjob的stdout和stderr?