#!/bin/bash
#:Title:Monitor the realservers
#:Synopsis:
#:Data:2012-04-23 13:36:32
#:Version:1.1
#:Author:LuoWei <luoweiro@126.com>
#:Options:
#-----------------------------------------------
#Monitor RealServer on Direcrory
#-----------------------------------------------
User=connect
//受權鏈接賬號(Slave上對directory主機受權)
Password=redhat
//鏈接Slave的密碼
Behindtime=120
//定義主從延遲時間,若是超過這個時間,就把後端的Realserver刪除
IPVS=/sbin/ipvsadm
VIP=192.168.158.159
//定義VIP
VPORT=3306
//定義LVS的虛擬端口
RPORT=3306
//定義Realserver的端口
while [ 0 -lt 1 ];do
//寫個死循環,讓腳本後端執行
for I in {165,166};do
//定義Realserver的IP,我這裏兩個地址,你能夠接着寫
Host1=192.168.158.$I
del_realserver() {
//定義刪除Realserver的函數
$IPVS -d -t $VIP:$VPORT -r $Host1:$RPORT
}
add_realserver() {
//定義添加Realserver的函數
$IPVS -a -t $VIP:$VPORT -r $Host1:$RPORT -g
}
Slave_IO_Running=`mysql -h $Host1 -u$User -p$Password -e "SHOW SLAVE STATUS\G;" | grep "Slave_IO_Running" | awk -F":" '{print $2}'`
//定義Slave_IO_Running
Slave_SQL_Running=`mysql -h $Host1 -u$User -p$Password -e "SHOW SLAVE STATUS\G;" | grep "Slave_IO_Running" | awk -F":" '{print $2}'`
//定義Slave_SQL_Running
Seconds_Behind_Master=`mysql -h $Host1 -u$User -p$Password -e "SHOW SLAVE STATUS\G;" | grep "Seconds_Behind_Master" | awk -F":" '{print $2}'`
//定義Seconds_Behind_Master延遲時間
if [ $Slave_IO_Running == "Yes" -a $Slave_SQL_Running == "Yes" -a $Seconds_Behind_Master -lt $Behindtime ];then
//若是三個參數都符合要求,就添加
add_realserver
固然這個添加不是必要的,若是原來有的話,就是防止之前刪除過了,而後再添加,能夠再寫個判斷,筆者就省略了
elif [ $Slave_IO_Running == "Yes" -a $Slave_SQL_Running == "Yes" -a $Seconds_Behind_Master -gt $Behindtime ];then
del_realserver
else
del_realserver
fi
done
done
下面我就模擬中止
165上的主從,能夠看到164上就會把165的從隊列中刪除。