mysql复制延迟监控脚本

针对mysql一主多从时候,大数据情况下可能会遇到主从复制延迟问题,压测mysql时,需要进行复制延迟进行监控,Lepus可以对复制延迟方面信息进行监控,若项目紧急没时间部署Lepus情况下,可直接监控mysql复制延迟问题:

监控mysql复制状态及延迟问题,主要监控命令为:show slave status。但是每次执行较为麻烦,编写shell脚本,压测期间自动监控统计,2种shell方式:

①、比如持续监控打印800次延迟情况,每次打印监控延迟时间,get.sh:

n=800
for ((i=n;i>=1;i--))
do
echo "$i :==============================" 
mysql -u luojie -h 192.168.16.52 -pluo_7070 -e "show slave status\G" | grep -i "seconds"
sleep 1
done

②、增加其他逻辑处理:

!/bin/sh
# 本脚本用于监控MySQL 复制是否运行,并且根据具体的错误代码自动判断是否忽略
#
now=`date +"%Y%m%d%H%M%S"`
StatFile="./slave_status.$now"
#mysql制监状态监控数据,保存到指定文件
echo "show slave status\G" | mysql -uluojie -pluo_7070 > $StatFile
#取得 io_thread, sql_thread, last_errno 的状态
IoStat=`cat $StatFile | grep Slave_IO_Running | awk '{print $2}'`
SqlStat=`cat $StatFile | grep Slave_SQL_Running | awk '{ print $2}'`
Errno=`cat $StatFile | grep Last_Errno | awk '{print $2}'`
Behind=`cat $StatFile | grep Seconds_Behind_Master | awk '{print $2}'`
#IoStat=`cat $StatFile | head -n 12 | tail -n 1 | awk '{print $2}'`
#SqlStat=`cat $StatFile | head -n 13 | tail -n 1 | awk '{print $2}'`
#Errno=`cat $StatFile | head -n 20 | tail -n 1 | awk '{print $2}'`
if [ $IoStat = 'No' ] || [ $SqlStat = 'No' ] ; then
echo "[chkslave]"
date

 #如果错误代码为 0,则可能是因为网络等原因导致复制中断,直接重新启动复制即可
 if [ "$Errno" -eq 0 ] ; then
  echo "start slave io_thread; start slave sql_thread;" | mysql -uluojie -pluo_7070
  echo "start slave io_thread; start slave sql_thread;"
 #如果是一些不是很要紧的错误代码,也可以直接略过
 elif [ "$Errno" -eq 1007 ] || [ "$Errno" -eq 1053 ] || [ "$Errno" -eq 1062 ] || [ "$Errno" -eq 1213 ] \
|| [ "$Errno" -eq 1158 ] || [ "$Errno" -eq 1159 ] || [ "$Errno" -eq 1008 ] ; then
  echo "stop slave; set global sql_slave_skip_counter=1; slave start;" | mysql -uluojie -pluo_7070
  echo "stop slave; set global sql_slave_skip_counter=1; slave start;"
 else
  echo `date` "slave is down!!!"
 fi
 # 远远落后于 master
 if [ $Behind -gt 200 ] ; then
   echo `date` "slave is behind master $Behind seconds!!!"
 fi

#删除临时状态文件
rm -f $StatFile
echo "[/chkslave]"
fi

你可能感兴趣的:(Linux,Mysql)