shell脚本:mysql主从状态监控脚本

 

处理思路:

1、show slave status\G获取slave_IO_Running 和slave_Sql_running的状态,当两者都为yes,说明从机去主机获取binlog日志,以及从机执行relay日志状态都是ok的,说明:主从状态连接顺畅

2、mysql -e ''指令, 可以去执行非交互状态的的指令

mysql主从原理:
1、master服务器将数据的改变的执行指令记录到二进制binlog日志中,只要master上的数据发生改变(增删改权限赋予等),就会进行记录
2、slave服务器会在一定的时间间隔类对master 二进制binlog日志进行探测是否发生改变,如果发生改变,则开始一个I/O线程请求master二进制事件
3、主节点(master)为每一个I/O线程开启一个dump线程,用于向其发送二进制事件,并保存在slave的中继日志relay中
4、slave启动SQL线程从中继日志relay读取日志并执行,确保主从数据一致
5、最后I/O线程和SQL线程进入睡眠状态,等待下一次被唤醒

注意:
1、从库生成2个线程,I/O和SQL线程,I/O线程去请求主库的binlog,得到后写入本地的relayl-log中
2、主库生成一个log dump线程,用来给从库I/O线程传binlog
3、SQL线程会读取relaylog并解析为SQL语句逐一执行

 

代码如下:

当检测到线程状态不为yes,进行邮件预警

HOST=192.168.161.70
USER=root
PASSWD=123456
Mail_addr=450776269@qq.com
IO_statu=$(mysql -h$HOST -u$USER -p$PASSWD -e 'show slave status\G' 2>/dev/null |awk '/Slave_.*Running:/{print $1$2}')
for i in $IO_statu
do
	Thread_name=`echo "$i" |awk -F":" '{print $1}'`
	Thread_status=`echo "$i" |awk -F":" '{print $2}'`
	if [ $Thread_status != "yes" ];then
		echo "Error:$Thread_name is down ,pls check it" |mail -s "mysql-master-slave status warning" $Mail_addr
	fi
done

把脚本放到定时任务中去执行,即可!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值