【问题标题】:mysqldump sometimes returns empty filemysqldump 有时会返回空文件
【发布时间】:2018-05-22 13:36:20
【问题描述】:

我正在运行一个 cron 作业,它使用下面的代码调用一个 sh 脚本。我注意到有时它可以工作,但有时我得到一个 0KB 的文件。我不知道是什么导致了这个 0KB 或者可以做些什么来解决这个问题。

DATE=`date +%Y-%m-%d-%H-%m`
NAME=bkp-server-207-$DATE.sql.gz
mysqldump -u root -pXXXX@2016 xxxx | gzip > /media/backup_folder/$NAME

【问题讨论】:

  • 您应该检查 mysqldump 是否成功。如果它导致错误(例如您的密码错误,或者指定的数据库不存在),它将在 stdout 上没有输出,因此 gzip 将生成 0 字节。返回非零的退出状态 ($?) 指示错误。
  • 另一种可能性:转储被创建为 0KB 文件,因为您正在写入的文件系统在尝试备份时已满(即使您查看它时它已不再满)。无论是什么原因,在备份脚本中实施一些错误检查都很重要。
  • 脚本绝对不是问题,因为它大部分时间都成功了。我每晚运行一次。一周内成功5次,失败2次(0KB)。磁盘空间也不是问题。它只有几百 k 字节,磁盘有几 GB 的可用空间。还有其他猜测吗?你能帮我检查错误吗?

标签: mysql cron


【解决方案1】:

您需要找出命令失败的原因。 cron 作业的默认输出会丢失,除非您将其重定向到文件并稍后检查。

您可以在 cron 级别记录它(请参阅http://www.thegeekstuff.com/2012/07/crontab-log/

59 23 * * * /home/john/bin/backup.sh >> /home/john/logs/backup.log 2>&1

2>&1 将 stderr 折叠到标准输出中,因此两者都被保存。

或者您可以在脚本中记录特定命令:

echo "Creating $NAME" >>/home/john/logs/backup.log
mysqldump -u root -pXXXX@2016 xxxx 2>>/home/john/logs/backup.log | gzip > /media/backup_folder/$NAME

一旦你得到错误输出,你应该有关于失败原因的重要线索。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    • 2020-07-25
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多