Mysql主从状态监控脚本

目标:对Mysql从库进行状态监控,如果从库复制异常就告警

思路:

1,首先查找Mysql从库的4个参数值(显示奴隶状态根据这个命令),分别是从库的输入输出线程,SQL线程,复制延迟时间(这个在以下脚本没用的到,可以再写个脚本对其延迟进行告警),错误码

2,函数Mysql_status判断,对输入输出线程,SQL线程,错误码三者逻辑与判断

3,如果为假则执行函数Mysql_Errno

4,对于Mysql错误码为1158 1159 1008 1007 1062我们可以进行停止奴隶,跳过当前复制条数,进行下一条复制


(root@zabbix脚本)#猫mysql_check.sh 

# !/bin/bash

# # 2017.5.8

# Mysql状态监测告警

。/etc/init.d/功能

Mysql_IO_cmd=癿ysql - h 10.222.1.5 -uroot -p123456, - e”显示奴隶状态\ G”| grep Slave_IO_Running | awk的{打印$ NF} '

Mysql_SQL_cmd=癿ysql - h 10.222.1.5 -uroot -p123456, - e”显示奴隶状态\ G”| grep Slave_SQL_Running | awk的{打印$ NF} '

Mysql_Be_cmd=癿ysql - h 10.222.1.5 -uroot -p123456, - e”显示奴隶状态\ G”| grep Seconds_Behind_Master | awk的{打印$ NF} '

Mysql_Errno_cmd=癿ysql - h 10.222.1.5 -uroot -p123456, - e”显示奴隶状态\ G”| grep Last_SQL_Errno | awk的{打印$ NF} '

ErrorNo=(1158 1159 1008 1007 1062)

# #判断mysql复制的错误码

Mysql_Errno () {

在美元和ErrorNo

,

如果[" $ Mysql_Errno_cmd "==" $ sum ");然后

回声”(日期+ % f R %)美元错误状态码:$ Mysql_Errno_cmd "祝辞祝辞/tmp/mysql_error。日志

mysql - h 10.222.1.5 -uroot -p123456, - e '停止奴隶;集全球sql_slave_skip_counter=1;开始奴隶;”

echo ' - r/tmp/mysql_error排序。日志”|邮件- s“MySQL奴隶是错误”zabbix_client@jt56.org

,,其他

回声”(日期+ % f R %)美元错误状态码:$ Mysql_Errno_cmd "祝辞祝辞/tmp/mysql_error。日志

# echo ' - r/tmp/mysql_error排序。日志”|邮件- s“MySQL奴隶是错误”zabbix_client@jt56.org

uniq,/tmp/mysql_error。邮件日志| - s“MySQL奴隶是错误”zabbix_client@jt56.org

fi

,做

}

# #监测mysql状态函数

Mysql_status () {

如果[" $ Mysql_IO_cmd "==" Yes "——" $ Mysql_SQL_cmd "==" Yes "——" $ Mysql_Errno_cmd "==" 0 ");然后

echo 

操作“mysql地位”/bin/true

,其他

操作“mysql地位”/bin/false Mysql_Errno

fi 

}

Mysql_status


Mysql主从状态监控脚本