CN105468727A - 基于zookeeper实现MySQL强一致性复制方法 - Google Patents
基于zookeeper实现MySQL强一致性复制方法 Download PDFInfo
- Publication number
- CN105468727A CN105468727A CN201510813170.6A CN201510813170A CN105468727A CN 105468727 A CN105468727 A CN 105468727A CN 201510813170 A CN201510813170 A CN 201510813170A CN 105468727 A CN105468727 A CN 105468727A
- Authority
- CN
- China
- Prior art keywords
- mysql
- zookeeper
- thread
- dbagent
- master
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000012544 monitoring process Methods 0.000 claims abstract description 8
- 230000001360 synchronised effect Effects 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 11
- 239000000203 mixture Substances 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 4
- 230000010076 replication Effects 0.000 description 4
- 230000007423 decrease Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000005303 weighing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供基于zookeeper实现MySQL强一致性复制方法,设置系统包括:zookeeper、dbagent和MySQL;zookeeper作为协调器,监控和管理系统资源;dbagent部署在MySQL上,负责向keeper上报MySQL实例的状态;dbagent由mysqlreport和mysqltransfer两个模块构成,mysqltransfer用于自动扩容,mysqlreport用于上报心跳信息、资源信息。本发明通过zookeeper监控和管理主从数据复制的一致性、主从数据库的切换、服务器负载等,实现一种高性能、高可靠、易管理的分布式数据库集群。
Description
技术领域
本发明涉及一种实现MySQL强一致性复制方法,具体涉及基于zookeeper实现MySQL强一致性复制方法。
背景技术
分布式数据系统中,有一个CAP原理,由三个要素组成,包括一致性(Consistency)、可用性(Availability)和分区容忍性(Partitiontolerance),这三个要素最多只能同时实现两点,不可能三者兼顾。对于分布式数据系统,分区容忍性是基本要求,因此设计分布式数据系统,需要在一致性和可用性之间取平衡。对于大多数应用系统,并不需要强一致性,因而牺牲一致性而换取高可用性,是目前多数分布式数据库产品的方向。但在计费、ERP等系统中,对数据的一致性要求很高,数据库承受的压力也很大,在保证可用性和分区容忍性的同时,应当尽可能提高数据一致性的实时性,使产品具有更广泛的应用场景。
MySQL的复制模式有异步、半同步、同步等模式。在MySQL发展的早期,采取异步复制技术,由于主数据库只管把BinaryLog发出去,而不关心从数据库是否收到,在当时满足业务的需求。到MySQL5.5后,Google提供了一个半同步半异步的插件,确保必须收到一个备机的应答才让事务在主机中提交,当备机应答超时的情况下,强同步就会自动退化成异步模式,相对对异步复制,半同步在数据的可靠性方面提高很多,在主机本身故障的情况下,基本能保证不丢失事务,至少有一个备机上存在。同时数据复制的一致性难以监控。通过showslavestatus\G获取的Seconds_Behind_Master参数的值不能真实反映主从数据一致性的偏差。
除了异步和半同步模式,还有同步集群方案,主要有MySQLNDBCluster、PerconaXtraDBCluster和MariaDBGaleraCluster,MySQLNDBCluster基于全内存,只支持ReadCommitted事务隔离级别,需要把引擎Innodb为NDB,需要高速网络环境支持,这些限制使得MySQLNDBCluster很难得到广泛应用。
MariaDBGaleraCluster是一套在MySQLInnoDB存储引擎上面实现multi-master及数据实时同步的系统架构,业务层面无需做读写分离工作,数据库读写压力都能按照既定的规则分发到各个节点上去,可对集群中任一节点进行数据读写,若其中一个节点变慢,则整个系统处理能力随之降低,同时MariaDBGaleraCluster维护和管理复杂,在跨数据中心时性能下降比较大。
发明内容
本发明为解决上述异步和半同步复制的数据一致性效率低且难以监控,同步复制在跨数据中心时的性能降低问题,本发明提供一种强一致性主从数据库复制方法,并通过zookeeper监控和管理主从数据复制的一致性、主从数据库的切换、服务器负载等,实现一种高性能、高可靠、易管理的分布式数据库集群。
基于zookeeper实现MySQL强一致性复制的方法,设置系统包括:zookeeper、dbagent和MySQL;
zookeeper作为协调器,监控和管理系统资源;
dbagent部署在MySQL上,负责向keeper上报MySQL实例的状态;dbagent由mysqlreport和mysqltransfer两个模块构成,mysqltransfer用于自动扩容,mysqlreport用于上报心跳信息、资源信息。
进一步的,系统还包括scheduler,用来监控整个集群状态以及DDL操作,控制容灾切换流程和扩容流程。
进一步的,在主从数据库上创建一张表SysDB.StatusTable,dbagent将当前当前时间戳、ip、端口通过replaceinto方式写入SysDB.StatusTable表,mysqlreport默认3秒连接一次mysql,并对sysdb.statustable表进行读操作,根据master同步过来的时间、slave写入的时间进行相减,计算出时间差值作为延迟的时间,将以上获取的数据库信息写入zookeeper的hbIP地址_端口号位置上,写入信息:{"agentbindport":"57086","autorebuildms":"1","conn_err":"0","conn_info":"","delay":"0","gtiddelay":"","read_err":"0","read_info":"","repl":"0","svrtype":"master","ver":"1.0","write_err":"0","write_info":""},其中delay值代表主从数据复制的延迟,单位为秒,0表示无延迟。
进一步的,将MySQL线程池模型的执行SQL的逻辑部分拆成两个部分:
上半部分,任务执行到写binlog为止,然后将会话保存到session中,接着执行下一轮循环去处理其他请求了,这样就避免让线程阻塞等待应答了;
然后MySQL自身负责主备同步的dump线程会将binlog立即发送出去,备机的io线程收到binlog并写入到relaylog之后,再通过udp给主机一个应答;
在主机上,开一组线程来处理应答,收到应答之后找到对应的会话,执行下半部分的commit,send应答,绑定到epoll操作;绑定到epoll之后连接又可以被其它线程检测到并执行了。
本发明的有益效果是:解决了MySQL异步和半同步复制的数据一致性效率低且难以监控,以及同步复制在跨数据中心时的性能降低问题,通过zookeeper监控和管理主从数据复制的一致性、主从数据库的切换、服务器负载等,实现一种高性能、高可靠、易管理的分布式数据库集群。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1是本发明系统结构示意图;
图2是本发明复制一致性示意图;
图3是一个连接一个线程模型示意图;
图4是线程池模型示意图;
图5是本发明强一致性复制流程图。
具体实施方式
如图1-5所示,本发明公开一种基于zookeeper实现MySQL强一致性复制方法。
如图1所示,基于zookeeper实现MySQL强一致性复制:为解决主从数据库间复制效率低、数据一致性难以监控等问题,本发明提供一种基于zookeeper实现的MySQL强一致性复制方法,包括:zookeeper、dbagent和MySQL,zookeeper作为协调器,监控和管理系统资源,dbagent部署在MySQL上,负责向keeper上报MySQL实例的状态,包括实例的可用性、复制的一致性、服务器负载等,dbagent由mysqlreport和mysqltransfer两个模块构成,mysqltransfer用于自动扩容,mysqlreport用于上报心跳信息、资源信息,scheduler用来监控整个集群状态以及DDL操作,控制容灾切换流程和扩容流程。
如图2所示,数据一致性监控:主从数据库的一致性监控通常是在从库上执行语句showslavestatus\G获取Seconds_Behind_Master参数的值来判断,但这个值通常不能反映主从数据库一致性的真实情况。Seconds_Behind_Master是通过比较sql_thread执行的event的timestamp和io_thread复制的event的timestamp进行比较得到的一个差值。当主库I/O负载很大或是网络阻塞,io_thread复制binlog的速度会非常慢或停滞,此时sql_thread一直都能及时应用io_thread的复制,Seconds_Behind_Master的值是0,表示是没有无延时的,实际主从数据一致性延迟非常严重。
为解决以上问题,本发明通过在主从数据库上创建一张表SysDB.StatusTable,dbagent将当前当前时间戳、ip、端口通过replaceinto方式写入SysDB.StatusTable表,mysqlreport默认3秒连接一次mysql,并对sysdb.statustable表进行读操作,根据master同步过来的时间、slave写入的时间进行相减,计算出时间差值作为延迟的时间,将以上获取的数据库信息写入zookeeper的hbIP地址_端口号位置上,写入信息:{"agentbindport":"57086","autorebuildms":"1","conn_err":"0","conn_info":"","delay":"0","gtiddelay":"","read_err":"0","read_info":"","repl":"0","svrtype":"master","ver":"1.0","write_err":"0","write_info":""},其中delay值代表主从数据复制的延迟,单位为秒,0表示无延迟。
如图3-5所示,强一致性复制:半同步半异步是较轻量级的高一致性容灾方案,但是受限于已有的同步网络模型,CPU利用不起来,在MySQL5.6企业版和MariaDB、Percona中引入了线程池,如果在线程池基础之上做一些修改,参考半同步的思路可以实现一个高性能的强同步方案,做法是采用与Linux内核处理中断的思路:将MySQL5.6线程池模型的第三个环节(执行SQL的逻辑)拆成两个部分:
1)上半部分,任务执行到写binlog为止,然后将会话保存到session中,接着执行下一轮循环去处理其他请求了,这样就避免让线程阻塞等待应答了;
2)然后MySQL自身负责主备同步的dump线程会将binlog立即发送出去,备机的io线程收到binlog并写入到relaylog之后,再通过udp给主机一个应答;
3)在主机上,开一组线程来处理应答,收到应答之后找到对应的会话,执行下半部分的commit,send应答,绑定到epoll等操作。绑定到epoll之后这个连接又可以被其它线程检测到并执行了。
该同步方法完全独立于原生的主从复制系统,保证数据在切换、或进行读写分离时数据的一致性。当主备数据延迟超过了一定的阀值时(可配置),就不会发生主从切换、进行读写分离操作。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.基于zookeeper实现MySQL强一致性复制方法,其特征在于,设置系统包括:zookeeper、dbagent和MySQL;
zookeeper作为协调器,监控和管理系统资源;
dbagent部署在MySQL上,负责向keeper上报MySQL实例的状态;dbagent由mysqlreport和mysqltransfer两个模块构成,mysqltransfer用于自动扩容,mysqlreport用于上报心跳信息、资源信息。
2.根据权利要求1所述的基于zookeeper实现MySQL强一致性复制方法,其特征在于,系统还包括scheduler,用来监控整个集群状态以及DDL操作,控制容灾切换流程和扩容流程。
3.根据权利要求1或2所述的基于zookeeper实现MySQL强一致性复制方法,其特征在于,在主从数据库上创建一张表SysDB.StatusTable,dbagent将当前当前时间戳、ip、端口通过replaceinto方式写入SysDB.StatusTable表,mysqlreport默认3秒连接一次mysql,并对sysdb.statustable表进行读操作,根据master同步过来的时间、slave写入的时间进行相减,计算出时间差值作为延迟的时间,将以上获取的数据库信息写入zookeeper的hbIP地址_端口号位置上,写入信息:{"agentbindport":"57086","autorebuildms":"1","conn_err":"0","conn_info":"","delay":"0","gtiddelay":"","read_err":"0","read_info":"","repl":"0","svrtype":"master","ver":"1.0","write_err":"0","write_info":""},其中delay值代表主从数据复制的延迟,单位为秒,0表示无延迟。
4.根据权利要求1所述的基于zookeeper实现MySQL强一致性复制的方法,其特征在于,将MySQL线程池模型的执行SQL的逻辑部分拆成两个部分:
上半部分,任务执行到写binlog为止,然后将会话保存到session中,接着执行下一轮循环去处理其他请求了,这样就避免让线程阻塞等待应答了;
然后MySQL自身负责主备同步的dump线程会将binlog立即发送出去,备机的io线程收到binlog并写入到relaylog之后,再通过udp给主机一个应答;
在主机上,开一组线程来处理应答,收到应答之后找到对应的会话,执行下半部分的commit,send应答,绑定到epoll操作;绑定到epoll之后连接又可以被其它线程检测到并执行了。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510813170.6A CN105468727A (zh) | 2015-11-20 | 2015-11-20 | 基于zookeeper实现MySQL强一致性复制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510813170.6A CN105468727A (zh) | 2015-11-20 | 2015-11-20 | 基于zookeeper实现MySQL强一致性复制方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105468727A true CN105468727A (zh) | 2016-04-06 |
Family
ID=55606428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510813170.6A Withdrawn CN105468727A (zh) | 2015-11-20 | 2015-11-20 | 基于zookeeper实现MySQL强一致性复制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105468727A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106407042A (zh) * | 2016-09-06 | 2017-02-15 | 深圳市华成峰数据技术有限公司 | 一种基于开源数据库的跨数据中心容灾解决系统及方法 |
CN107819605A (zh) * | 2016-09-14 | 2018-03-20 | 北京百度网讯科技有限公司 | 用于在服务器集群中切换服务器的方法和装置 |
CN108319617A (zh) * | 2017-01-17 | 2018-07-24 | 阿里巴巴集团控股有限公司 | 确定数据库主从差异的方法、装置及切换控制方法、装置 |
CN108400881A (zh) * | 2017-02-08 | 2018-08-14 | 阿里巴巴集团控股有限公司 | 基于状态机的消息引擎动态调整方法、装置及电子设备 |
CN109117432A (zh) * | 2017-06-22 | 2019-01-01 | 北京京东尚科信息技术有限公司 | 一种获取数据的方法及装置 |
CN109753511A (zh) * | 2018-12-28 | 2019-05-14 | 北京东方国信科技股份有限公司 | 一种大数据平台的跨地域实时同步方法及系统 |
CN110134372A (zh) * | 2019-07-10 | 2019-08-16 | 启迪云计算有限公司 | 一种基于规则的zookeeper session外部管理系统 |
CN110543512A (zh) * | 2018-05-29 | 2019-12-06 | 优信拍(北京)信息科技有限公司 | 一种信息同步方法,装置及系统 |
WO2020025049A1 (zh) * | 2018-08-02 | 2020-02-06 | 中兴通讯股份有限公司 | 数据同步的方法、装置、数据库主机及存储介质 |
CN112948346A (zh) * | 2019-11-26 | 2021-06-11 | 马上消费金融股份有限公司 | 数据库的切换方法、装置、设备及计算机可读存储介质 |
CN113656162A (zh) * | 2021-08-18 | 2021-11-16 | 恒生电子股份有限公司 | 资源的申请方法、装置、电子设备及存储介质 |
-
2015
- 2015-11-20 CN CN201510813170.6A patent/CN105468727A/zh not_active Withdrawn
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106407042A (zh) * | 2016-09-06 | 2017-02-15 | 深圳市华成峰数据技术有限公司 | 一种基于开源数据库的跨数据中心容灾解决系统及方法 |
CN107819605A (zh) * | 2016-09-14 | 2018-03-20 | 北京百度网讯科技有限公司 | 用于在服务器集群中切换服务器的方法和装置 |
CN108319617A (zh) * | 2017-01-17 | 2018-07-24 | 阿里巴巴集团控股有限公司 | 确定数据库主从差异的方法、装置及切换控制方法、装置 |
CN108400881A (zh) * | 2017-02-08 | 2018-08-14 | 阿里巴巴集团控股有限公司 | 基于状态机的消息引擎动态调整方法、装置及电子设备 |
CN108400881B (zh) * | 2017-02-08 | 2021-11-05 | 阿里巴巴集团控股有限公司 | 基于状态机的消息引擎动态调整方法、装置及电子设备 |
CN109117432A (zh) * | 2017-06-22 | 2019-01-01 | 北京京东尚科信息技术有限公司 | 一种获取数据的方法及装置 |
CN110543512A (zh) * | 2018-05-29 | 2019-12-06 | 优信拍(北京)信息科技有限公司 | 一种信息同步方法,装置及系统 |
CN110807062A (zh) * | 2018-08-02 | 2020-02-18 | 中兴通讯股份有限公司 | 一种数据同步的方法、装置和数据库主机 |
WO2020025049A1 (zh) * | 2018-08-02 | 2020-02-06 | 中兴通讯股份有限公司 | 数据同步的方法、装置、数据库主机及存储介质 |
CN109753511A (zh) * | 2018-12-28 | 2019-05-14 | 北京东方国信科技股份有限公司 | 一种大数据平台的跨地域实时同步方法及系统 |
CN110134372A (zh) * | 2019-07-10 | 2019-08-16 | 启迪云计算有限公司 | 一种基于规则的zookeeper session外部管理系统 |
CN112948346A (zh) * | 2019-11-26 | 2021-06-11 | 马上消费金融股份有限公司 | 数据库的切换方法、装置、设备及计算机可读存储介质 |
CN112948346B (zh) * | 2019-11-26 | 2023-05-02 | 马上消费金融股份有限公司 | 数据库的切换方法、装置、设备及计算机可读存储介质 |
CN113656162A (zh) * | 2021-08-18 | 2021-11-16 | 恒生电子股份有限公司 | 资源的申请方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105468727A (zh) | 基于zookeeper实现MySQL强一致性复制方法 | |
US11360854B2 (en) | Storage cluster configuration change method, storage cluster, and computer system | |
US20240223510A1 (en) | Scalable leadership election in a multi-processing computing environment | |
US10621049B1 (en) | Consistent backups based on local node clock | |
WO2019154394A1 (zh) | 分布式数据库集群系统、数据同步方法及存储介质 | |
US8346719B2 (en) | Multi-node replication systems, devices and methods | |
US8301600B1 (en) | Failover recovery in a distributed data store | |
US7814360B2 (en) | Synchronizing cluster time to a master node with a faster clock | |
CN107402722B (zh) | 一种数据迁移方法及存储设备 | |
US20100023564A1 (en) | Synchronous replication for fault tolerance | |
US20160154711A1 (en) | Flash copy for disaster recovery (dr) testing | |
US9143394B2 (en) | System and method for graph based K-redundant resiliency for IT cloud | |
US20170168756A1 (en) | Storage transactions | |
CN114466027B (zh) | 一种云原生数据库服务提供方法、系统、设备及介质 | |
WO2018054079A1 (zh) | 一种存储文件的方法、第一虚拟机及名称节点 | |
US20140156598A1 (en) | Replication control using eventually consistent meta-data | |
WO2015169067A1 (en) | Method, device, and system for peer-to-peer data replication and method, device, and system for master node switching | |
WO2011158387A1 (ja) | データ処理の障害回復方法、システムおよびプログラム | |
CN108810150B (zh) | 协同办公系统应用级灾备系统的数据复制方法 | |
US9262290B2 (en) | Flash copy for disaster recovery (DR) testing | |
CN110489491B (zh) | 一种适用于a/b网双集群的全量数据同步装置 | |
US11042454B1 (en) | Restoration of a data source | |
WO2015196692A1 (zh) | 一种云计算系统以及云计算系统的处理方法和装置 | |
CN115048190B (zh) | 虚拟机快照管理方法、系统及计算机可读介质 | |
CN116389233A (zh) | 容器云管理平台主备切换系统、方法、装置和计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C04 | Withdrawal of patent application after publication (patent law 2001) | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20160406 |