CN105468727A - 基于zookeeper实现MySQL强一致性复制方法 - Google Patents

基于zookeeper实现MySQL强一致性复制方法 Download PDF

Info

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
Application number
CN201510813170.6A
Other languages
English (en)
Inventor
张旭刚
郭加鹏
李东辉
俞俊
朱广新
郑磊
石浩瀚
闫献锋
徐戟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Integration Of Information System Branch Office Of Nanjing Nanrui Group Co ltd
State Grid Corp of China SGCC
Nanjing NARI Group Corp
Original Assignee
Integration Of Information System Branch Office Of Nanjing Nanrui Group Co ltd
State Grid Corp of China SGCC
Nanjing NARI Group Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Integration Of Information System Branch Office Of Nanjing Nanrui Group Co ltd, State Grid Corp of China SGCC, Nanjing NARI Group Corp filed Critical Integration Of Information System Branch Office Of Nanjing Nanrui Group Co ltd
Priority to CN201510813170.6A priority Critical patent/CN105468727A/zh
Publication of CN105468727A publication Critical patent/CN105468727A/zh
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, 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

基于zookeeper实现MySQL强一致性复制方法
技术领域
本发明涉及一种实现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之后连接又可以被其它线程检测到并执行了。
CN201510813170.6A 2015-11-20 2015-11-20 基于zookeeper实现MySQL强一致性复制方法 Withdrawn CN105468727A (zh)

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)

* Cited by examiner, † Cited by third party
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 恒生电子股份有限公司 资源的申请方法、装置、电子设备及存储介质

Cited By (14)

* Cited by examiner, † Cited by third party
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