您的位置:首页 > 数据库 > MySQL

如何判断mysqldump的成功与失败

2013-01-19 21:56 295 查看
mysql数据库的备份

用mysql的mysqldump --flush-logs --master-data=2 --single-transaction -h $host --port $port -R --quick -u$user -p$pwd --database test| gzip -9 > $abc.tar.gz就能实现数据备份

遇到一个问题,如何能判断mysql自己的mysqldump成功还是失败了呢,最后发现mysqldump有一个属性--log-error

这个属性可以把mysqldump的出现的warning和error日志写到指定的文件中,判断文件有没有warning信息和error信息就行

但是用临时文件似乎有点多余,能不能直接在shell里面获取musqldump的值呢

然后看到http://www.cnblogs.com/kevintian/articles/1139118.html 这篇帖子 见子目录的mysql日志

里面有一节

3. 错误日志

该日志文件包含了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。可以用--log-error[=file_name]选项来指定mysqld保存错误日志文件的位置。

当使用mysqld_safe启动服务器时,该脚本自动在启动项上加上--log-error但没有加上file_name,或者直接在libexec目录下使用./mysqld --user=mysql --log-error启动服务器,此时没有给定file_name值,mysqld将使用错误日志名host_name.err 并在数据目录中写入日志文件。

将错误信息写入错误日志文件的原理是,服务器将对标准错误输出重定向到该日志文件,所以如果不指定--log-error,错误被写入标准错误输出stderr,通常标准输出为你的终端。如果在程序中有printf等语句的话,这些函数打印出的信息也被写入该日志文件。

如果执行FLUSH LOGS,错误日志用-old重新命名后缀并且mysqld创建一个新的空日志文件。如第一次生成的错误日志为:linux-8tpn.err。执行该命令后将该文件重命名为:linux-8tpn.err-old。

这说明我们只要在不指定--log-error的情况下,能获取到stderr的信息就可以了。那如何获取stderr的信息呢

参考/article/3479577.html进行详细了解

发现还是实现不了通过变量来获取mysqldump的异常信息,就采用--log-error的方式了

grep "mysqldump1" abc.log && ./test2.sh || ./test1.sh 用以上命令可以实现在abc.log中查找字符串mysqldump1,如果查到的话就执行./test2.sh 否则执行./test1.sh (grep "Hello Would" temp && echo "Hello Would" || echo "Hello China")

通过以上方式可以到日志文件中查找是否有error,有的话就说明备份失败。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐