掌桥专利:专业的专利平台
掌桥专利
首页

一种高效实现主副本数据完全一致性的方法

文献发布时间:2023-06-19 09:47:53


一种高效实现主副本数据完全一致性的方法

技术领域

本发明属于数据库领域,尤其是涉及一种高效实现主副本数据完全一致性的方法。

背景技术

集群数据库的表为了高可用,被横向切分成多个表分片,每个表分片有多个备份。如果其中一个节点上的数据备份出现问题不能被访问,例如宿主机物理故障,集群会把先关任务转发到备份节点。

要实现各计算节点上的T1_n1的各备份表数据实时一致,原来的执行逻辑是同时下发DML任务到主备节点上分别执行。各备份节点分别按照自己的并发逻辑执行可能导致主备对应行的数据不一致;另外,如果DML语句中包含时间函数等与环境相关的操作,更可能导致主备数据不一致。

发明内容

有鉴于此,本发明旨在提出一种高效实现主副本数据完全一致性的方法,以解决上述问题中的不足之处。

为达到上述目的,本发明的技术方案是这样实现的:

一种高效实现主副本数据完全一致性的方法,包括以下方法:

S1、解析DML任务后扫描相关表的数据;

S2、根据设定的关联条件逐条生成结果集;

S3、把结果集组成数据块;

S4、本地立即存储完成的数据块;

S5、依照存储顺序给数据块编号;

S6、把数据块加入异步发送队列;

S7、本地处理完所有数据块;

S8、确认备份节点存储完所有数据块。

进一步的,步骤S6中把数据块加入异步发送队列包括以下方法:

A1、异步处理模块发送数据块到备份节点;

A2、备份节点接受数据块;

A3、依照顺序存储数据块;

A4、返回确认信息。

进一步的,最耗时的DML的数据扫描和拼接过程只在主节点上执行,在主节点执行过程中,数据块首先存储在本地,同时把产生的数据块立即发送给备份节点,备份节点不需要重复执行相似的逻辑,直接接收主节点的数据并存储。

进一步的,主节点给数据块编号,保证和本地存储顺序一致,向备份节点异步发送数据块,不等待备份节点存储完,备份节点异步处理接收到的数据,依据数据块编号顺序存储,最后,回应主节点。

进一步的,备份节点只接收主节点的数据,没有执行过程,减少了备份节点的CPU和IO压力,因为执行结果是在一个节点上生成的,能够保证主备节点数据的一致。

进一步的,主节点处理完全部数据后,需要等待备份节点也处理完全部数据,在双方都完成任务后,主节点向客户端返回执行结果。

相对于现有技术,本发明所述的一种高效实现主副本数据完全一致性的方法具有以下优势:

1、本发明所述的一种高效实现主副本数据完全一致性的方法只在主节点执行主要逻辑,备份节点不执行,减少了减少了备份节点的CPU和IO压力;

2、本发明所述的一种高效实现主副本数据完全一致性的方法主节点发送数据块和备份节点接收数据块过程都是异步执行的,对主节点执行流程影响很小;

3、本发明所述的一种高效实现主副本数据完全一致性的方法数据块中的数据只有主节点生成,备份节点只是接收和存储数据块;

4、本发明所述的一种高效实现主副本数据完全一致性的方法主节点把数据块按照本地存储顺序编号,保证备份节点存储顺序一致;

5、本发明所述的一种高效实现主副本数据完全一致性的方法支持对数据的增删改操作。

附图说明

构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本发明实施例所述的执行流程图示意图。

具体实施方式

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

在本发明的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。

在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以通过具体情况理解上述术语在本发明中的具体含义。

下面将参考附图并结合实施例来详细说明本发明。

为彻底解决主备数据不一致问题,8a MPP提供了一种DML 复制转发机制(DRS)如图1所示,一种高效实现主副本数据完全一致性的方法,包括以下方法:

S1、解析DML任务后扫描相关表的数据;

S2、根据设定的关联条件逐条生成结果集;

S3、把结果集组成数据块;

S4、本地立即存储完成的数据块;

S5、依照存储顺序给数据块编号;

S6、把数据块加入异步发送队列;

S7、本地处理完所有数据块;

S8、确认备份节点存储完所有数据块。

步骤S6中把数据块加入异步发送队列包括以下方法:

A1、异步处理模块发送数据块到备份节点;

A2、备份节点接受数据块;

A3、依照顺序存储数据块;

A4、返回确认信息。

最耗时的DML的数据扫描和拼接过程只在主节点上执行,在主节点执行过程中,数据块首先存储在本地,同时把产生的数据块立即发送给备份节点,备份节点不需要重复执行相似的逻辑,直接接收主节点的数据并存储。

主节点给数据块编号,保证和本地存储顺序一致,向备份节点异步发送数据块,不等待备份节点存储完,备份节点异步处理接收到的数据,依据数据块编号顺序存储,最后,回应主节点。

备份节点只接收主节点的数据,没有执行过程,减少了备份节点的CPU和IO压力,因为执行结果是在一个节点上生成的,能够保证主备节点数据的一致。

主节点处理完全部数据后,需要等待备份节点也处理完全部数据,在双方都完成任务后,主节点想客户端返回执行结果。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 一种高效实现主副本数据完全一致性的方法
  • 一种确保分布式环境下主副本数据一致性的方法和系统
技术分类

06120112299798