]> andersk Git - sql.git/blame - sbin/verify
misc /sbin utils
[sql.git] / sbin / verify
CommitLineData
1cc0573f
JP
1#!/usr/bin/python
2
3import time
4import MySQLdb as sql
5import MySQLdb.cursors
6
7srvs = ['kitchen-sink', 'sliced-bread']
8cxns, curs = {}, {}
9for s in srvs:
10 cxns[s] = sql.connect(s, read_default_file='~/.my.cnf', cursorclass=sql.cursors.DictCursor)
11 curs[s] = cxns[s].cursor()
12
13dbs = {}
14for s in srvs:
15 curs[s].execute('SHOW DATABASES')
16 dbs[s] = map(lambda elt: elt.values()[0], curs[s].fetchall())
17 if 'information_schema' in dbs[s]:
18 dbs[s].remove('information_schema')
19
20all = []
21for s in dbs.values():
22 all.extend(s)
23all = list(set(all))
24all.sort()
25
26from pprint import pprint
27
28for db in all:
29 if db < 'geofft':
30 continue
31 stat = {}
32 tables = []
33 keys = []
34 for s in srvs:
35 stat[s] = {}
36 curs[s].execute('SHOW TABLE STATUS FROM `%s`' % db)
37 r = curs[s].fetchall()
38 for x in r:
39 if x['Engine'] != 'MyISAM':
40 continue
41 tables.append(x['Name'])
42 stat[s][x['Name']] = x
43 keys.extend(x.keys())
44 keys = list(set(keys))
45 tables = list(set(tables))
46
47 for t in tables:
48 verified = True
49 for k in keys:
50 if k in ['Check_time', 'Comment', 'Create_time', 'Update_time']:
51 continue
52 vals = {}
53 for s in srvs:
54 if not t in stat[s]:
55 stat[s][t] = {}
56 vals[s] = stat[s][t].get(k, None)
57 v = list(set(vals.values()))
58 if len(v) > 1:
59 print '%s.%s[%s]: %s' % (db, t, k, str(vals))
60 verified = False
61 print '%s.%s VERIFY' % (db, t), verified
This page took 0.173485 seconds and 5 git commands to generate.