#!/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的从队列中删除。