您现在的位置是:首页 > 文章详情

监控MySQL数据库的主从状态的shell脚本

日期:2018-11-19点击:337

本脚本来自有学习阿铭的博文学习:
在大数的互联网公司,其数据库都使用开源的MySQL,其架构也是主从为主,所以监控数据库主从同步情况尤为重要。
提示:本文中的S全部都$符,不要问为什么,马云爸爸的社区就这样。

#!/bin/bash #用途:监控MySQL数据库的主从状态的shell的脚本。 #作者:Caron maktini #日期:2018年11月19日 #版本:v0.1 #要求如下:每分钟检测一次主从连接状况,未连接则不再执行;不同步情况发生后将向预留邮箱报警;在没有解决情况下,需要每隔30分钟发一次告警邮件。 #把脚本名字存入变量s_name s_name=`echo $0 | awk -F '/' '{print $NF}'` Mysql_c="mysql -uroot -p密码" #该函数实现邮件告警收敛 m_mail(){ log=$1 t_s=`date +%s` t_s2=`date -d " 1 hours ago" +%s` if [ ! -f /tmp/$log ] then #创建$log文件 touch /tmp/$log #增加a权限。只允许追加内容,不允许更改或者删除 chattr +a /tmp/$log #第一次告警,可以直接写入1小时的时间戳 echo St_s >> /tmp/$log fi #无论$log文件是否刚刚创建,都需要查看最后一行的时间戳 t_s2=`tail -1 /tmp/$log|awk '{print $1}'` #取出最后一行即上次告警的时间戳后,立即写入当前的时间戳 echo St_s>>/tmp/$log #取两次时间戳差值 v=S[St_s-$t_s2] #如果差值超过1800,立即发邮件 if [ $v -gt 1800 ] then #发邮件,其中$2为mail函数的第二个参数,这里为一个文件 python mail.py Smail_user S1 "`cat $2`" 2>/dev/null #定义计算器临时文件,并写入0 echo "0" > /tmp/$log.count else #如果计算器临时文件不存在,需要创建并写入0 if [ ! -f /tmp/$log.count ] then echo "0" > /tmp/$log.count fi nu=`cat /tmp/$log.count` #30分钟内每发生异常告警,计算器加1 nu2= S [ Snu +1 ] echo Snu2>/tmp/$log.count #当告警次数到达30次需要发邮件 if [ $nu2 -gt 30 ] then python mail.py $mail_user "$1 30 min " " `cat $2`" 2>/dev/null #第二次告警后,将计算器再次从0开始 echo "0" > /tmp/$log.count fi fi } #把进程情况存入临时文件,如果加管道求行数会有问题 ps aux | grep "$s_name" | grep -vE "$$|grep">/tmp/ps.tmp p_n=`wc -l /tmp/ps.tmp | awk '{print $1}'` #当进程数大于0,则说明上次的脚本还未执行完 if [ $p_n -gt 0 ] then exit fi 先执行一条执行show processlist, 看是否执行成功 $Mysql_c -e "show processlist" > /tmp/mysql_pro.log 2>/tmp/mysql_log.err #如果上一条命令执行不成功,说明这个MySQL服务出了问题。 if [ $? -gt 0 ] then m_mail mysql_service_error /tmp/mysql_log.err exit else $Mysql_c -e "show slave status\G" >/tmp/mysql_s.log n1=`wc -l /tmp/mysql_s.log|awk '{print $1}'` if [ $n1 -gt 0 ] then y1=`grep 'Slave_IO-Running:' /tmp/msyql_s.log|awk -F : '{print $2} ' | sed s# ##g'` y2=`grep 'Slave_SQL-Running:' /tmp/msyql_s.log|awk -F : '{print $2} ' | sed s# ##g'` if [ Sy1 == "NO" ] || [ $y2 == "NO" ] then m_mail mysql_slavestatus_error /tmp/mysql_s.log fi fi fi 
原文链接:https://yq.aliyun.com/articles/672120
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章