- 論壇徽章:
- 0
|
!/bin/sh## created by yejr, 2007/06/03 ## 本腳本用于監(jiān)控MySQL 復(fù)制是否運(yùn)行,并且根據(jù)具體的錯(cuò)誤代碼自動(dòng)判斷是否忽略 #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 的狀態(tài)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 #如果錯(cuò)誤代碼為 0,則可能是因?yàn)榫W(wǎng)絡(luò)等原因?qū)е聫?fù)制中斷,直接重新啟動(dòng)復(fù)制即可 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;" #如果是一些不是很要緊的錯(cuò)誤代碼,也可以直接略過 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#刪除臨時(shí)狀態(tài)文件rm -f $StatFileecho "[/chkslave]"fi |
|