查看从机状态 mysql_Shell监控MySQL从机状态

该博客介绍了一种使用shell脚本结合sendEmail工具监控MySQL从机状态的方法,以解决mail命令发送报警邮件可能被识别为垃圾邮件的问题。脚本通过检查IOthread和SQLthread的状态以及复制延迟来确保主从同步的正常,并在出现异常时发送通知。
摘要由CSDN通过智能技术生成

Shell监控MySQL从机状态这种脚本已经很多了,而且实现起来也很简单,但是比较多人使用的是系统自带的mail命令,但是mail有很多不足的地方,例如我发送邮件很多邮箱会认为是垃圾邮件,而通知不到我,这就是很糟糕的问题了,所以这里的发送邮件我们选用sendEmail,sendEmail其实都不需要安装,解压即可使用:

[root@node1 ]# wget

[root@node1 ]# tar xvf sendEmail-v1.56.tar.gz -C /usr/local/

[root@node1 ]# cd /usr/local/ ; mv sendEmail-v1.56 sendEmail

脚本脚本内容:

#!/bin/bash

#set mysql evn

MYSQL_USER_SLAVE=

MYSQL_PASS_SLAVE=

MYSQL_HOST_SLAVE=

MYSQL_PORT_SLAVE=3306

DATE=`date +%Y%m%d%H%M%S`

tmpfile_status="pstatus_$DATE"

# 获取SLAVE状态信息

mysql -h${MYSQL_HOST_SLAVE} -u${MYSQL_USER_SLAVE} -p${MYSQL_PASS_SLAVE} -P${MYSQL_PORT_SLAVE} -e "SHOW SLAVE STATUS\G" >${tmpfile_status} 2>/dev/null

# 邮件列表,需要发送多个地址,请用空格隔开

Email_To_Addr="v11020@qq.com"

Email_From_Addr=v11020@qq.com

Email_Passwd=password

# 发送邮件

function sendEmail(){

for i in $Email_To_Addr

do

/usr/local/sendEmail/sendEmail -f "$Email_From_Addr" -t "$i" -o message-charset=utf8 -s smtp.exmail.qq.com -u "$Message" -xu "$Email_From_Addr" -xp "$Email_Passwd" -m "$Body "

done

}

# 检查主从同步是否正常

SIR_Status=`awk '/\/{print $2}' ${tmpfile_status}`

SSR_Status=`awk '/\/{print $2}' ${tmpfile_status}`

if [ "$SIR_Status" != "Yes" -o "$SSR_Status" != "Yes" ];then

Message="Rep sync failure."

Body="IP:$MYSQL_HOST_SLAVE"

sendEmail

fi

# 检查是否存在复制延迟

MLF_Num=`awk -F. '/\/{print $NF}' ${tmpfile_status}`

RSLF_Num=`awk -F. '/\/{print $NF}' ${tmpfile_status}`

if [ "$MLF_Num" = "$RSLF_Num" ];then

RMLP_Num=`awk '/\/{print $NF}' ${tmpfile_status}`

ESLP_Num=`awk '/\/{print $NF}' ${tmpfile_status}`

SBM_Num=`awk '/\/{print $2}' ${tmpfile_status}`

Diff_Num=$[RMLP_Num-ESLP_Num]

if [ "$RMLP_Num" -gt "$ESLP_Num" -a "$SBM_Num" -gt 0 ];then

Message="SAP event slowly"

Body="backward master:$Diff_Num events,IP:$MYSQL_HOST_SLAVE"

sendEmail

fi

else

Message="binlog question"

Body="slave's Master_Log_File and Relay_Master_Log_File different,IP:$MYSQL_HOST_SLAVE"

sendEmail

fi

rm -rf ${tmpfile_status}

脚本通过检查IO thread和SQL thread去监控主从同步是否正常,并且加上了延迟复制的检查。

这里脚本内容从生产环境拿下来删掉一下变量和裁剪了一些内容之后没测试过,发现问题可以留言或者邮件和我交流。

声明:这章内容仅提供参考作用,不承担任何法律责任。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值