| 订阅 | 在线投稿
分享
 
 
 

MySQL复制自动监控脚本

来源:互联网网民  宽屏版  评论
2008-05-21 09:45:31

#!/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}'`#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' ] ; thenecho "[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#删除临时状态文件rm -f $StatFileecho "[/chkslave]"fi

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

 
特别声明:以上内容(如有图片或视频亦包括在内)为网络用户发布,本站仅提供信息存储服务。
 
  #!/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}'`#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' ] ; thenecho "[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#删除临时状态文件rm -f $StatFileecho "[/chkslave]"fi   本脚本在 linux/freebsd 平台下均试验过。
󰈣󰈤
 
 
 
>>返回首页<<
 
 热帖排行
 
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
©2005- 王朝网络 版权所有