检查mysql数据主从一致性
检查mysql数据主从一致性
小祁1124 发表于1年前
检查mysql数据主从一致性
  • 发表于 1年前
  • 阅读 3
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云实验室 1小时搭建人工智能应用,让技术更容易入门 免费体验 >>>   

 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 = ['adb.credit_log','adb.account','ddb.data']  
    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. [global]  
  2. iplist = 192.168.50.1,沧海一笑_adb(主);192.168.50.2,沧海一笑_adb(从);192.168.50.3,落英缤纷_adb(主);192.168.50.4,落英缤纷_adb(从) 
共有 人打赏支持
粉丝 15
博文 77
码字总数 18220
×
小祁1124
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: