本文將重點講述 shell實戰中的 mysql index 文件檢查機制問題請先看代碼:
#!/bin/sh
def_check_index()
{
#code by scpman
#
#mail:
#需求
#
# 通過show master logs; 列出binlog文件序列如果順序不對或記錄重復發告警 發郵件告警
# 查看mysql目錄下的index文件如果順序不對或記錄重復發告警
#
#實現
#發送告警函數
def_send_mail()
{
msgip= #syslog服務器
ser_IP=`cat /etc/nf | grep E ifconfig_[em|bce] | awk {print IP:$}| sed n p ` #本機的ip
#echo $ 函數接收的第一個值
if [ n $ ] && [ `echo $|grep c chongfu` gt ] #判斷$是否在並且統計下chongfu這個字符是否大於
then
echo /usr/bin/logger p h $msgip the services: $IP mysql index file $ #大於說明有錯誤的就得告警
exit
elif [ n $ ] && [ `echo $|grep c luanle` gt ] #判斷$是否在並且統計下luanle這個字符是否大於
then
echo /usr/bin/logger p h $msgip the services: $IP mysql index file $ #大於說明有錯誤的就得告警
exit
else
echo ok
fi
}
#判斷index是否有重復的情況
def_index_is_one()
{
if [ n $ ]
then
static_index=$
def_send_mail `awk {a[$]++}END{for (j in a) print ja[j]} $static_index | awk v flag=$static_index {if($>) print chongfu>$}`
else
echo def_index_is_one $ is null!exit
exit
fi
}
#檢查mysql目錄下的index文件內容順序是否正常
def_static_index_shunxu()
{
bzfile=/usr/dlm_db/mysql/zqtxbinindex
current_line=`cat ${bzfile}|head n |sed e s#/zqtxbin##g`
for i in `cat ${bzfile}`
do
if [ `echo $i|sed e s#/zqtxbin##g` lt $current_line ]
then
def_send_mail luanle:${bzfile}_${current_line}
exit
fi
current_line=`echo $i|sed e s#/zqtxbin##g`
done
}
#檢查mysql中show master logs的index文件內容順序是否正常
def_masterlog_index_shunxu()
{
mysql uroot p s s e show master logs; | awk {print $} | sed e s/zqtxbin//g>/usr/dlm_db/mysql/flag_index
bzfile=/usr/dlm_db/mysql/flag_index
current_line=`cat ${bzfile}|head n `
for i in `cat ${bzfile}`
do
if [ $i lt $current_line ]
then
def_send_mail luanle:master_logs_${i}
exit
fi
current_line=$i
done
}
def_index_is_one /usr/dlm_db/mysql/zqtxbinindex
def_static_index_shunxu
def_masterlog_index_shunxu
def_index_is_one /usr/dlm_db/mysql/flag_index
}
def_check_index
From:http://tw.wingwit.com/Article/program/MySQL/201311/29512.html