| 導購 | 订阅 | 在线投稿
分享
 
 
 

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- 王朝網路 版權所有