#!/usr/bin/python import time import MySQLdb as sql import MySQLdb.cursors srvs = ['kitchen-sink', 'sliced-bread'] cxns, curs = {}, {} for s in srvs: cxns[s] = sql.connect(s, read_default_file='~/.my.cnf', cursorclass=sql.cursors.DictCursor) curs[s] = cxns[s].cursor() dbs = {} for s in srvs: curs[s].execute('SHOW DATABASES') dbs[s] = map(lambda elt: elt.values()[0], curs[s].fetchall()) if 'information_schema' in dbs[s]: dbs[s].remove('information_schema') all = [] for s in dbs.values(): all.extend(s) all = list(set(all)) all.sort() from pprint import pprint for db in all: if db < 'geofft': continue stat = {} tables = [] keys = [] for s in srvs: stat[s] = {} curs[s].execute('SHOW TABLE STATUS FROM `%s`' % db) r = curs[s].fetchall() for x in r: if x['Engine'] != 'MyISAM': continue tables.append(x['Name']) stat[s][x['Name']] = x keys.extend(x.keys()) keys = list(set(keys)) tables = list(set(tables)) for t in tables: verified = True for k in keys: if k in ['Check_time', 'Comment', 'Create_time', 'Update_time']: continue vals = {} for s in srvs: if not t in stat[s]: stat[s][t] = {} vals[s] = stat[s][t].get(k, None) v = list(set(vals.values())) if len(v) > 1: print '%s.%s[%s]: %s' % (db, t, k, str(vals)) verified = False print '%s.%s VERIFY' % (db, t), verified