mysql数据库主从做起来不难,但是主从数据的一致性很重要,本脚本用于粗略检查mysql数据库主从重要表的数据一致性,主要是在主从正常的情况下,连接数据库统计表的条数是否一致,脚本分为两部分,一个是py脚本,一个是ini配置文件,py脚本源码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
#!/usr/bin/env python #This script is used check mysql replcation some table # -*- coding: utf-8 -*- import sys,time,MySQLdb,threading
import ConfigParser
class Check:
def __init__( self ):
self .w = []
self .table = table
def conf( self ):
fp = ConfigParser.ConfigParser()
fp.readfp( open ( 'config.ini' ))
iplist = fp.get( "global" , "iplist" )
return iplist
def wd( self ,table):
iplist = self .conf()
hostlist = []
self .w = []
threads = []
for i in iplist.split( ";" ):
hostlist.append(i.split( "," ))
for i in range ( len (hostlist)):
host = hostlist[i][ 0 ]
hostname = hostlist[i][ 1 ]
t = threading.Thread(target = self .mysql_check,args = (host,hostname,i))
threads.append(t)
t.start()
time.sleep( 0.05 )
for i in range ( len (hostlist)):
threads[i].join()
self .w.sort()
for r in range ( len ( self .w)):
print self .w[r]
def mysql_check( self ,host,hostname,i):
try :
conn = MySQLdb.connect(host = host,user = 'user' ,passwd = 'passwd' ,connect_timeout = 5 )
cursor = conn.cursor()
sql = "SELECT COUNT(*) FROM %s" % self .table
cursor.execute(sql)
alldata = cursor.fetchall()
count = alldata[ 0 ][ 0 ]
value = hostname + "\t" + str (count)
self .w.append(value)
except :
print "Can not Connect to " + host + " mysql server"
return 0
if __name__ = = "__main__" :
table_list = [ 'aa.aa' , 'bb.bb' , 'cc.cc' ]
for i in range ( len (table_list)):
table = table_list[i]
print "Table Count: " + table
print
boss = Check()
boss.wd(table)
print
|
config.ini文件格式如下:
1
2
|
[ global ]
iplist = 192.168 . 50.1 ,vvv(主); 192.168 . 50.2 ,vvv(从); 192.168 . 50.3 ,ttt(主); 192.168 . 50.
|
本文转自 lover007 51CTO博客,原文链接:http://blog.51cto.com/wangwei007/837898,如需转载请自行联系原作者