如何判斷mysqldump的成功與失敗

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的信息呢
參考http://my.oschina.net/qihh/blog/55308進行詳細瞭解
發現還是實現不了通過變量來獲取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,有的話就說明備份失敗。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章