MySQL复制 自动监控脚本
点击次数:35 次 发布日期:2008-11-28 05:56:35 作者:源代码网
|
源代码网推荐 #!/bin/sh## created by yejr, 2007/06/03## 本脚本用于监控MySQL 复制是否运行,并且根据具体的错误代码自动判断是否忽略#now=`date +"%Y%m%d%H%M%S"`StatFile="./slave_status.$now"echo "show slave statusG" | 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 平台下均试验过。 源代码网推荐 源代码网推荐 源代码网供稿. |
