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

本文涉及的产品
RDS Agent(兼容OpenClaw),2核4GB
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介:

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/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  in  iplist.split( ";" ):
             hostlist.append(i.split( "," ))
         for  in  range ( len (hostlist)):
             host  =  hostlist[i][ 0 ]
             hostname  =  hostlist[i][ 1 ]
             =  threading.Thread(target = self .mysql_check,args = (host,hostname,i))
             threads.append(t)
             t.start()
             time.sleep( 0.05 )
         for  in  range ( len (hostlist)):
             threads[i].join()
         self .w.sort()
         for  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  in  range ( len (table_list)):
         table  =  table_list[i]
         print  "Table Count:  "  +  table
         print
         boss  =  Check()
         boss.wd(table)
         print


config.ini文件格式如下:

1
2
[ global ]
iplist  =  192.168 . 50.1 ,vvv(主); 192.168 . 50.2 ,vvv(从); 192.168 . 50.3 ,ttt(主); 192.168 . 50.




 本文转自 lover007 51CTO博客,原文链接:http://blog.51cto.com/wangwei007/837898 ,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
存储 缓存 数据库
解决缓存与数据库的数据一致性问题的终极指南
解决缓存与数据库的数据一致性问题的终极指南
921 63
|
消息中间件 canal 缓存
项目实战:一步步实现高效缓存与数据库的数据一致性方案
Hello,大家好!我是热爱分享技术的小米。今天探讨在个人项目中如何保证数据一致性,尤其是在缓存与数据库同步时面临的挑战。文中介绍了常见的CacheAside模式,以及结合消息队列和请求串行化的方法,确保数据一致性。通过不同方案的分析,希望能给大家带来启发。如果你对这些技术感兴趣,欢迎关注我的微信公众号“软件求生”,获取更多技术干货!
780 6
项目实战:一步步实现高效缓存与数据库的数据一致性方案
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
410 68
|
存储 SQL 关系型数据库
MySQL事务处理:如何确保数据一致性与可靠性
事务(Transaction)是数据库管理系统(DBMS)中的一个核心概念。MySQL 事务是指**一组数据库操作**,作为一个整体进行处理,确保要么全部成功,要么全部失败。
645 15
MySQL事务处理:如何确保数据一致性与可靠性
|
缓存 NoSQL 关系型数据库
Redis与MySQL的数据一致性
在高并发环境下,保持 Redis 和 MySQL 的数据一致性是一个复杂但重要的问题。通过采用读写穿透、写穿透、分布式锁、双写一致性保障和延时双删策略,可以有效地减少数据不一致的风险,确保系统的稳定性和可靠性。通过合理的缓存策略和数据同步机制,可以显著提升系统的性能和用户体验。
834 22
|
SQL 存储 关系型数据库
MySQL主从复制 —— 作用、原理、数据一致性,异步复制、半同步复制、组复制
MySQL主从复制 作用、原理—主库线程、I/O线程、SQL线程;主从同步要求,主从延迟原因及解决方案;数据一致性,异步复制、半同步复制、组复制
1939 11
|
NoSQL 关系型数据库 MySQL
当Redis与MySQL数据一致性校验中Redis数据量小于MySQL时的全量查询处理方法
保持Redis和MySQL之间的数据一致性是一个需要细致规划和持续维护的过程。通过全量数据同步、建立增量更新机制,以及定期执行数据一致性校验,可以有效地管理和维护两者之间的数据一致性。此外,利用现代化的数据同步工具可以进一步提高效率和可靠性。
263 6
|
消息中间件 缓存 NoSQL
15)如何保证缓存和数据库之间的数据一致性
15)如何保证缓存和数据库之间的数据一致性
511 1
|
SQL 监控 关系型数据库
MySQL数据库中如何检查一条SQL语句是否被回滚
检查MySQL中的SQL语句是否被回滚需要综合使用日志分析、事务状态监控和事务控制语句。理解和应用这些工具和命令,可以有效地管理和验证数据库事务的执行情况,确保数据的一致性和系统的稳定性。此外,熟悉事务的ACID属性和正确设置事务隔离级别对于预防数据问题和解决事务冲突同样重要。
520 2
|
消息中间件 Kafka 数据库
深入理解Kafka的数据一致性原理及其与传统数据库的对比
【8月更文挑战第24天】在分布式系统中,确保数据一致性至关重要。传统数据库利用ACID原则保障事务完整性;相比之下,Kafka作为高性能消息队列,采用副本机制与日志结构确保数据一致性。通过同步所有副本上的数据、维护消息顺序以及支持生产者的幂等性操作,Kafka在不牺牲性能的前提下实现了高可用性和数据可靠性。这些特性使Kafka成为处理大规模数据流的理想工具。
477 6

推荐镜像

更多