LPL竞猜 > LOL竞猜 > linux shell mysql 数据库主从同步状态检查告警,mysql告警

LOL竞猜

linux shell mysql 数据库主从同步状态检查告警,mysql告警

linux shell mysql 数据库主从同步状态检查告急,mysql告急

必要: 1、监测数据库主从状态 2、获取数据库首要参数 3、可读取配置文件 4、布置位置自适应。   参谋资料:   #全局变量包罗程序路线,bin文件路线,时间,发送短信数据库配置 #!/bin/bash #获得shell脚本履行路线 DI科雷傲="$( cd "$( dirname "$0"  卡塔尔(قطر‎" && pwd  卡塔尔国"
BINPATH=`echo $DIR | sed -e 's//bin//'`
TIME=`date "+%Y-%m-%d %H:%M:%S"` #数据库连接,用于短信发送
SQLPARAM_SMS="mysql -uXXXX -pXXXX -h192.168.1.1"   #读取配置文件,并拿到同步状态 #安顿文件的源委和格式能够看本身上大器晚成篇博文,其它直接看命令也得以解析出来 while read LINE
do
CHOST=`echo $LINE | awk -F ':' '{print $2}'`
DBNAME=`echo $LINE | awk -F ':' '{print $1}'`
SQLPARAM="mysql -h$CHOST -uroot -pdascom" #获取从库同步状态,并出口至临时文件,当然也能够直接管理
$SQLPARAM < $DIR/status.sql > $DIR/temp.log
REIO=`grep Slave_IO_Running $DIR/temp.log | awk -F ': ' '{print $2}'` RESQL=`grep Slave_SQL_Running $DIR/temp.log | awk -F ': ' '{print $2}'` #判定同步状态,并将结果输出至不常文件 #if剖断,没啥好说的,具体的利用方式能够看本身周到发出的参谋资料链接 if [ "$REIO"x = "Yes"x -a "$RESQL"x = "Yes"x ];then
echo $TIME " ""Check '$DBNAME' is OK." >> $BINPATH/log/check.log
echo -e "0c" >> $DIR/status.txt
else
echo $TIME " ""Check '$DBNAME' is down." >> $BINPATH/log/check.log
echo -e "$DBNAME c" >> $DIR/status.txt
fi
done<$BINPATH/etc/chslave.conf   #对结果实行剖判,如有极度发出短信报告急察方 if grep -q "DB" $DI凯雷德/status.txt
then
sed -i "s/0//g" $DIR/status.txt
ERRDB=`sed -n 1p $DIR/status.txt`
echo "
set names 'gbk';
insert into ultrax.msgsend (service, srcNo, destNo,  msgcontent) values ('30', '10000', '18612255693', '$ERRDB mysql_slave is down.');
" > $DIR/temp.sql
$SQLPARAM_SMS < $BINPATH/bin/temp.sql
else
echo $TIME " All DB is ok!" >> $BINPATH/log/check.log
fi   #剔除一时文件 rm -rf $DISportage/status.txt $DI路虎极光/temp.log $DI哈弗/status.txt $DI昂科威/temp.sql   PS:这里说明个非凡弱爆,可是也是多少的书写思路的难点。     之所以,发送告急短信的if循环是在while循环外面,是因为思谋到:笔者索要检查多个DB的情形,若是每一趟循环都去推断发短信的话会以致七个难题:      1、假若三个DB现身难题,会弹指间时有发生多条短信,而短信平台会屏蔽长时间内接连向三个号码发送短信的作为。      2、浪费,不能够因为更易于写就浪费短信。   当然,这些本子仍然一个比较弱爆的职能,小编继续努力。

shell mysql 数据库主从同步状态检查告警,mysql告警须要:1、监测数据库主从状态2、获取数据库首要参数3、可读取配置文件4、布置地方...