一种基于令牌表的异构数据库双向同步方法及装置制造方法及图纸

技术编号:35156778 阅读:27 留言:0更新日期:2022-10-05 10:40
本申请公开一种基于令牌表的异构数据库双向同步方法及装置。所述方法包括:在复制链路的目标端异构库内部创建只供同步链路访问的令牌表;监听并读取业务变更写入异构数据库后本地生成的数据库变更日志;在向目标端异构库同步时,获取同步链路编号,在业务变更事务中嵌入令牌信息;当反向同步链路以当前目标端异构库作为源端异构库时,自动过滤相关复制链路带有令牌信息的操作事务。本申请基于复制链路标识进行复制过滤,无需依赖业务特性,具备通用性,对业务没有明显的限制,相比“全局事务唯一标识”的方案,无需异构库代码层提供全局事务标识的支持,对所链接的异构数据库没有明显的限制。显的限制。显的限制。

【技术实现步骤摘要】
一种基于令牌表的异构数据库双向同步方法及装置


[0001]本申请涉及数据处理领域,尤其涉及一种基于令牌表的异构数据库双向同步方法及装置。

技术介绍

[0002]双向回环复制是异构数据库双向同步所必须解决的问题,即异构库A尝试的变更同步到异构库B后,如果相同的变更内容又从异构库B同步回异构库A的话,就会导致复制中断或复制数据错乱。
[0003]目前市面上的双向同步方案主要依赖业务特性做复制链路过滤或基于事务标识做过滤,典型的实现包括:(1)双向复制链路复制不同的数据库对象。例如异构数据库A

>异构数据库B的复制只复制库A或所有testA_前缀的表,而反方向的异构数据库B

>异构数据库A的复制只复制库B或所有testB_前缀的表;通过正向和反向进行不同数据对象的复制,来避免双向回环复制。
[0004](2)双向复制链路基于特定业务字段的值进行过滤。例如有一张表t1,里面有一列location存储了交易发生的地点,可选的值只有“北京”或“上海”; 异构数据库A

>异构数据库B的复制只复制t1中location=”北京”的数据变更,而反方向的异构数据库B

>异构数据库A的复制只复制t1中location=”上海”的数据变更。通过正向和反向进行不同业务数据筛选条件的复制,来避免双向回环复制。
[0005](3)事务标识即给每个事务添加全局唯一的标识,类似MySQL数据库间复制的GTID信息,每个库记录执行过事务的事务标识,对于重复执行的事务进行忽略。通过记录全局事务唯一标识,来避免双向回环复制。该方案对异构数据库有较高的适配要求。
[0006]现有的双向同步方案都是依赖业务或依赖特定异构数据库强适配做复制链路过滤,避免双向回环复制,实质上对业务或异构数据库有不小的限制。如何更好地解决双向回环复制问题,并且避免对业务过多的感知,是本专利技术主要解决的问题。

技术实现思路

[0007]本申请提供了一种基于令牌表的异构数据库双向同步方法,包括:在复制链路的目标端异构库内部创建只供同步链路访问的令牌表;监听并读取业务变更写入异构数据库后本地生成的数据库变更日志;在向目标端异构库同步时,获取同步链路编号,在业务变更事务中嵌入令牌信息;当反向同步链路以当前目标端异构库作为源端异构库时,自动过滤相关复制链路带有令牌信息的操作事务。
[0008]如上所述的一种基于令牌表的异构数据库双向同步方法,其中,令牌表包括令牌id、复制链路编号以及令牌值:{token_id, channel_id, token_value},令牌id在令牌表内唯一。
[0009]如上所述的一种基于令牌表的异构数据库双向同步方法,其中,嵌入的令牌信息包括随机分配的一个令牌id、获取的同步链路编号channel_id,以及设定的令牌token_value更新操作。
[0010]如上所述的一种基于令牌表的异构数据库双向同步方法,其中,令牌token_value更新操作为累加操作、或累减操作、或自定义更新操作。
[0011]如上所述的一种基于令牌表的异构数据库双向同步方法,其中,当反向同步链路以当前目标异构库作为源端库时,自动过滤掉相关复制链路带有令牌表channel_id的事务。
[0012]本申请还提供一种基于令牌表的异构数据库双向同步装置,包括:令牌表创建模块,用于在复制链路的目标端异构库内部创建只供同步链路访问的令牌表;事务监听模块,用于监听并读取业务变更写入异构数据库后本地生成的数据库变更日志;业务变更事务构建模块,用于在向目标端异构库同步时,获取同步链路编号,在业务变更事务中嵌入令牌信息;事务识别模块,用于当反向同步链路以当前目标端异构库作为源端异构库时,自动过滤相关复制链路带有令牌信息的操作事务。
[0013]如上所述的一种基于令牌表的异构数据库双向同步装置,其中,令牌表包括令牌id、复制链路编号以及令牌值:{token_id, channel_id, token_value},令牌id在令牌表内唯一。
[0014]如上所述的一种基于令牌表的异构数据库双向同步装置,其中,嵌入的令牌信息包括随机分配的一个令牌id、获取的同步链路编号channel_id,以及设定的令牌token_value更新操作。
[0015]如上所述的一种基于令牌表的异构数据库双向同步装置,其中,令牌token_value更新操作为累加操作、或累减操作、或自定义更新操作。
[0016]如上所述的一种基于令牌表的异构数据库双向同步装置,其中,当反向同步链路以当前目标异构库作为源端库时,自动过滤掉相关复制链路带有令牌表channel_id的事务。
[0017]本申请实现的有益效果如下:(1)基于复制链路标识进行复制过滤,无需依赖业务特性,具备通用性,对业务没有明显的限制。
[0018](2)基于复制链路标识进行复制过滤,非常的轻量,相比“全局事务唯一标识”的方案,本申请无需异构库代码层提供全局事务标识的支持,对所链接的异构数据库没有明显的限制。
[0019](3)本方案能够提供流控效果。
附图说明
[0020]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
专利技术中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
[0021]图1是本申请实施例一提供的一种基于令牌表的异构数据库双向同步示意图;图2是一种基于令牌表的异构数据库双向同步方法流程图;图3是在业务事务开始嵌入一端令牌表更新程序示意图;图4是本申请实施例二提供的一种基于令牌表的异构数据库双向装置步示意图。
具体实施方式
[0022]下面结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0023]实施例一本申请实施例一提供一种基于令牌表的异构数据库双向同步方法,如图1所示,异构数据库A和异构数据库B的双向同步链路包含两条复制链路,分别为正向同步和反向同步,异构数据库的变更分别为业务变更和复制同步变更,复制同步变更采用本申请的基于令牌表的异构数据库双向同步方法,也称“基于令牌的变更”;在异构数据库A和异构数据库B中分别创建令牌表,基于令牌的变更将在同步的业务变更操作中嵌入令牌信息,并基于令牌实现对异构库同步变更写入的流控;并且基于令牌信息,区分“业务变更”和“基于令牌的变更”,通过基于令牌信息的过滤解决双向回环复制问题。
[0024]如图2所示,所述基于令牌表的异构数据库双向同步方法包括:步骤210、在复制链路的目标端本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于令牌表的异构数据库双向同步方法,其特征在于,包括:在复制链路的目标端异构库内部创建只供同步链路访问的令牌表;监听并读取业务变更写入异构数据库后本地生成的数据库变更日志;在向目标端异构库同步时,获取同步链路编号,在业务变更事务中嵌入令牌信息;当反向同步链路以当前目标端异构库作为源端异构库时,自动过滤相关复制链路带有令牌信息的操作事务。2.如权利要求1所述的一种基于令牌表的异构数据库双向同步方法,其特征在于,令牌表包括令牌id、复制链路编号channel_id以及令牌值token_value,令牌id在令牌表内唯一。3.如权利要求2所述的一种基于令牌表的异构数据库双向同步方法,其特征在于,嵌入的令牌信息包括随机分配的一个令牌id、获取的同步链路编号channel_id,以及设定的令牌token_value更新操作。4.如权利要求3所述的一种基于令牌表的异构数据库双向同步方法,其特征在于,令牌token_value更新操作为累加操作、或累减操作、或自定义更新操作。5.如权利要求3所述的一种基于令牌表的异构数据库双向同步方法,其特征在于,当反向同步链路以当前目标异构库作为源端库时,自动过滤掉相关复制链路带有令牌表channel_id的事务。6.一种基于令牌表的异构数据库双向同步装置,其特...

【专利技术属性】
技术研发人员:王莉莉史晨阳彭晓王志刚于树文郑林城高孝鑫司同王加明
申请(专利权)人:北京万里开源软件有限公司
类型:发明
国别省市:

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

1