一种数据同步方法和装置制造方法及图纸

技术编号:27213100 阅读:17 留言:0更新日期:2021-02-04 11:28
本发明专利技术公开了一种数据同步方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:监听第一数据库,以在所述第一数据库中的日志发生变化时,从所述第一数据库中获取更新后的日志文件;解析所述日志文件得到增量数据,根据所述增量数据中的表名称,将所述增量数据写入与所述表名称相对应的消息队列中;通过与所述消息队列相对应的队列消费线程,将所述消息队列中的所述增量数据写入第二数据库中。该实施方式整体拥有较为清晰的架构,通过在数据同步过程中可并行实施的阶段都采用表级别的并发处理方式,大大提高了整体的并发度,有效提高了数据同步的效率,减少了数据同步时间,同时保证了数据同步的一致性。同时保证了数据同步的一致性。同时保证了数据同步的一致性。

【技术实现步骤摘要】
一种数据同步方法和装置


[0001]本专利技术涉及计算机
,尤其涉及一种数据同步方法和装置。

技术介绍

[0002]数据库增量订阅和消费中间件,在实际应用中,有比较广泛的应用场景,比如用于跨机房数据同步,减少数据库同步的延时;将mysql数据库的数据异构成ES(ElasticSearch,搜索引擎)数据,提高查询性能等。
[0003]以Canal为例,采用多线程分工合作、多阶段处理的模式。为保证同步后数据的一致性,Canal采用了比较保守的策略:利用binlog串行进行数据拉取、解析、存储和消费,以保证数据的一致性。
[0004]在实现本专利技术的过程中,专利技术人发现现有技术至少存在如下问题:
[0005]对于数据的拉取、解析、存储和消费等步骤,执行具有顺序性,每一个步骤都需在前一个步骤完成之后才执行,且每个步骤都是基于单线程运行的,导致整体运行效率较低、数据同步时间较长。

技术实现思路

[0006]有鉴于此,本专利技术实施例提供一种数据同步方法和装置,至少能够解决现有技术中无法进一步提高数据同步性能、以及同步时间较长的问题。
[0007]为实现上述目的,根据本专利技术实施例的一个方面,提供了一种数据同步方法,包括:
[0008]监听第一数据库,以在所述第一数据库中的日志发生变化时,从所述第一数据库中获取更新后的日志文件;
[0009]解析所述日志文件得到增量数据,根据所述增量数据中的表名称,将所述增量数据写入与所述表名称相对应的消息队列中;其中,所述增量数据为新增、修改或删除的数据;
[0010]通过与所述消息队列相对应的队列消费线程,将所述消息队列中的所述增量数据写入第二数据库中。
[0011]可选的,所述从所述第一数据库中获取更新后的日志文件,包括:
[0012]获取日志导出子线程的数量,以在所述第一数据库中,利用日志导出主线程对所述日志文件进行切分,得到与所述数量相对应的多个子日志文件;
[0013]利用各日志导出子线程对各子日志文件进行拉取,按照各子日志文件之间的排序,对所拉取到的子日志文件进行排列组合,得到所述日志文件。
[0014]可选的,所述将所述增量数据写入与所述表名称相对应的消息队列中,包括:
[0015]确定与所述表名称相对应的表队列,将所述增量数据写入所述表队列中;
[0016]按照预定周期、或当所述表队列中的数据量超出预定数量阈值时,从所述表队列中提取所述增量数据,以将所述增量数据写入与所述表队列相关联的消息队列中。
[0017]可选的,所述确定与所述表名称相对应的表队列,将所述增量数据写入所述表队列中,包括:
[0018]确定与所述表名称相对应的表队列集群;
[0019]根据所述增量数据中的特征信息,确定所述表队列集群中与所述特征信息相对应的表队列;其中,所述特征信息为物品编号、物品名称、物品属性中的至少一种;
[0020]将所述增量数据写入所确定的表队列中。
[0021]可选的,所述从所述表队列中提取所述增量数据,以将所述增量数据写入与所述表队列相关联的消息队列中,包括:
[0022]确定与所述表队列相关联的消息队列集群,获取所述消息队列集群中消息队列的数量;
[0023]获取所述增量数据中的序号,用所述序号对所述消息队列的数量作余数,确定所述消息队列集群中与所述余数相对应的消息队列;其中,所述序号为所述增量数据在所述日志文件中所处位置的号码;
[0024]从所述表队列中提取所述增量数据,以将所述增量数据写入所确定的消息队列中。
[0025]可选的,在所述将所述增量数据写入与所述表名称相对应的消息队列中之后,还包括:
[0026]根据所述增量数据中的序号,确定所述日志文件中的消费位点,存储所述消费位点至位点队列中进行消费位点更新;以及
[0027]提取所述位点队列中的最新消费位点,以将所述最新消费位点写入位点记录中进行最新消费位点更新。
[0028]为实现上述目的,根据本专利技术实施例的另一方面,提供了一种数据同步装置,包括:
[0029]日志获取模块,用于监听第一数据库,以在所述第一数据库中的日志发生变化时,从所述第一数据库中获取更新后的日志文件;
[0030]数据分发模块,用于解析所述日志文件得到增量数据,根据所述增量数据中的表名称,将所述增量数据写入与所述表名称相对应的消息队列中;其中,所述增量数据为新增、修改或删除的数据;
[0031]数据写入模块,用于通过与所述消息队列相对应的队列消费线程,将所述消息队列中的所述增量数据写入第二数据库中。
[0032]可选的,所述日志获取模块,用于:
[0033]获取日志导出子线程的数量,以在所述第一数据库中,利用日志导出主线程对所述日志文件进行切分,得到与所述数量相对应的多个子日志文件;
[0034]利用各日志导出子线程对各子日志文件进行拉取,按照各子日志文件之间的排序,对所拉取到的子日志文件进行排列组合,得到所述日志文件。
[0035]可选的,所述数据分发模块,用于:
[0036]确定与所述表名称相对应的表队列,将所述增量数据写入所述表队列中;
[0037]按照预定周期、或当所述表队列中的数据量超出预定数量阈值时,从所述表队列中提取所述增量数据,以将所述增量数据写入与所述表队列相关联的消息队列中。
[0038]可选的,所述数据分发模块,用于:
[0039]确定与所述表名称相对应的表队列集群;
[0040]根据所述增量数据中的特征信息,确定所述表队列集群中与所述特征信息相对应的表队列;其中,所述特征信息为物品编号、物品名称、物品属性中的至少一种;
[0041]将所述增量数据写入所确定的表队列中。
[0042]可选的,所述数据分发模块,用于:
[0043]确定与所述表队列相关联的消息队列集群,获取所述消息队列集群中消息队列的数量;
[0044]获取所述增量数据中的序号,用所述序号对所述消息队列的数量作余数,确定所述消息队列集群中与所述余数相对应的消息队列;其中,所述序号为所述增量数据在所述日志文件中所处位置的号码;
[0045]从所述表队列中提取所述增量数据,以将所述增量数据写入所确定的消息队列中。
[0046]可选的,还包括位点存储模块,用于:
[0047]根据所述增量数据中的序号,确定所述日志文件中的消费位点,存储所述消费位点至位点队列中进行消费位点更新;以及
[0048]提取所述位点队列中的最新消费位点,以将所述最新消费位点写入位点记录中进行最新消费位点更新。
[0049]为实现上述目的,根据本专利技术实施例的再一方面,提供了一种数据同步电子设备。
[0050]本专利技术实施例的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据同步方法,其特征在于,包括:监听第一数据库,以在所述第一数据库中的日志发生变化时,从所述第一数据库中获取更新后的日志文件;解析所述日志文件得到增量数据,根据所述增量数据中的表名称,将所述增量数据写入与所述表名称相对应的消息队列中;其中,所述增量数据为新增、修改或删除的数据;通过与所述消息队列相对应的队列消费线程,将所述消息队列中的所述增量数据写入第二数据库中。2.根据权利要求1所述的方法,其特征在于,所述从所述第一数据库中获取更新后的日志文件,包括:获取日志导出子线程的数量,以在所述第一数据库中,利用日志导出主线程对所述日志文件进行切分,得到与所述数量相对应的多个子日志文件;利用各日志导出子线程对各子日志文件进行拉取,按照各子日志文件之间的排序,对所拉取到的子日志文件进行排列组合,得到所述日志文件。3.根据权利要求1所述的方法,所述将所述增量数据写入与所述表名称相对应的消息队列中,包括:确定与所述表名称相对应的表队列,将所述增量数据写入所述表队列中;按照预定周期、或当所述表队列中的数据量超出预定数量阈值时,从所述表队列中提取所述增量数据,以将所述增量数据写入与所述表队列相关联的消息队列中。4.根据权利要求3所述的方法,其特征在于,所述确定与所述表名称相对应的表队列,将所述增量数据写入所述表队列中,包括:确定与所述表名称相对应的表队列集群;根据所述增量数据中的特征信息,确定所述表队列集群中与所述特征信息相对应的表队列;其中,所述特征信息为物品编号、物品名称、物品属性中的至少一种;将所述增量数据写入所确定的表队列中。5.根据权利要求3或4所述的方法,其特征在于,所述从所述表队列中提取所述增量数据,以将所述增量数据写入与所述表队列相关联的消息队列中,包括:确定与所述表队列相关联的消息队列集群,获取所述消息队列集群中消息队列的数量;获取所述增量数据中的序号,用所述序号对所述消息队列的数量作余数,确定所述消息队列集群中与所述余数相对应的消息队列;其中,所述序号为所述增量数据在所述日志文件中所处位置的号码;从所述表队列中提取所述增量数据,以将所述增量数据写入所确定的消息队列中。6.根据权利要求1所述的方法,其特征在于,在所述将所述增量数据写入与所述表名称相对应的消息队列中之后,还包括:根据所述增量数据中的序号,确定所述日志文件中的消费位点,存储所述消费位点至位点队列中进行消费位点更新;以及提取所述位点队列中的最新消费位点,以将所述最新消费位点写入位点记录中进行最新消费位点更新。7.一种数据同步装置,其特征在于,包括:
日志获取模块,用于监听第一数据库,以在所述第一...

【专利技术属性】
技术研发人员:杨坤
申请(专利权)人:北京京东振世信息技术有限公司
类型:发明
国别省市:

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

1