使用 mysqldump 的 .sh 脚本备份 30 个数据库。27 个数据库备份成功,并且每天的大小相同,但 3 个数据库没有成功,并且似乎在转储过程中随机停止,没有任何错误。
以下是脚本
#!/bin/bash
appname=myapp
dbname=mydb
dbuser=myuser
dbpass=mypass
datestamp=`date +%d%m%y`
rm -f /var/backups/* > /dev/null 2>&1
mysqldump -u$dbuser -p$dbpass $dbname > /var/backups/$dbname-$datestamp.sql && gzip /var/backups/$dbname-$datestamp.sql
tar -zcf /var/backups/data-$datestamp.tar.gz /var/www/data > /dev/null 2>&1
tar -zcf /var/myapp-backups/myapp-$datestamp.tar.gz /var/www/myapp > /dev/null 2>&1
我已经使用 Mysqlcheck 检查了失败的数据库,一切似乎都很好,所以现在我不确定在哪里查找错误
var/log/mysql 没有错误,今天 06:32 写入了一个 error.log,这大约是 cron 运行的正确时间,但它是空的
有任何想法吗?谢谢
答案1
要在转储时获取错误日志,请添加 -v 和 2> log.txt:
mysqldump -v -u -p 数据库名称 > databasesqlfile.sql 2> log.txt
您还可以在 mysql 配置中启用详细日志记录,并在转储时遇到错误时检查这些日志。启动 mysql 并运行:
显示类似“%log%”的变量;
另外,在配置文件中,启用以下日志:
[mysqld]
日志箱
日志
日志错误
记录慢速查询
并重新启动 mysql 以应用更改。
答案2
您可能需要捕获 mysqldump 的 stderr
mysqldump ... 2>/var/log/mysqldump.err