標籤:ecb 差距 moni 命令 water 狀態 group print 設定檔
1,部署了個mysql從資料庫,需要時時監控這個從資料庫的主從狀態。原理的話,是通過從mysql上的zabbix執行show slave status擷取
Slave_IO_Running|Slave_SQL_Running狀態是否都為Yes來判斷主從是否正常。
MySQL同步功能由3個線程(master上1個,slave上2個)來實現,簡單的說就是:master發送日誌一個,slave接收日誌一個,slave作業記錄一個。
首先,我們解釋一下 show slave status 中重要的幾個參數:
Slave_IO_Running: I/O線程是否被啟動並成功地串連到主伺服器上。
Slave_SQL_Running: SQL線程是否被啟動。
Seconds_Behind_Master:本欄位是從屬伺服器“落後”多少的一個指示。當從屬SQL線程正在運行時(處理更新),本欄位為在主伺服器上由此線程執行的最近的一個事件的時間標記開始,已經過的秒數。當此線程被從屬伺服器I/O線程趕上,並進入閑置狀態,等待來自I/O線程的更多的事件時,本欄位為零。總之,本欄位測量從屬伺服器SQL線程和從屬伺服器I/O線程之間的時間差距,單位以秒計。
那麼如何監控從伺服器是否正常運行呢?
2,我們可以通過一條命令來擷取主從同步資訊:
mysql -uzabbix -p -e ‘show slave status\G‘ |grep -E "Slave_IO_Running|Slave_SQL_Running"|awk ‘{print $2}‘|grep -c Yes
主要擷取的就是以下兩個值
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
3,建立個Mysql的設定檔,在zabbix_agent安裝目錄下,
在userparameter_mysql.conf檔案裡添加最後一行,好處是在擷取主從同步的資訊時不會有在命令列上使用密碼下的提示,
UserParameter=mysql.replication,HOME=/etc/zabbix/etc /usr/local/mysql/bin/mysql -e ‘show slave status\G‘ |grep -E "Slave_IO_Running|Slave_SQL_Running"|awk ‘{print $2}‘|grep -c Yes
重啟agent用戶端
在zabbix_server端檢查是否可以擷取主從同步資訊,
用指令碼方式都會有這樣的提示,
會導致在zabbix會報錯
4,在zabbix server上建立template模版
建立模版Template App MySQL Replication
Configuration|Templates|create templates,只要填寫下Template name,選擇下group即可
在建立Template App MySQL Replication上建立Applications
建立items,key那邊手動填寫mysql.replication
建立triggers觸發器,
點Add,為該triggers觸發器的Expression運算式。當擷取的key值不為2時警示
添加Graphs
到Monitoring--Graphs查看監控圖表
zabbix監控mysql主從同步