shell實戰之:mysql index文件檢查機制
01
#!/bin/sh
02
def_check_index()
03
{
04
#code by scpman
05
#http://www.scpman.com
06
#mail:
[email protected]
07
#需求:
08
#
09
# 1.通過show master logs; 列出binlog文件序列如果順序不對,或記錄重復發告警 發郵件告警。
10
# 2、查看mysql目錄下的index文件,如果順序不對,或記錄重復發告警
11
#
12
#實現
13
#發送告警函數
14
def_send_mail()
15
{
16
msgip="10.0.7.44" #syslog服務器
17
ser_IP=`cat /etc/rc.conf | grep -E "ifconfig_[em1|bce1]" | awk '{print "IP:"$2}'| sed -n 1p ` #本機的ip
18
#echo $1 函數接收的第一個值
19
if [ -n "$1" ] && [ `echo "$1"|grep -c 'chongfu'` -gt 0 ] #判斷$1是否在,並且統計下chongfu這個字符是否大於0
20
then
21
echo /usr/bin/logger -p local1.info -h $msgip "the services: $IP mysql index file $1 " #大於0說明有錯誤的,就得告警
22
exit
23
elif [ -n "$1" ] && [ `echo "$1"|grep -c 'luanle'` -gt 0 ] #判斷$1是否在,並且統計下luanle這個字符是否大於0
24
then
25
echo /usr/bin/logger -p local1.info -h $msgip "the services: $IP mysql index file $1 " #大於0說明有錯誤的,就得告警
26
exit
27
else
28
echo ok
29
fi
30
}
31
#1、判斷index是否有重復的情況
32
def_index_is_one()
33
{
34
if [ -n "$1" ]
35
then
36
static_index=$1
37
def_send_mail `awk '{a[$1]++}END{for (j in a) print j,a[j]}' $static_index | awk -v flag="$static_index" '{if($2>1) print "chongfu-->"$0}'`
38
else
39
echo 'def_index_is_one $1 is null!exit'
40
exit
41
fi
42
}
43
#檢查mysql目錄下的index文件內容順序是否正常
44
def_static_index_shunxu()
45
{
46
bzfile='/usr/dlm_db/mysql/zqtx-bin.index'
47
current_line=`cat ${bzfile}|head -n 1|sed -e "s#./zqtx-bin.##g"`
48
for i in `cat ${bzfile}`
49
do
50
if [ `echo $i|sed -e "s#./zqtx-bin.##g"` -lt "$current_line" ]
51
then
52
def_send_mail "luanle:${bzfile}_${current_line}"
53
exit
54
fi
55
current_line=`echo $i|sed -e "s#./zqtx-bin.##g"`
56
done
57
}
58
#檢查mysql中show master logs的index文件內容順序是否正常
59
def_masterlog_index_shunxu()
60
{
61
mysql -uroot -p123456 -s -s -e "show master logs;" | awk '{print $1}' | sed -e "s/zqtx-bin.//g">/usr/dlm_db/mysql/flag_index
62
bzfile=/usr/dlm_db/mysql/flag_index
63
current_line=`cat ${bzfile}|head -n 1`
64
for i in `cat ${bzfile}`
65
do
66
if [ "$i" -lt "$current_line" ]
67
then
68
def_send_mail "luanle:master_logs_${i}"
69
exit
70
fi
71
current_line="$i"
72
done
73
}
74
def_index_is_one '/usr/dlm_db/mysql/zqtx-bin.index'
75
def_static_index_shunxu
76
def_masterlog_index_shunxu
77
def_index_is_one '/usr/dlm_db/mysql/flag_index'
78
}
79
def_check_index