mysql自动监控_MySQL复制 自动监控脚本

作/译者:叶金荣(Email:

0818b9ca8b590ca3270a3433284dd417.png),来源:http://imysql.cn,转载请注明作/译者和出处,并且不能用于商业用途,违者必究。

#!/bin/sh

#

# created by yejr, 2007/06/03

#

# 本脚本用于监控MySQL 复制是否运行,并且根据具体的错误代码自动判断是否忽略

#

now=`date +"%Y%m%d%H%M%S"`

StatFile="./slave_status.$now"

echo "show slave status\G" | mysql -uroot -pmypasswd > $StatFile

#取得 io_thread, sql_thread, last_errno 的状态

IoStat=`cat $StatFile | grep Slave_IO_Running | awk '{print $2}'`

SqlStat=`cat $StatFile | grep Slave_SQL_Running | awk '{ print $2}'`

Errno=`cat $StatFile | grep Last_Errno | awk '{print $2}'`

Behind=`cat $StatFile | grep Seconds_Behind_Master | awk '{print $2}'`

#IoStat=`cat $StatFile | head -n 12 | tail -n 1 | awk '{print $2}'`

#SqlStat=`cat $StatFile | head -n 13 | tail -n 1 | awk '{print $2}'`

#Errno=`cat $StatFile | head -n 20 | tail -n 1 | awk '{print $2}'`

if [ $IoStat = 'No' ] || [ $SqlStat = 'No' ] ; then

echo "[chkslave]"

date

#如果错误代码为 0,则可能是因为网络等原因导致复制中断,直接重新启动复制即可

if [ "$Errno" -eq 0 ] ; then

echo "start slave io_thread; start slave sql_thread;" | mysql -uroot -pmypasswd

echo "start slave io_thread; start slave sql_thread;"

#如果是一些不是很要紧的错误代码,也可以直接略过

elif [ "$Errno" -eq 1007 ] || [ "$Errno" -eq 1053 ] || [ "$Errno" -eq 1062 ] || [ "$Errno" -eq 1213 ] \

|| [ "$Errno" -eq 1158 ] || [ "$Errno" -eq 1159 ] || [ "$Errno" -eq 1008 ] ; then

echo "stop slave; set global sql_slave_skip_counter=1; slave start;" | mysql -uroot -pmypasswd

echo "stop slave; set global sql_slave_skip_counter=1; slave start;"

else

echo `date` "slave is down!!!"

fi

# 远远落后于 master

if [ $Behind -gt 200 ] ; then

echo `date` "slave is behind master $Behind seconds!!!"

fi

#删除临时状态文件

rm -f $StatFile

echo "[/chkslave]"

fi

本脚本在 linux/freebsd 平台下均试验过。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值