#!/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
MySQL复制 自动监控脚本
原创
©著作权归作者所有:来自51CTO博客作者叶金荣的原创作品,如需转载,请与作者联系,否则将追究法律责任
作/译者:叶金荣(Email: ),来源:http://imysql.cn,转载请注明作/译者和出处,并且不能用于商业用途,违者必究。
本脚本在 linux/freebsd 平台下均试验过。
本文出自 “MySQL中文网”博客 http://www.imysql.cn/
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
MySQL 8自动备份脚本密码安全警告
作者:田逸(formyz)目标需求接到一个任务,需要在凌晨四点对一个数据库进行备
mysql v8 MySQL -
MySQL 组复制搭建
MySQL 组复制搭建
MySQL -
shell监控脚本-监控mysql 主从复制
blog已搬家,请移步 http://bbs.cdnvps.net/
mysql shell 主从复制 脚本 监控