mysql自动监控_MySQL复制 自动监控脚本
作/譯者:葉金榮(Email:
),來源:http://imysql.cn,轉載請注明作/譯者和出處,并且不能用于商業用途,違者必究。
#!/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
本腳本在 linux/freebsd 平臺下均試驗過。
總結
以上是生活随笔為你收集整理的mysql自动监控_MySQL复制 自动监控脚本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql数据库安全审计_MySQL数据
- 下一篇: mp4文件时长 c++源码_【C语言】如