]> andersk Git - sql.git/blob - sbin/verify
misc /sbin utils
[sql.git] / sbin / verify
1 #!/usr/bin/python
2
3 import time
4 import MySQLdb as sql
5 import MySQLdb.cursors
6
7 srvs = ['kitchen-sink', 'sliced-bread']
8 cxns, curs = {}, {}
9 for 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
13 dbs = {}
14 for 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
20 all = []
21 for s in dbs.values():
22     all.extend(s)
23 all = list(set(all))
24 all.sort()
25
26 from pprint import pprint
27
28 for 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.141527 seconds and 5 git commands to generate.