場景需求
大部分企業都會存在測試數據庫。然而,這些公司的運維人員普遍的做法是編寫一個shell腳本通過mysqldump,這個MySQL數據庫備份工具結合Linux的crontab這個定時任務命令,實現每週或者每月對數據庫進行備份,如果不監控這些測試數據庫每週是否備份成功,很可能會在後期的工作中出現問題。因此,今天圍繞這個話題,介紹一下如何通過Zabbix監控mysqldump數據庫的備份。
實驗過程
1. 在mysql數據庫創建一個演示用的,名爲test的數據庫,在test數據庫創建一個test表。
Mysql的語句
Create database test; #創建名爲test的數據庫
Use test; #使用test數據庫
create table test (name varchar(50)); #創建一個只有name字段的test表格
1.1 創建測試數據庫test
1.2 編寫數據庫備份腳本
然後是編寫一個簡單備份數據庫的shell腳本(bak.sh),在crontab定時任務中,設置腳本執行的時間
正常來說(備份的數據庫文件名,必須時數據庫名加上數據庫備份時間命名)
Mysqldump –u用戶名 –p密碼 –h數據庫ip 數據庫名(test) > 備份的數據庫存放的位置
如果數據庫備份成功,在/tmp/bak_result.txt就會是一個0。反之,非0就是數據庫備份失敗。
注意:存放數據庫備份的位置最好不要是用戶目錄,否則其他用戶可能無法查看,因此選擇/tmp目錄用來測試
最後要給bak.sh加上執行權限,否則定時任務無法執行
Chmod o+x bak.sh
1.3 設置定時計劃,爲了方便演示效果(備份時間設置爲1分鐘備份一次)
Crontab –e打開定時任務
查看是否備份成功
2.創建監控項
在zabbix_agent.conf配置自定義鍵值
重啓zabbix_agent
在zabbix_server配置監控項
如上圖所示,mysql備份的值爲0,也就是備份成功。
創建告警。如果值非0,那麼就是數據庫備份失敗
爲了驗證備份失敗。我們可以執行刪除數據庫test的操作。那麼mysql是否備份成功這個監控項的值就會不爲0,接着會出現告警。
刪除數據庫命令(drop database 數據庫名)
此時,mysql是否備份成功的監控項值不爲0。導出的數據庫文件也是無效的。
觸發器也出現告警。
實驗完畢。
參考鏈接 :
技術乾貨:利用 Zabbix 監控 mysqldump 定時備份數據庫是否成功 | 運維進階 :https://mp.weixin.qq.com/s/0UGS-WvcreOg7enBXDNTqQ