你們可能遇到這樣的問題,mysql的主已經寫入數據了,可是卻沒有同步到從myql那裏,或者延遲很長時間才同步過去。說明一下咱們的網絡環境,咱們每臺數據庫都有兩個網線,分別鏈接內網和外網的千兆交換機,速度確定不是問題。若是延遲很長的話,確定是出問題,好比數據庫被lock了,或者開發人員的一些不當的操做等。這時候就須要監控主從同步的狀態已經主從同步的時間間隔等。以便及時與開發人員溝通,及時解決問題。下面是我本身寫的一個腳本名字叫check_mysql_delay:mysql
#!/bin/bash
aa=`/usr/local/mysql/bin/mysql -u 用戶 –p密碼 --socket=/數據庫目錄/$1/mysql_$1.sock -e "show slave status\G"|egrep Read_Master_Log_Pos|awk
'{print $2}'`
bb=`/usr/local/mysql/bin/mysql -u 用戶 –p密碼 --socket=/數據庫目錄/$1/mysql_$1.sock -e "show slave status\G"|egrep Exec_Master_Log_Pos|awk
'{print $2}'`
cc=`expr $aa - $bb`
if [ $cc -gt 10000 ]
then
echo "$1 is CRITICAL $aa $bb $cc"
#exit $STATE_CRITICAL;
exit 2;
else
echo "$1 is OK $aa $bb $cc"
#exit $STATE_OK;
exit 0;
fi
把該腳本放到/usr/local/nagios/libexec目錄下面。
而後修改/usr/local/nagios/etc/nrpe.cfg,在後面添加一行
command[check_mysql_delay3306]=/usr/local/nagios/libexec/check_mysql_delay 3306
注意這個3306就是給上面腳本當中$1賦值用的,若是有多個mysql實例的話,能夠多寫幾行。
而後修改nagios服務器端的配置文件。在服務的配置文件中添加以下內容
define service {
use db-server
host_name host當中定義的主機名
service_description check_rep_delay3306
check_command check_nrpe!check_mysql_delay3306
}
而後從新加載一下nagios就ok了。