一种基于canal的数据同步系统及同步方法技术方案

技术编号:32834477 阅读:16 留言:0更新日期:2022-03-26 20:52
本发明专利技术涉及一种基于canal的数据同步系统及同步方法,其中数据同步系统包括源端数据库、目标端数据库以及用于将源端数据库中的事务数据实时同步至目标端数据库的canal集群,canal集群存储有表关联策略,用于将新增或者修改的数据与目标端数据库或数据流中的数据表进行关联。与现有技术相比,本发明专利技术具有数据同步速度快、吞吐量大、搜索效率高等优点。搜索效率高等优点。搜索效率高等优点。

【技术实现步骤摘要】
一种基于canal的数据同步系统及同步方法


[0001]本专利技术涉及数据同步
,尤其是涉及一种基于canal的数据同步系统及同步方法。

技术介绍

[0002]业务系统采用微服务架构,每个产品的申请记录分布在独立的数据库中,给风控带来一定的不便。为了查看多产品的情况,需要切换到不同的查询页面,完成查询。由于业务发展有先后,考虑到不同产品的资源投入,后台数据库分为商用的DB2和开源的MySQL。
[0003]现有技术中,Flink是apache开源的流式处理框架,可以实现流之间的数据关联,具体的实现方式有两种:
[0004](1)Regular Join的方式
[0005]Flink将数据流的数据保存下来,包括当前要处理的记录和历史记录。数据持续性的保留,且保留的时间比较长。如果两个流(类比两个表)的数据需要关联,则会遍历另一条流,找到需要的关联数据。因为保存了历史数据,所以这种方式支持一对多的关联方式。
[0006]这种方式需要将数据保存到磁盘,因此要申请额外的磁盘空间,对于磁盘上数据的管理,需要引入额外的管理组件,Flink采用state模块管理数据。
[0007](2)Interval Join的方式
[0008]Flink首先会将两个流数据按照时间窗口进行匹配,相同时间窗口的两个流中的数据进行关联。对流1的数据,会遍历流2中对应时间窗口的记录,进行关联。
[0009]这种方式按照时间窗口进行匹配,如果两个流的记录1和记录2可以匹配,但在流中的时间戳存在差距,如果窗口大小选择不合适,相关记录所在两个窗口没有匹配在一起,造成数据无法关联。

技术实现思路

[0010]本专利技术的目的就是为了克服上述现有技术存在的缺陷而提供一种数据同步速度快、吞吐量大、搜索效率高的基于canal的数据同步系统及同步方法。
[0011]本专利技术的目的可以通过以下技术方案来实现:
[0012]一种基于canal的数据同步系统,所述的数据同步系统包括源端数据库、目标端数据库以及用于将源端数据库中的事务数据实时同步至目标端数据库的canal集群;所述的canal集群存储有表关联策略,用于将新增或者修改的数据与目标端数据库或数据流中的数据表进行关联。
[0013]优选地,所述的源端数据库包括MySQL数据库、Oracle数据库和DB2数据库。
[0014]优选地,所述的源端数据库中的事务数据以binlog的形式传输到canal集群。
[0015]优选地,所述的canal集群设有缓存。
[0016]优选地,所述的表关联策略具体为:
[0017]若源端数据库中有两张表在同一事务中进行了修改,则将两个表中新增的数据在
canal集群中进行关联,并组成大宽表写入目标数据库;
[0018]若源端数据库中有一张表中新增了数据,则通过目标数据库获取与该数据相关联的字段,组成大宽表写入目标数据库。
[0019]更加优选地,所述的canal集群采用key

value方式,并以关联字段的数据作为key,与对应的value值进行匹配。
[0020]优选地,所述的目标数据库为ES数据库。
[0021]优选地,所述的数据同步系统设有zookeeper客户端,用于对canal集群进行集群管理。
[0022]一种用于上述数据同步系统的基于canal的数据同步方法,所述的数据同步方法包括:
[0023]步骤1:canal集群实时获取源端数据库中的事务数据;
[0024]步骤2:基于存储在canal集群中的表关联策略构建大宽表;
[0025]步骤3:将大宽表写入目标端,实现数据同步。
[0026]优选地,所述的表关联策略具体为:
[0027]若源端数据库中有两张表在同一事务中进行了修改,则将两个表中新增的数据在canal集群中进行关联,并组成大宽表写入目标数据库;
[0028]若源端数据库中有一张表中新增了数据,则通过目标数据库获取与该数据相关联的字段,组成大宽表写入目标数据库。
[0029]与现有技术相比,本专利技术具有以下有益效果:
[0030]一、数据同步速度快,吞吐量大:本专利技术中的数据同步系统及同步方法解决了目标端存储库无法处理多表关联的问题,并通过大宽表的关联,以一定的数据冗余,减少了应用端对数据的读取次数,提高了吞吐量,加快了数据同步速度。
[0031]二、搜索效率高:本专利技术中的数据同步系统及同步方法改造canal的源码,实现了canal组件内部的多表关联,以实现减轻源库压力的目的;其次对于数据关联的设计,采用key

value的存储模式,借助于对key进行比较,相等则进行关联。对key进行hash后存储,当搜索某个key的记录时,快速返回匹配记录;相比于Flink采取的滑动窗口+遍历的匹配方式,本专利技术采用key

value方式,通过hash算法,大大提高了搜索效率。
附图说明
[0032]图1为本专利技术中数据同步系统的结构示意图。
具体实施方式
[0033]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术的一部分实施例,而不是全部实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本专利技术保护的范围。
[0034]一种基于canal的数据同步系统,其结构如图1所示,包括:
[0035]源端数据库,包括MySQL数据库、Oracle数据库和DB2数据库;
[0036]目标端数据库,具体为ES数据库;
[0037]canal集群,用于将源端数据库中的事务数据实时同步至目标端数据库,canal集群在canal adapter中存储有表关联策略,用于将新增或者修改的数据与目标端数据库或数据流中的数据表进行关联。
[0038]源端数据库中的事务数据以binlog的形式传输到canal集群,通过改在canal源码,在canal集群引入缓存。canal集群采用key

value方式,并以关联字段的数据作为key,与对应的value值进行匹配。
[0039]数据同步系统还设有zookeeper客户端,用于对canal集群进行集群管理。
[0040]本实施例中的表关联策略具体为:
[0041]若源端数据库中有两张表在同一事务中进行了修改,比如同时往student表和teacher表各新增了一条记录且新增的记录间存在关联关系。那么将两个表中新增的数据在canal集群中进行关联,并组成大宽表写入目标数据库。此时需要修改配置文件,增加两表关联所用到的字段名。
[0042]若源端数据库中有一张表中新增了数据,比如新增了订单表的一条记录,这条记录在写入到目标端之前,需要通过记录中的客户ID获取到客本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于canal的数据同步系统,其特征在于,所述的数据同步系统包括源端数据库、目标端数据库以及用于将源端数据库中的事务数据实时同步至目标端数据库的canal集群;所述的canal集群存储有表关联策略,用于将新增或者修改的数据与目标端数据库或数据流中的数据表进行关联。2.根据权利要求1所述的一种基于canal的数据同步系统,其特征在于,所述的源端数据库包括MySQL数据库、Oracle数据库和DB2数据库。3.根据权利要求1所述的一种基于canal的数据同步系统,其特征在于,所述的源端数据库中的事务数据以binlog的形式传输到canal集群。4.根据权利要求1所述的一种基于canal的数据同步系统,其特征在于,所述的canal集群设有缓存。5.根据权利要求1所述的一种基于canal的数据同步系统,其特征在于,所述的表关联策略具体为:若源端数据库中有两张表在同一事务中进行了修改,则将两个表中新增的数据在canal集群中进行关联,并组成大宽表写入目标数据库;若源端数据库中有一张表中新增了数据,则通过目标数据库获取与该数据相关联的字段,组成大宽表写入目标数据库。6.根据权利要求5所述的一种基于cana...

【专利技术属性】
技术研发人员:王仕超张毅
申请(专利权)人:交通银行股份有限公司
类型:发明
国别省市:

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

1