基于消息队列的存量数据与增量数据融合的数据同步方法技术

技术编号:36359393 阅读:10 留言:0更新日期:2023-01-14 18:16
本发明专利技术公开了基于消息队列的存量数据与增量数据融合的数据同步方法,属于大数据技术领域,包括创建数据源信息并存放至数据库中;拉取数据源中待同步的数据表作为待同步表列表,获取数据表和数据表对应的数据源信息,建立数据表与目标数据表的映射关系;创建增量同步任务,获取增量数据并根据映射关系发送至消息队列中;创建存量同步任务,异步获取存量数据并根据映射关系发送至消息队列中;创建数据实时接入任务,将消息队列中的增量数据或存量数据写入目标数据库对应的目标数据表中。本发明专利技术采用消息队列融合存量同步和增量同步数据,仅使用一条链路即同时满足存量、增量同步的需求,减轻数据同步的操作难度和实施成本。减轻数据同步的操作难度和实施成本。减轻数据同步的操作难度和实施成本。

【技术实现步骤摘要】
基于消息队列的存量数据与增量数据融合的数据同步方法


[0001]本专利技术属于大数据
,具体涉及基于消息队列的存量数据与增量数据融合的数据同步方法。

技术介绍

[0002]为了解决数据同步,业内出现了类似sqoop、datax、kettle这类离线同步工具,也有类似canal、debezium这类增量同步工具。这两类同步工具在数据同步中都扮演者非常重要的角色,但是它们各自也有其缺陷。
[0003]离线同步工具用于离线存量数据的同步,如果一定要用于增量数据同步,那么需要借助调度工具定时调度小时间粒度的同步任务,这种方式数据延迟较大,并且无法适用于业务数据表不存在类似数据变更时间的字段的数据。增量同步工具主要是通过监控数据库变更日志如mysql

binlog来实现准实时数据同步,但是对于这类工具又无法应用于存量数据同步。一般情况下,增量同步工具会与离线同步工具搭配使用,首先初始化时在数据库建立一个快照,开启增量同步将快照后面的变更通过增量同步的方式写入目标库,然后使用离线同步工具将快照对应存量数据同步到目标库,但是这种方式存在存量和增量两条同步线路处理数据,对于存量和增量数据无缝链接等方面有较大的处理成本,成为所属
技术人员亟待解决的技术问题。

技术实现思路

[0004]本专利技术要解决的技术问题是:提供基于消息队列的存量数据与增量数据融合的数据同步方法,以至少解决上述部分技术问题。
[0005]为实现上述目的,本专利技术采用的技术方案如下:基于消息队列的存量数据与增量数据融合的数据同步方法,包括以下步骤:步骤1、创建数据源信息并存放至数据库中;步骤2、拉取数据源中待同步的数据表作为待同步表列表,获取数据表和数据表对应的数据源信息,建立数据表与目标数据表的映射关系;步骤3、创建增量同步任务,获取增量数据并根据映射关系发送至消息队列中;步骤4、创建存量同步任务,异步获取存量数据并根据映射关系发送至消息队列中;步骤5、创建数据实时接入任务,将消息队列中的增量数据或存量数据写入目标数据库对应的目标数据表中。
[0006]进一步地,所述步骤1中,数据源信息至少包括数据源、以及各数据源对应的源数据库信息、消息队列信息、主题前缀和目标数据库信息,目标数据库信息至少包括数据库类型、数据库链接信息和数据库库名。
[0007]进一步地,所述步骤2中,数据表与目标数据表的映射关系为:获取数据库中数据表和数据表对应的主题前缀,建立目标数据库中的目标数据表和数据表、主题的映射关系,
将所述映射关系存放至集合map中。
[0008]进一步地,所述步骤3包括:步骤31、选取待同步表列表中待同步的数据表,构建增量同步列表,将增量同步列表中的数据表与目标数据库中的目标数据表对比,新建新的目标数据表或修改已存在的目标数据表;步骤32、校验是否存在与待同步的数据表对应的cdc任务,若不存在则新建对应的cdc任务;步骤33、由cdc任务监控待同步的数据表的变更,然后生成、解析变更日志并生成变更记录、建立第一json文件;步骤34、判断待同步的数据表是否发生变更,若发生变更,生成最新schem信息并进行注册获得当前schem版本,将当前schem版本存放至集合map中并生成数据表对应的schem总信息;步骤35、从集合map中获取当前schem版本并写入第一json文件中形成增量数据;步骤36、将增量数据及对应的数据表的名称发送至消息队列发送模块,消息队列发送模块根据映射关系获取对应的主题,并将增量数据发送至消息队列对应的主题中。
[0009]进一步地,所述步骤32中,新建cdc任务时,根据待同步的数据表对应数据库类型加载对应的任务模板,并在任务模板中至少填充数据表对应的源数据库信息、待同步的数据表信息和消息队列信息;所述步骤34中,schem总信息至少包括schem版本号、以及对应的schem信息和数据表。
[0010]进一步地,所述步骤4包括:步骤41、选取待同步表列表中待同步的数据表,构建存量同步列表,初始化存量同步列表为待执行状态;步骤42、异步获取待执行状态的存量同步列表,获取所述存量同步列表中数据表的对应数据源信息的源数据库信息;步骤43、根据源数据库信息的源数据库类型选择对应的存量同步方式,通过数据表的主键分批查询和同步存量数据。
[0011]进一步地,所述查询和同步存量数据的方法包括:步骤431、查询源数据库的数据表并获取schem信息,注册当前的schem信息并返回至对应的schema版本号;步骤432、建立第二json文件,将返回的schema版本号写入第二json文件中形成存量数据;步骤433、将存量数据及对应数据表的名称发送至消息队列发送模块,消息队列发送模块根据映射关系获取对应的主题,并将存量数据发送至消息队列对应的主题中。
[0012]进一步地,所述步骤5包括:步骤51、设置数据实时接入任务的数据接入模块,消费消息队列信息;步骤52、设置数据实时接入任务的数据处理模块,处理数据源信息。
[0013]进一步地,所述步骤52包括:步骤521、设置目标数据库信息;步骤522、由目标数据库信息的数据库类型,选择对应的数据处理模板,解析消息队列中的增量数据或存量数据,并根据映射关系将增量数据或存量数据写入对应的目标数据表中。
[0014]进一步地,所述步骤522包括以下过程:步骤A、基于schema总信息加载schema版本及对应schema信息到集合map中;步骤B、解析增量数据或存量数据,获取对应的schema版本号,再从集合map中获取对应的schema信息;步骤C、校验获取的schema信息与目标数据表的schema信息是否一致或兼容;步骤D、校验结果一致或兼容时,根据目标数据表的schema信息和数据库类型,调用数据写入模块将增量数据或存量数据写入目标数据表中。
[0015]与现有技术相比,本专利技术具有以下有益效果:本专利技术采用消息队列融合存量同步和增量同步数据,仅使用一条链路即同时满足存量、增量同步的需求,减轻数据同步的操作难度和实施成本。本专利技术增量数据和存量数据使用同一套schema信息,在源数据表的结构发生变化时,及时感知变化以应对数据结构变
更,从而调整目标数据表以达到兼容的目的。并且存量数据可随时同步,满足实时数据因各种故障发生丢失或错误时需同步存量数据而补全目标数据表,以达到数据一致的需求。
附图说明
[0016]图1为本专利技术的方法流程图。
[0017]图2为本专利技术的映射关系生成图。
具体实施方式
[0018]为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图,对本专利技术进一步详细说明。显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0019]如图1所示,本专利技术提供的基于消息队列的存量数据与增量数据融合的数据同步方法,包括本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于消息队列的存量数据与增量数据融合的数据同步方法,其特征在于,包括以下步骤:步骤1、创建数据源信息并存放至数据库中;步骤2、拉取数据源中待同步的数据表作为待同步表列表,获取数据表和数据表对应的数据源信息,建立数据表与目标数据表的映射关系;步骤3、创建增量同步任务,获取增量数据并根据映射关系发送至消息队列中;步骤4、创建存量同步任务,异步获取存量数据并根据映射关系发送至消息队列中;步骤5、创建数据实时接入任务,将消息队列中的增量数据或存量数据写入目标数据库对应的目标数据表中。2.根据权利要求1所述的基于消息队列的存量数据与增量数据融合的数据同步方法,其特征在于,所述步骤1中,数据源信息至少包括数据源、以及各数据源对应的源数据库信息、消息队列信息、主题前缀和目标数据库信息,目标数据库信息至少包括数据库类型、数据库链接信息和数据库库名。3.根据权利要求2所述的基于消息队列的存量数据与增量数据融合的数据同步方法,其特征在于,数据表与目标数据表的映射关系为:获取数据库中数据表和数据表对应的主题前缀,建立目标数据库中的目标数据表和数据表、主题的映射关系,将所述映射关系存放至集合map中。4.根据权利要求3所述的基于消息队列的存量数据与增量数据融合的数据同步方法,其特征在于,所述步骤3包括:步骤31、选取待同步表列表中待同步的数据表,构建增量同步列表,将增量同步列表中的数据表与目标数据库中的目标数据表对比,新建新的目标数据表或修改已存在的目标数据表;步骤32、校验是否存在与待同步的数据表对应的cdc任务,若不存在则新建对应的cdc任务;步骤33、由cdc任务监控待同步的数据表的变更,然后生成、解析变更日志并生成变更记录、建立第一json文件;步骤34、判断待同步的数据表是否发生变更,若发生变更,生成最新schem信息并进行注册获得当前schem版本,将当前schem版本存放至集合map中并生成数据表对应的schem总信息;步骤35、从集合map中获取当前schem版本并写入第一json文件中形成增量数据;步骤36、将增量数据及对应的数据表的名称发送至消息队列发送模块,消息队列发送模块根据映射关系获取对应的主题,并将增量数据发送至消息队列对应的主题中。5.根据权利要求4所述的基于消息队列的存量数据与增量数据融合的数据同步方法,其特征在于,所述步骤32中,新建cdc任务时,根据待同步的数据表对应数据库类型加载对应的任务模板,并在任务模板中至少填充数据表对应的源数据库信...

【专利技术属性】
技术研发人员:向才锋
申请(专利权)人:云筑信息科技成都有限公司
类型:发明
国别省市:

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

1