一种数据库集群节点间数据同步系统技术方案

技术编号:18084148 阅读:50 留言:0更新日期:2018-05-31 12:36
本发明专利技术公开了一种数据库集群节点间数据同步系统,涉及数据处理领域。所述系统包括配置单元、元数据存储单元、元数据判断单元、读写判断单元、Paxos同步单元、日志存储单元和日志重现单元。本发明专利技术解决了现有数据库同步方法中异步方式可能导致数据库集群数据不一致的问题,也解决了同步方式可能因为某个节点阻塞导致性能低下的问题;最后,本发明专利技术所述数据库集群节点间数据同步系统也支持不同方向的数据同步,没有只能将数据从主数据库同步到从数据库的限制。

【技术实现步骤摘要】
一种数据库集群节点间数据同步系统
本专利技术涉及数据处理领域,尤其涉及一种数据库集群节点间数据同步系统。
技术介绍
在分布式数据库系统中,解决单点故障和单点性能瓶颈问题,主要有三种方法:主从复制(MasterSlaveReplication)、故障转移群集(FailoverClustering,也称为主备模式)和多主复制(Multi-MasterReplication)。主从复制中,集群中的一个节点被指定为主节点,只有该主节点允许写操作,其它节点只提供读操作,只允许一个节点进行写操作可以更容易实现集群数据的一致性。在主备模式中,正常情况下主节点对外提供服务,一个或多个备节点从主节点中拉取数据进行同步;当主节点异常时,通过选举算法选取一个备节点取代主节点继续对外提供服务。在多主复制中,所有主节点都能对外提供读写服务,多主复制系统负责将某个主节点的数据更改传递给其余主节点,并解决不同主节点成员之间并发更改导致的数据冲突。不论采用上述三种方式中的哪种方式解决单点故障和单点性能瓶颈问题,最重要的都是实现多个节点之间的数据同步。现有数据库数据同步方法为两类:基于事务的同步方法和基于日志的同步方法,这两种方法都有同步和异步的区别。前者中的异步事务同步方法把数据更改提交到延迟事务队列,集群中的所有节点会周期性地执行队列中的事务;前者中的同步事务同步方法使用两阶段提交的方式保证集群中所有节点之间的数据一致性。后者中的异步日志同步方法不等待所有节点返回日志同步成功消息则直接返回;后者中同步日志同步方法则会等待直到所有节点返回日志同步成功才返回操作成功的结果。虽然基于事务的同步方法和基于日志的同步方法实现了数据库集群中节点之间的数据同步,但仍存在以下不足:1、基于事务的同步方法和基于日志的同步方法是针对整个数据库实例,无法做到DB级或表级的数据同步。2、现有数据库同步方法中异步方式可能导致数据库集群数据不一致的问题,例如:从数据库中只有部分节点日志同步成功时,如果主数据库宕机,就会造成从数据库节点之间数据的不一致。3、现有数据库同步方法可能因为某个节点阻塞导致性能低下的问题同步数据同步方法虽然保证了数据的一致性,但它要求所有从节点都返回日志同步结果后才能实现同步,如果某个从数据库由于网络延迟或者性能问题迟迟没有返回日志同步结果,就会导致阻塞整个集群。4、现有数据库同步方法都是单方向的,只能将数据从主数据库同步到从数据库,而无法实现任意节点之间的数据同步。
技术实现思路
本专利技术的目的在于提供一种数据库集群节点间数据同步系统,从而解决现有技术中存在的前述问题。为了实现上述目的,本专利技术所述数据库集群节点间数据同步系统,所述系统包括:配置单元:负责将数据库集群中需要实现数据同步的多个节点和/或多个表组建成同一个分组;元数据存储单元:存储节点所属分组的信息、任意一个分组中包含的节点信息和/或表信息;元数据判断单元:遍历SQL语句中涉及的所有表,根据元数据存储单元中的表信息判断该SQL语句是否涉及同步表,如果否,则正常执行SQL语句;如果是,则将该同步表信息和SQL语句发送给读写判断单元;读写判断单元:判断接收到的SQL语句是同步表的写操作还是读操作,如果是写操作,则将该同步表信息发送给Paxos同步单元;如果是读操作,则将该同步表信息发送给日志重现单元;Paxos同步单元:根据接收到的同步表信息,进行该同步表所属分组中多个节点之间的日志同步并执行写操作,同时,将写操作日志保存在各个节点的日志存储单元;日志存储单元:存储同步表的写操作日志;日志重现单元:依据同步表信息从日志存储单元中获取该同步表的写操作日志,通过日志重做使该同步表达到最新的一致状态,然后再进行读操作。优选地,所述Paxos同步单元实现信息同步,具体为:S1,将客户端连接,以对同步表进行写操作的集群节点作为提议者,提议者选择一个提议序号n,所述提议序号n采用高位时间戳和低位服务器id的方式生成;S2,提议者向数据库集群的所有接受者发送准备请求,所述准备请求中携带提议编号n;S3,任意一个接受者收到所述准备请求后,进行如下:所述准备请求中携带提议编号n比该接受者之前响应过的其他请求携带的提议编号都大,则该接受者响应所述准备请求,并承诺不会响应之后接收到的其它任何提议编号小于等于n的请求;如果在接受所述准备请求前还响应过其他请求,则将最大提议编号及其对应的内容反馈给提议者;如果在接受所述准备请求前未响应过其他请求,则反馈给提议者空值;S4,当提议者接收到大多数接受者的响应后,检查所有响应中是否有已被接受的提议返回;如果任意一个响应中返回值不为空,则有已被接受的提议返回,将序号最高的提议对应的值替代该提议的初始值作为计算值,进入S5;如果所有响应中返回值都是空,将提议的初始值作为计算值,进入S5;S5,提议者向集群中的所有接受者广播接受请求,所述接受请求中包括提议序号n和S4中的计算值;S6,接受者收到所述接受请求后,将接受请求中的提议序号和当前minProposal进行比较,如果接收到的提议序号小于当前minProposal,则拒绝该接受请求,并将当前minProposal作为返回值反馈给提议者;如果接收到的提议序号大于等于当前minProposal,则接受该接受请求,然后保存该接受请求中的提议序号及计算值,同时,将minProposal更新为接受请求中的提议序号,然后将最新minProposal作为返回值反馈给提议者;S7,当提议者接收到大多数接受者的响应后,提议者将收到返回值与所述接受请求的提议编号n进行比较,判断是否存在任意一个返回值大于提议者的提议编号,如果是,则返回S1,进行下一轮信息同步,下一轮信息同步的提议者选取的提议编号为所有返回值中提议编号最大的下一个值;如果否,则所有接受者都接受所述接受请求,所述接受请求中的提议值被选定,达到一致性状态,信息同步结束执行。本专利技术的有益效果是:本专利技术所述数据库集群节点间数据同步系统,实现了数据库集群中多个节点之间进行数据同步,且支持基于表级、细粒度的同步配置,支持部分或全部节点之间的数据同步,而且更改同步策略也非常简单,只需要执行一些同步配置命令(也是一些SQL语句),不需要重新修改数据库配置文件。另外,本专利技术所述数据库集群节点间数据同步系统既能保证数据的强一致性,又具有较高的性能,解决现有数据库同步方法中异步方式可能导致数据库集群数据不一致的问题,也解决了同步方式可能因为某个节点阻塞导致性能低下的问题;最后,本专利技术所述数据库集群节点间数据同步系统也支持不同方向的数据同步,没有只能将数据从主数据库同步到从数据库的限制。附图说明图1是数据库集群节点间数据同步系统的结构示意图;图2是Paxos协议流程。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本专利技术,并不用于限定本专利技术。关于本申请中的英文或英文缩写的说明:1、Group表示分组,分组中包括需要实现数据同步的节点和表,并将分组中包括的表称之为同步表。2、Table表示表,Redo表示重做。3、Proposer:提议发起者,它向集群发送提议请求,以便决定提议的值是否可本文档来自技高网
...
一种数据库集群节点间数据同步系统

【技术保护点】
一种数据库集群节点间数据同步系统,其特征在于,所述系统包括:配置单元:负责将数据库集群中需要实现数据同步的多个节点和/或多个表组建成同一个分组;元数据存储单元:存储节点所属分组的信息、任意一个分组中包含的节点信息和/或表信息;元数据判断单元:遍历SQL语句中涉及的所有表,根据元数据存储单元中的表信息判断该SQL语句是否涉及同步表,如果否,则正常执行SQL语句;如果是,则将该同步表信息和SQL语句发送给读写判断单元;读写判断单元:判断接收到的SQL语句是同步表的写操作还是读操作,如果是写操作,则将该同步表信息发送给Paxos同步单元;如果是读操作,则将该同步表信息发送给日志重现单元;Paxos同步单元:根据接收到的同步表信息,进行该同步表所属分组中多个节点之间的日志同步并执行写操作,同时,将写操作日志保存在各个节点的日志存储单元;日志存储单元:存储同步表的写操作日志;日志重现单元:依据同步表信息从日志存储单元中获取该同步表的写操作日志,通过日志重做使该同步表达到最新的一致状态,然后再进行读操作。

【技术特征摘要】
1.一种数据库集群节点间数据同步系统,其特征在于,所述系统包括:配置单元:负责将数据库集群中需要实现数据同步的多个节点和/或多个表组建成同一个分组;元数据存储单元:存储节点所属分组的信息、任意一个分组中包含的节点信息和/或表信息;元数据判断单元:遍历SQL语句中涉及的所有表,根据元数据存储单元中的表信息判断该SQL语句是否涉及同步表,如果否,则正常执行SQL语句;如果是,则将该同步表信息和SQL语句发送给读写判断单元;读写判断单元:判断接收到的SQL语句是同步表的写操作还是读操作,如果是写操作,则将该同步表信息发送给Paxos同步单元;如果是读操作,则将该同步表信息发送给日志重现单元;Paxos同步单元:根据接收到的同步表信息,进行该同步表所属分组中多个节点之间的日志同步并执行写操作,同时,将写操作日志保存在各个节点的日志存储单元;日志存储单元:存储同步表的写操作日志;日志重现单元:依据同步表信息从日志存储单元中获取该同步表的写操作日志,通过日志重做使该同步表达到最新的一致状态,然后再进行读操作。2.根据权利要求1所述数据库集群节点间数据同步系统,其特征在于,所述Paxos同步单元实现信息同步,具体为:S1,将客户端连接,以对同步表进行写操作的集群节点作为提议者,提议者选择一个提议序号n,所述提议序号n采用高位时间戳和低位服务器id的方式生成;S2,提议者向数据库集群的所有接受者发送准备请求,所述准备请求中携带提议编号n;S3,任意一个接受者收到所述准备请求后,进行如下:所述准备请求中携带提议编号n比该接受者之前响应过的其他请求携带的提议编号都大,则该接受者响应所...

【专利技术属性】
技术研发人员:程学旗罗远浩郑天祺何文婷余智华许洪波曹雷
申请(专利权)人:中国科学院计算技术研究所中科天玑数据科技股份有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1