检查mysql主从重要表数据一致性

mysql数据库主从做起来不难,但是主从数据的一致性很重要,本脚本用于粗略检查mysql数据库主从重要表的数据一致性,主要是在主从正常的情况下,连接数据库统计表的条数是否一致,脚本分为两部分,一个是py脚本,一个是ini配置文件,py脚本源码如下:

#!/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 文件格式如下

[global]
iplist = 192.168.50.1,vvv(主);192.168.50.2,vvv(从);192.168.50.3,ttt(主);192.168.50.4,ttt(从)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • MySQL技术内幕:InnoDB存储引擎(第2版) 姜承尧 第1章 MySQL体系结构和存储引擎 >> 在上述例子...
    沉默剑士阅读 7,676评论 0 16
  • 什么是数据库? 数据库是存储数据的集合的单独的应用程序。每个数据库具有一个或多个不同的API,用于创建,访问,管理...
    chen_000阅读 4,170评论 0 19
  • k,19岁第一次恋爱。喝醉后与当时的男友睡在了一张床上,由此确定了恋爱关系。醒来后k感觉无比的尴尬和后悔,两年半后...
    萌妈呀阅读 4,396评论 0 0
  • 暑假回老家,上厕所的时候,发现母亲家厕所垃圾桶没有盖……当我那垃圾扔进厕所后,突然有一个想法,我家垃圾桶虽然有盖,...
    ToBeMself阅读 373评论 0 0
  • YY躺在一个恰好可以容纳两个人的沙发,YY可以完完全全地靠在你身上,我们俩一起看你最喜欢看的钢铁侠。 YY初春,和...
    YY情书阅读 393评论 0 0

友情链接更多精彩内容