一种基于分布式数据库CDC的事务原子性回放方法技术

技术编号:37627115 阅读:11 留言:0更新日期:2023-05-18 12:18
本发明专利技术提供一种基于分布式数据库CDC的事务原子性回放方法,属于分布式数据库技术领域,关于CDC的数据捕获,对于每个数据变更,记录相应的事务ID及操作,事务提交时,记录事务ID及事务涉及的操作数。回放时,从CDC队列中读取数据变更操作,根据事务ID进行聚合操作。在分布式数据库中基于CDC进行数据复制中,实现数据的事务原子性回放,用于保证备库数据的事务完整性。务完整性。务完整性。

【技术实现步骤摘要】
一种基于分布式数据库CDC的事务原子性回放方法


[0001]本专利技术涉及分布式数据库
,尤其涉及一种基于分布式数据库CDC的事务原子性回放方法。

技术介绍

[0002]CDC简介
[0003]CDC是change data capture,即变化数据捕捉。是数据库进行备份的一种方式,常用于大量数据的备份工作。
[0004]CDC的机制是在主集群对目标数据进行监控,当数据发生变更是,捕获增量的变更数据。
[0005]CDC存在的问题,不支持事务特性,只捕获了数据最终变更的结果,没有事务关联,数据复制能够达到最终一致性。
[0006]主备集群
[0007]基于CDC实现主备分布式集群的数据复制,对主集群的数据变更进行捕获,发动到备集群,并在备集群进行数据回放,达到主备集群的最终一致性。
[0008]关于备集群数据的回放,并不支持事务特性,无法保证事务的原子性及数据完整性。

技术实现思路

[0009]为了解决以上技术问题,本专利技术提供了一种方法优化基于CDC实现的分布式数据库集群,在主备集群复制方案下备集群数据回放的事务原子性,提高集群完整性、准确性性。
[0010]本专利技术的技术方案是:
[0011]一种基于分布式数据库CDC的事务原子性回放方法,
[0012]关于CDC的数据捕获,对于每个数据变更,记录相应的事务ID及操作,事务提交时,记录事务ID及事务涉及的操作数。
[0013]回放时,从CDC队列中读取数据变更操作,根据事务ID进行聚合操作,接收到commit操作是,进行操作数与缓存中的变更操作数量的比较,如果相等,则认为该事物的所有操作都发到了备端,进行相应的数据回放操作。
[0014]回放成功后,清理缓存中该事物的操作队列。
[0015]进一步的,
[0016]主集群进行CDC数据捕获时,记录一个事务涉及的数据变更数量以及该事务的事务ID。
[0017]数据传输时,除了传输变更数据,增加事务ID及事务涉及的变更数的传输。
[0018]在备集群,接收到数据后,首先根据事务ID做数据聚合操作,如果该事务聚合的变更数据记录与该事务的变更数相同,则认为该事务的所有操作全部发送到了备集群,可以
进行该事务的数据回放。
[0019]再进一步的,
[0020]包括:
[0021]1)分布式数据库在全局(跨机器)范围内,提交事务;
[0022]2)对全局范围内,提交的多个事务进行回放。
[0023]回放事务时,判断事务包含的操作数
[0024]1)回放事务时,如果该事务的全部操作都接收到了,该事务就可以进行回放;
[0025]2)隐式事务事务可以直接回放。
[0026]本专利技术的有益效果是
[0027]在主备库集群同等规模和配置情况下,针对备库数据完整性,
[0028]备库发生故障能够保证单个事务的事务原子性。
[0029]在以CDC为基础实现的主备集群复制方案下,备集群如果发生某些故障,导致主集群发来的数据变更没有得到全部应用,可能分裂一个事务的多个操作,对此对事务的操作变更数进行统计,回放时进行校验,可以保证事务的原子性,进而保证数据的完整性。
附图说明
[0030]图1是本专利技术的工作流程示意图。
具体实施方式
[0031]为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例,基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0032]本专利技术提供了一种基于分布式数据库CDC的事务原子性回放方法,主集群进行CDC数据捕获时,记录一个事务涉及的数据变更数量以及该事务的事务ID,数据传输时,除了传输变更数据,增加事务ID及事务涉及的变更数的传输,在备集群,接收到数据后,首先根据事务ID做数据聚合操作,如果该事务聚合的变更数据记录与该事务的变更数相同,则认为该事务的所有操作全部发送到了备集群,可以进行该事务的数据回放,保证了事务的原子性。
[0033]如图所示,
[0034]关于CDC的数据捕获,对于每个数据变更,记录相应的事务ID及操作,事务提交时,记录事务ID及事务涉及的操作数。
[0035]回放时,从CDC队列中读取数据变更操作,根据事务ID进行聚合操作,接收到commit操作是,进行操作数与缓存中的变更操作数量的比较,如果相等,则认为该事物的所有操作都发到了备端,可以进行相应的数据回放操作,回放成功后,清理缓存中该事物的操作队列。
[0036]本专利技术包括了:
[0037]1、在分布式数据库上实现,支持CDC数据复制功能,对于CDC数据进行复制回放时,支持事务原子性,保证数据的事务完整性。
[0038]1.1)分布式数据库在全局(跨机器)范围内,提交了很多事务。
[0039]1.2)对全局范围内,提交的多个事务进行回放。
[0040]2、回放事务时,能够判断事务包含的操作数。
[0041]2.1)回放某个事务时,如果该事务的全部操作都接收到了,该事务就可以进行回放。
[0042]2.2隐式事务事务可以直接回放。
[0043]以上所述仅为本专利技术的较佳实施例,仅用于说明本专利技术的技术方案,并非用于限定本专利技术的保护范围。凡在本专利技术的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本专利技术的保护范围内。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于分布式数据库CDC的事务原子性回放方法,其特征在于,关于CDC的数据捕获,对于每个数据变更,记录相应的事务ID及操作,事务提交时,记录事务ID及事务涉及的操作数;回放时,从CDC队列中读取数据变更操作,根据事务ID进行聚合操作。2.根据权利要求1所述的方法,其特征在于,接收到commit操作是,进行操作数与缓存中的变更操作数量的比较,如果相等,则认为该事物的所有操作都发到了备端,进行相应的数据回放操作。3.根据权利要求2所述的方法,其特征在于,回放成功后,清理缓存中该事物的操作队列。4.根据权利要求2或3所述的方法,其特征在于,主集群进行CDC数据捕获时,记录一个事务涉及的数据变更数量以及该事务的事务ID。5.根据权利要...

【专利技术属性】
技术研发人员:杨杰冯友旭鲍之骁于暄
申请(专利权)人:上海沄熹科技有限公司
类型:发明
国别省市:

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

1