Shell实现监控MySQL Slave状态并通过邮件告警

SHELL实现监控mysql Slave 状态并通过邮件告警
实现思路:
1.使用直接查看mysql status获取Slave相关参数值,进行判断;
2.当延迟超过一定时间就发邮件进行告警;
3.Crontab里面,每三十分钟跑一次

详细代码如下:

#!/bin/bash
#crontab time :every 30  minutes once
#author : hzsnone@163.com
#date : 2018-11-20

mysql_hostname='数据库服务器IP或者主机名'
user=数据库用户名
password='密码'
gettime=`date +"%y-%m-%d %H:%M:%S"`
Log=/tmp/check_mysql_slave.log
STATUS=$(/usr/local/mysql/bin/mysql -u $user -p${password} -e "show slave status\G" 2>/dev/null| grep -i "running")
Slave_Behind_time=$(/usr/local/mysql/bin/mysql -u root -p${password} -e "show slave status\G" 2>/dev/null | grep -i "Seconds_Behind_Master"|awk '{print $2}') 
IO_pro=`echo $STATUS | awk '{print $2}'`
SQL_pro=`echo $STATUS |awk '{print $4}'`
if [ "$IO_pro" = "Yes" -a "$SQL_pro" = "Yes" ];
then
  echo "Slave is running!"
   if [ $Slave_Behind_time -gt 300 ];
   then
	echo "####### $gettime #########"> $Log
	echo -e "${mysql_hostname} is relay and behind master time is:${Slave_Behind_time}" >> $Log
	mail -s "${mysql_hostname} Relay" xxx@xxx.com < $Log
    fi
else
  echo "####### $gettime #########"> $Log
  echo "slave is not running!" >> $Log
  Last_Err=$(/usr/local/mysql/bin/mysql -u root -p${password} -e "show slave status\G" 2>/dev/null| grep -i "Last_Error"|awk ' {print $2}')  
  echo "the Error is $Last_Err ">> $Log
  mail -s "${mysql_hostname} Slave is not running!!!" xxx@xxx.com < $Log

fi

定时任务里面增加任务计划

    */30 * * * * /bin/sh /root/cronshell/check_mysql_slave.sh > /dev/null 2>&1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值