知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

shell实战之:mysql index文件检查机制

发布时间:2014-09-05 13:47:33作者:知识屋

shell实战之:mysql index文件检查机制
 
01
#!/bin/sh
02
def_check_index()
03
{
04
#code by scpman
05
#http://www.scpman.com
06
#mail:freeddser@gmail.com
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
 
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜