一种数据同步方法、装置、设备及存储介质与流程

文档序号:29862820发布日期:2022-04-30 11:43阅读:77来源:国知局
一种数据同步方法、装置、设备及存储介质与流程

1.本技术涉及信息技术领域,具体地涉及一种数据同步方法、装置、设备及存储介质。


背景技术:

2.随着互联网行业的飞速发展,各行业逐渐实现了数据信息化。而hbase数据库作为一种长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合,可以实现对海量数据信息的存储、组织和管理。在对存储在hbase数据库中的数据进行查询、分析等操作时,若直接对存储在hbase数据库中的数据进行相应的操作,由于数据的数量十分庞大,工作效率将会非常低。因此,通常会将hbase数据库中不同类型的数据分别同步至其他不同的数据库中,当需要使用某种类型的数据进行数据处理时,可以直接在能够进行相应数据处理的数据库中对存储的该类型的数据执行操作,不必在hbase数据库存储的所有数据中搜索需要的数据,可以提高工作效率。例如,可以将hbase数据库中的搜索热点数据同步至查询数据库中,那么在进行查询时,可直接在查询数据库进行搜索,节省了数据处理的时间。并且,由于不同类型的数据库能够实现的功能不同,所采用的计算机环境也由不同平台组成,导致上述不同类型的数据库存储的数据的数据格式不完全相同,因此不同数据库间存储的数据属于异构数据。为了使得异构数据库中存储的数据与hbase数据库中与异构数据库相关联的数据始终保持一致,从而保证异构数据库中存储的数据的准确性,因此需要进行hbase数据库与异构数据库间的数据同步。
3.现有技术中,hbase数据库包括主集群与备集群,当hbase数据库的主集群中存储了非常重要的业务数据的时候,为了保护数据可以对数据进行备份处理,此时可以将主集群中的数据同步至备集群中进行备份,并且,在hbase数据库中主集群的数据发生修改时,需要将修改的数据同步至备集群中。目前,可以通过hbase replication数据复制技术实现主备集群建的数据同步。由于wal(write ahead log)预写日志中记录了所有的hbase数据库中数据的修改记录,因此hbase replication根据读取wal日志的内容,从而将主集群中发生修改的数据同步至备集群。
4.在进行数据同步时,hbase replication在主集群的服务内部起了一个replication source的线程来负责复制,同时在备集群的每个服务内部起了一个replication sink的线程来负责接收replication source复制的数据。即,replication source记录wal预写日志中需要同步的主集群中的修改数据的位置信息,然后不断读取wal预写日志中的内容,同时可以根据replication的预设配置过滤掉主集群中的修改数据中无需同步至备集群的数据,只保留主集群中的修改数据中需要同步至备集群的数据。通过replicate wal entry这个远程过程调用(remote procedure call,rpc)将需要同步至备集群的数据发送至备集群的服务器,备集群的replicationsink线程则负责将收到的数据写入到备集群中。
5.通过上述hbase replication技术可以实现hbase数据库的主备集群间的数据同
步,但是该项技术的数据格式及传输协议仅支持hbase数据库本身,即,仅支持hbase数据库的主备集群间的数据同步。也就是说,当hbase数据库与异构数据库间需要进行数据同步时,由于异构数据库的数据格式与hbase数据库不同,因此通过hbase replication技术无法实现hbase数据库与异构数据库间的进行数据同步。


技术实现要素:

6.有鉴于此,本技术提供一种数据同步方法、装置、设备及存储介质,以利于解决现有技术中不同数据库间无法同步数据的问题。
7.第一方面,本技术实施例提供了一种数据同步方法,包括:
8.获取第一数据库的预写日志中待同步的修改信息;所述预写日志中记录有所述第一数据库中数据的修改信息;所述数据的修改信息中至少包含有所述数据所在数据表的信息及数据的修改操作信息;
9.获取预设待同步配置信息,根据所述预设待同步配置信息确定所述待同步的修改信息是否为目标数据表的修改信息;预设待同步配置信息包括至少一个第二数据库中需同步的目标数据表的标识信息及目标数据的标识信息;所述至少一个第二数据库中需同步的目标数据是所述至少一个第二数据库中存储的,与所述第一数据库存储的数据相关联的数据;
10.若所述待同步的修改信息是所述目标数据表的修改信息,根据所述预设待同步配置信息确定所述目标数据表的修改信息中是否有目标数据的修改信息;所述目标数据表的修改信息中包含至少一项数据的修改信息;
11.若有目标数据的修改信息,则根据所述预设待同步配置信息确定所述目标数据的修改信息对应的至少一个第二数据库,将所述目标数据的修改信息的数据格式分别转换为所述至少一个第二数据库的目标数据格式,并分别按照所述至少一个第二数据库的目标数据格式向至少一个第二数据库发送对应的所述目标数据的修改信息,所述目标数据格式为所述第二数据库存储数据的数据格式。
12.优选地,还包括:
13.根据所述第一数据库的预写日志中待同步的修改信息,更新所述预写日志的已同步的修改信息的位置信息;其中,所述位置信息用于记录所述预写日志中已与其他数据库完成同步的修改信息的位置;
14.确定所述预写日志中是否有待同步的修改信息;
15.若有待同步的修改信息,则重新获取第一数据库的预写日志中待同步的修改信息。
16.优选地,所述获取第一数据库的预写日志中待同步的修改信息包括:
17.读取所述第一数据库的预写日志;
18.获取所述预写日志的已同步的修改信息的位置信息;
19.根据所述位置信息,在所述第一数据库的预写日志中确定出待同步的修改信息。
20.优选地,在所述根据所述预设待同步配置信息确定所述目标数据表的修改信息中是否有目标数据的修改信息之前,还包括:
21.将所述目标数据表的修改信息的数据格式由源数据格式转换为预设数据格式;所
述源数据格式为所述第一数据库存储数据的数据格式;
22.所述将所述目标数据的修改信息的数据格式分别转换为所述至少一个第二数据库的目标数据格式包括:
23.将所述目标数据的修改信息的数据格式由预设数据格式分别转换为所述至少一个第二数据库的目标数据格式。
24.优选地,所述方法还包括,所述预设数据格式为json数据格式。
25.优选地,在所述将所述目标数据的修改信息的数据格式分别转换为所述至少一个第二数据库的目标数据格式,并分别按照所述至少一个第二数据库的目标数据格式向至少一个第二数据库发送所述目标数据的修改信息之前,还包括:
26.获取预设的目标数据处理信息;
27.根据所述预设的目标数处理信息,对第一数据进行相应的数据处理,得到目标数据的待同步修改信息;所述第一数据是所述目标数据的修改信息中的数据;
28.所述将所述目标数据的修改信息的数据格式分别转换为所述至少一个第二数据库的目标数据格式,并分别按照所述至少一个第二数据库的目标数据格式向至少一个第二数据库发送对应的所述目标数据的修改信息包括:
29.将目标数据的待同步修改信息的数据格式分别转换为所述至少一个第二数据库的目标数据格式,并分别按照所述至少一个第二数据库的目标数据格式向至少一个第二数据库发送对应的所述目标数据的待同步修改信息。
30.优选地,所述方法还包括:
31.生成埋点日志;所述埋点日志用于记录数据的同步速率及数据的同步信息。
32.周期性向用户发送所述埋点日志。
33.第二方面,本技术实施例提供了一种数据同步装置,包括:
34.获取单元,用于获取第一数据库的预写日志中待同步的修改信息;所述预写日志中记录有所述第一数据库中数据的修改信息;所述数据的修改信息中至少包含有所述数据所在数据表的信息及数据的修改操作信息;
35.处理单元,用于获取预设待同步配置信息,根据所述预设待同步配置信息确定所述待同步的修改信息是否为目标数据表的修改信息;若所述待同步的修改信息是所述目标数据表的修改信息,根据所述预设待同步配置信息确定所述目标数据表的修改信息中是否有目标数据的修改信息;所述目标数据表的修改信息中包含至少一项数据的修改信息;还用于,若有目标数据的修改信息,则根据所述预设待同步配置信息确定所述目标数据的修改信息对应的至少一个第二数据库,将所述目标数据的修改信息的数据格式分别转换为所述至少一个第二数据库的目标数据格式,并分别按照所述至少一个第二数据库的目标数据格式向至少一个第二数据库发送对应的所述目标数据的修改信息,所述目标数据格式为所述第二数据库存储数据的数据格式;预设待同步配置信息包括至少一个第二数据库中需同步的目标数据表的标识信息及目标数据的标识信息;所述至少一个第二数据库中需同步的目标数据是所述至少一个第二数据库中存储的,与所述第一数据库存储的数据相关联的数据。
36.优选地,所述处理单元,具体用于,根据所述第一数据库的预写日志中待同步的修改信息,更新所述预写日志的已同步的修改信息的位置信息;其中,所述位置信息用于记录
所述预写日志中已与其他数据库完成同步的修改信息的位置;
37.确定所述预写日志中是否有待同步的修改信息;
38.若有待同步的修改信息,则重新获取第一数据库的预写日志中待同步的修改信息。
39.优选地,所述处理单元,还用于,读取所述第一数据库的预写日志;获取所述预写日志的已同步的修改信息的位置信息;根据所述位置信息,在所述第一数据库的预写日志中确定出待同步的修改信息。
40.优选地,所述处理单元,还用于,将所述目标数据表的修改信息的数据格式由源数据格式转换为预设数据格式;所述源数据格式为所述第一数据库存储数据的数据格式;
41.将所述目标数据的修改信息的数据格式由预设数据格式分别转换为所述至少一个第二数据库的目标数据格式。
42.优选地,所述处理单元,还用于,获取预设的目标数据处理信息;
43.根据所述预设的目标数据处理信息,对第一数据进行相应的数据处理,得到目标数据的待同步修改信息;所述第一数据是所述目标数据的修改信息中的数据;
44.将目标数据的待同步修改信息的数据格式分别转换为所述至少一个第二数据库的目标数据格式,并分别按照所述至少一个第二数据库的目标数据格式向至少一个第二数据库发送对应的所述目标数据的待同步修改信息。
45.优选地,所述处理单元,还用于生成埋点日志;所述埋点日志用于记录数据的同步速率及数据的同步信息;
46.周期性向用户发送所述埋点日志。
47.第三方面,本技术实施例提供了一种电子设备,包括:
48.处理器和存储器,所述存储器存储有计算机程序,当所述计算机程序被执行时,使得所述电子设备执行上述第一方面任一项所述的方法。
49.第四方面,本技术实施例提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行第一方面任意一项所述的方法。
50.采用本技术实施例所提供的方案,由于第一数据库的预写日志中记录了对第一数据库中存储的数据的修改操作,因此当第一数据库中的数据发生修改时,数据同步装置可以实时获取第一数据库的预写日志中待同步的修改信息;获取预设待同步配置信息,并根据预设待同步配置信息确定待同步的修改信息是否为目标数据表的修改信息;若是目标数据表的修改信息,根据预设待同步配置信息确定目标数据表的修改信息中是否有目标数据的修改信息。由于至少一个第二数据库的数据格式与第一数据库的数据格式不同,无法直接将目标数据发送至至少一个第二数据库,因此若有目标数据的修改信息,则根据预设待同步配置信息确定目标数据的修改信息对应的至少一个第二数据库,并将目标数据的修改信息的数据格式分别转换为至少一个第二数据库的目标数据格式,并分别按照至少一个第二数据库的目标数据格式向至少一个第二数据库发送对应的目标数据的修改信息。这样一来,在第一数据库中的数据发生修改时,根据上述数据同步方法可以实现与第一数据库异构的至少一个第二数据库与第一数据库间相关联数据的同步。
附图说明
51.为了更清楚地说明本技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
52.图1为本技术实施例提供的一种数据同步方法的流程示意图;
53.图2为本技术实施例提供的另一种数据同步方法的流程示意图;
54.图3为本技术实施例提供的另一种数据同步方法的流程示意图;
55.图4为本技术实施例提供的一种数据同步装置的结构示意图;
56.图5为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
57.为了更好的理解本技术的技术方案,下面结合附图对本技术实施例进行详细描述。
58.应当明确,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。
59.在本技术实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术。在本技术实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
60.应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,甲和/或乙,可以表示:单独存在甲,同时存在甲和乙,单独存在乙这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
61.在对本技术实施例进行具体介绍之前,首先对本技术实施例应用或可能应用的术语进行解释。
62.json(javascript object notation)数据格式:是一种轻量级的数据交换格式,json采用完全独立于语言的文本格式,这些特性使json成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
63.zookeeper:是一个开源的分布式协调服务,zookeeper的设计目标是将那些复杂且容易出错的分布式一致性封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。zookeeper是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于zookeeper实现诸如数据发布/订阅,负载均衡,命名服务,分布式协调/通知,集群管理,,分布式锁和分布式队列等功能。
64.mysql数据库:mysql数据库由瑞典mysql ab公司开发,是一种安全、跨平台、高效的,并与php、java等主流编程语言紧密结合的数据库系统。mysql是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
65.elasticseach数据库:elasticsearch是一个分布式可扩展的实时搜索和分析引擎,是当前流行的企业级搜索引擎,能够达到实时搜索,稳定,可靠,快速,安装使用方便,它
提供了一个分布式多用户能力的全文搜索引擎。elasticsearch可以建立全文索引,即,把文本中的内容拆分成若干关键词,然后根据关键词创建索引,查询时根据关键词查询索引,最终找到包含关键词的文章。elasticseach可将数据和索引分离,把索引分片,分布式的保存到不同节点,节点可以扩展到上百个,能实时检索、处理pb级别的结构化或非结构化数据。
66.clickhouse数据库:clickhouse数据库是俄罗斯的yandex于2016年开源的列式存储数据库,使用c++语言编写,主要用于在线分析处理查询(on-line analytical processing,olap),能够使用结构化查询语言(structured query language,sql)查询实时生成分析数据报告。
67.kafka:kafka是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做mq系统),常见可以用于web日志、访问日志,消息服务等等。kafka可以实现发布和订阅事件流,类似于消息队列或企业消息系统;容错性的数据存储系统;实时事件流处理;支持集成丰富的数据源和数据存储介质。根据实际需求和定义,kafka可以作为数据库来使用。
68.elk日志系统:elasticsearch、logstash、kibana(elk)是一套开源的日志管理方案,在实时数据检索和分析场合,三者通常是配合共用。
69.graylog:是一个开源的完整的日志管理工具,功能和elk类似。
70.相关技术中,在进行不同数据库中存储的数据的数据同步时,可以周期性进行待同步的数据的读取,然后将读取的待同步的数据转换成不同数据库的数据格式,再同步至对应的数据库中。但是这种周期性进行一次数据同步的方法只能实现数据的批量同步,无法实现数据的实时同步,缺乏灵活性和实时性。
71.针对上述问题,本技术实施例提供了一种数据同步方法、装置、设备及存储介质。在该方法中,由于第一数据库中的数据发生修改时,会先在预写日志中记录第一数据库中数据的修改信息,然后再将修改的数据存储至磁盘中。因此,数据的同步装置在检测到第一数据库的预写日志中有新增的第一数据库中数据的修改信息时,可实时获取预写日志中新增的待同步的数据的修改信息。数据同步装置可以获取预设待同步配置信息,根据预设待同步配置信息可以确定待同步的数据的修改信息是否为目标数据表的修改信息。其中,预设待同步配置信息包括至少一个第二数据库中需同步的目标数据的标识信息、目标数据表的表名信息。也就是说,根据预设待同步配置信息可以确定待同步的修改信息中记录的第一数据库中修改的数据所在的数据表是否为与目标数据表有关联的数据表。
72.若待同步的修改信息是目标数据表的修改信息,此时可以根据预设待同步配置信息确定目标数据表的修改信息中是否有目标数据的修改信息。也就是说,由于至少一个第二数据库中存储的目标数据可能只包含目标数据表中的部分数据信息,因此需要根据预设待同步配置信息中目标数据的标识信息确定目标数据表的修改信息中是否有目标数据的修改信息。
73.若有目标数据的修改信息,数据的同步装置将根据预设待同步配置信息确定目标数据的修改信息对应的至少一个第二数据库,将目标数据的修改信息的数据格式分别转换为至少一个第二数据库的目标数据格式,并分别按照至少一个第二数据库的目标数据格式向至少一个第二数据库发送对应的目标数据的修改信息。其中,由于至少一个第二数据库
的数据格式各不相同,因此,需要将目标数据的修改信息的数据格式分别转换为至少一个第二数据库的目标数据格式,然后分别发送至对应的至少一个第二数据库。这样一来,根据本技术实施例所述方法,可以实现第一数据库与不同的异构数据库间相关联数据的同步。以下进行详细说明。
74.图1为本技术实施例提供的一种数据同步方法的流程示意图。参见图1所示,本技术实施例提供的数据同步方法主要包括以下几个步骤:
75.步骤s101、获取第一数据库的预写日志中待同步的修改信息。
76.其中,预写日志中记录有第一数据库中数据的修改信息;数据的修改信息中至少包含有数据所在数据表的信息及数据的修改操作信息。
77.在本技术实施例中,由于当第一数据库中的数据发生修改时,会先将数据的修改信息写入至预写日志中,再将修改的数据写入至磁盘中,因此,第一数据库的预写日志中存储了所有的第一数据库中数据的修改信息的记录。数据同步装置可以在预写日志中确定出未同步的修改信息,并在第一数据库的预写日志中未同步的修改信息中确定出待同步的修改信息,例如可以将未同步的修改信息中的第一条修改信息确定为待同步的修改信息。
78.第一数据库的预写日志中存储有所有的第一数据库中数据的修改信息,并且数据的修改信息中至少包含有数据所在数据表的信息及数据的修改操作信息。由于在第一数据库中,数据是以数据表的形式来存储的,每个数据表都有对应的表名,因此上述数据所在数据表的信息也就是数据所在的数据表的表名信息。
79.作为一种可能的实现方式,获取第一数据库的预写日志中待同步的修改信息包括:读取第一数据库的预写日志;获取预写日志的已同步的修改信息的位置信息;根据位置信息,在第一数据库的预写日志中确定出待同步的修改信息。
80.具体的,预写日志中存储了第一数据库中数据的全部修改信息,也就是说,预写日志中存储的数据的全部修改信息中包括已与其他数据库完成同步的修改信息和未同步的修改信息。由于数据同步装置中存储有预写日志中已与其他数据库完成同步的修改信息的位置,因此数据同步装置可以先读取第一数据库的预写日志,并根据预写日志中已与其他数据库完成同步的修改信息的位置,在预写日志中确定出全部的未同步的修改信息,并在全部的未同步的修改信息中确定出待同步的修改信息。
81.需要说明的是,第一数据库中数据的修改信息在预写日志的日志文件中以行的形式存储,也就是说,在预写日志中,每一行记录的内容为每一次对第一数据库中的数据进行修改的信息。因此,数据的同步装置在确定出全部的未同步的修改信息之后,可以在未同步的修改信息中选取一行数据的修改信息作为待同步修改信息。
82.步骤s102、获取预设待同步配置信息,根据预设待同步配置信息确定待同步的修改信息是否为目标数据表的修改信息。
83.其中,预设待同步配置信息包括至少一个第二数据库中需同步的目标数据表的标识信息及目标数据的标识信息;至少一个第二数据库中需同步的目标数据是至少一个第二数据库中存储的,与第一数据库存储的数据相关联的数据。由于在数据库中,数据可以按数据表的形式存储,每个数据表中包含多个列,每一列都存储有不同类型的数据信息,因此,至少一个第二数据库中需同步的目标数据的标识信息可以是目标数据所在的目标数据表的某一列的位置信息,或者列名称等信息。
84.具体的,至少一个第二数据库中存储有与第一数据库存储的数据相关联的数据,当第一数据库中与至少一个第二数据库中相关联的数据发生修改时,至少一个第二数据库中存储的,与第一数据库存储的数据相关联的数据需要同步进行修改。那么,至少一个第二数据库中存储的,与第一数据库存储的数据相关联的数据就是至少一个第二数据库中需同步的目标数据。由于第一数据库中包含多个数据表,发生修改的数据所在的数据表可能是目标数据表,也可能是其他数据表。因此,数据同步装置获取到的第一数据库的预写日志中待同步的修改信息中的数据所在的数据表可能是目标数据表,也可能是第一数据库中除了目标数据表之外的其他数据表,那么数据同步装置需要确定第一数据库的预写日志中待同步的修改信息中的数据所在的数据表是否为目标数据表。因此,数据同步装置在获取到第一数据库的预写日志中待同步的修改信息之后,可以再获取预设待同步配置信息,根据预设待同步配置信息中的至少一个第二数据库中需同步的目标数据表的标识信息,例如,可以是目标数据表的表名信息。并且,由于待同步的修改信息中包含数据所在数据表的信息,数据同步装置可以根据待同步的修改信息中数据所在数据表的信息和预设待同步配置信息中目标数据表的标识信息确定待同步的修改信息是否为目标数据表的修改信息。
85.需要说明的是,在数据同步装置中,可以预先根据至少一个第二数据库中需同步的目标数据设置待同步配置信息。至少一个第二数据库可以是mysql数据库、elasticseach数据库、clickhouse数据库、kafka等数据库中的一个或者多个,本技术对此不作限制。
86.步骤s103、若待同步的修改信息是目标数据表的修改信息,根据预设待同步配置信息确定目标数据表的修改信息中是否有目标数据的修改信息。
87.其中,目标数据表的修改信息中包含至少一项数据的修改信息。
88.具体的,若待同步的修改信息是目标数据表的修改信息,数据同步装置可以根据预设待同步配置信息确定目标数据表的修改信息中是否有目标数据的修改信息。第一数据库中的数据是以数据表的形式存储的,每个数据表中包含多个列,当第一数据库中的某个数据表发生修改时,可能修改了该数据表的某几列,目标数据所在的列的位置可能不是该数据表中被修改的数据所在的列的位置,也就是说,该数据表中被修改的数据可能不包括目标数据,此时无需将该数据表中被修改的数据同步至至少一个第二数据库;目标数据所在的列也可能是该数据表中被修改的数据所在列的其中几列,即目标数据可能是该数据表中被修改的数据的其中一部分数据,此时,只需将该数据表中被修改的数据中包含的目标数据同步至至少一个第二数据库,即,只需对该数据表中被修改的数据中包含的目标数据执行数据同步方法的下述步骤。
89.因此,在确定待同步的修改信息是目标数据表的修改信息之后,需要确定目标数据表的修改信息中是否有目标数据的修改信息。数据同步装置根据待同步的修改信息中的数据的修改操作信息可以获知被修改的数据在目标数据表中的位置信息,并且根据预设待同步配置信息中的至少一个第二数据库中需同步的目标数据表的标识信息及目标数据的标识信息可以获知目标数据在目标数据表中的位置信息,通过对比可以确定被修改的数据在目标数据表中的位置信息中是否有目标数据在目标数据表中的位置信息。若有,则可以确定目标数据表的修改信息中有目标数据的修改信息;若没有,则可以确定目标数据表的修改信息中没有目标数据的修改信息。
90.步骤s104、若有目标数据的修改信息,则根据预设待同步配置信息确定目标数据
的修改信息对应的至少一个第二数据库,将目标数据的修改信息的数据格式分别转换为至少一个第二数据库的目标数据格式,并分别按照至少一个第二数据库的目标数据格式向至少一个第二数据库发送对应的目标数据的修改信息。
91.其中,目标数据格式为第二数据库存储数据的数据格式。
92.具体的,当数据同步装置确定目标数据表的修改信息中有目标数据的修改信息之后,说明此时需要将目标数据的修改信息同步至至少一个第二数据库。由于预设待同步配置信息中包括至少一个第二数据库中需同步的目标数据表的标识信息及目标数据的标识信息,因此,数据同步装置根据预设待同步配置信息中的至少一个第二数据库中需同步的目标数据表的标识信息及目标数据的标识信息可以获知哪些数据库需要同步目标数据,即为可以确定出至少一个第二数据库。由于不同类型的数据库能够实现的功能不同,所采用的计算机环境也由不同平台组成,导致数据库存储的数据的数据格式不完全相同,并且第一数据库的预写日志中记录的修改信息中采用的数据格式为第一数据库存储数据时采用的数据格式,因此至少一个第二数据库的目标数据格式与第一数据库的预写日志中记录修改信息采用的格式可能不完全相同,即为目标数据的修改信息的数据格式与至少一个第二数据库所采用的数据格式可能不完全相同,此时,无法直接将目标数据的修改信息发送至数据格式不同的至少一个第二数据库。因此,数据同步装置需要将目标数据的修改信息的数据格式分别转换为至少一个第二数据库的目标数据格式,并分别按照至少一个第二数据库的目标数据格式向至少一个第二数据库发送对应的目标数据的修改信息。
93.例如,假设第一数据库中存储的手机信息数据表中存储了多个型号的手机价格信息、手机颜色信息、手机内存信息等信息,第一列为手机价格信息,第二列为手机颜色信息,第三列为手机内存信息。数据库a和数据库b是与第一数据库不同的两个数据库,数据库a和数据库b中均存储有手机信息数据表中的手机价格信息。数据库a和数据库b中存储的手机信息数据表中的手机价格信息与第一数据库中存储的手机信息数据表中的手机价格信息相关联,因此当第一数据库中存储的手机信息数据表中的手机价格信息发生修改时,数据库a和数据库b中存储的手机信息数据表中的手机价格信息也需要进行修改,即为需要将数据库a和数据库b中存储的手机信息数据表中的手机价格信息进行数据同步。此时预设待同步配置信息可以包括数据库a和数据库b中需同步的数据表为手机信息数据表,且需同步的手机信息数据表中需同步的数据为手机价格信息。
94.如果此时把第一数据库中存储的手机信息数据表中存储的手机价格信息中手机1的价格数据由c更改为d,手机内存信息中手机1的内存数据由e更改为f。那么预写日志中将会记录:手机信息数据表的手机价格信息中手机1的价格数据由c更改为d、手机内存信息中手机1的内存数据由e更改为f。数据同步装置读取预写日志,由于预写日志中记录了所有的第一数据库中数据的修改记录,因此数据同步装置可以在第一数据库的预写日志中确定未同步的修改信息包括手机信息数据表的手机价格信息中手机1的价格数据由c更改为d、手机内存信息中手机1的内存数据由e更改为f。并将手机信息数据表的手机价格信息中手机1的价格数据由c更改为d、手机内存信息中手机1的内存数据由e更改为f确定为待同步的修改信息。然后数据同步装置获取预设待同步配置信息,由于预设待同步配置信息中包括数据库a和数据库b中需同步的数据表为手机信息数据表,且需同步的手机信息数据表中需同步的数据为手机价格信息,因此数据同步装置可以确定第一数据库的预写日志中待同步的
修改信息是目标数据表的修改信息,即,手机信息数据表的修改信息。进一步地,数据同步装置根据预设待同步配置信息可以确定预写日志中待同步的修改信息中有目标数据的修改信息,即,手机信息数据表中的手机价格信息的修改信息。并且,数据同步装置可以根据上述预设待同步配置信息确定对手机信息数据表中的手机价格信息进行同步的数据库为数据库a和数据库b。此时,数据同步装置可以将目标数据的修改信息的数据格式分别转换为数据库a和数据库b对应的目标数据格式,然后分别按照数据库a和数据库b的目标数据格式向数据库a和数据库b发送对应的目标数据的修改信息。即为,将修改信息为手机信息数据表的手机价格信息中手机1的价格数据由c更改为d的修改信息确定为目标数据的修改信息,并根据数据库a的数据格式,将该目标数据的修改信息的数据格式由第一数据库的数据格式转换为数据库a的数据格式。根据数据库b的数据格式,将该目标数据的修改信息的数据格式由第一数据库的数据格式转换为数据库b的数据格式。将数据格式为数据库a的数据格式的目标数据的修改信息发送至数据库a中,将数据格式为数据库b的数据格式的目标数据的修改信息发送至数据库b中。这样一来,当第一数据库中与数据库a、数据库b相关联的手机信息数据表中手机价格信息的数据发生修改时,通过数据同步装置实现第一数据库与数据库a、数据库b的数据同步。
95.作为一种可能的实现方式,图2为本技术实施例提供另一种数据同步方法的流程示意图。具体步骤如下:
96.步骤s201、获取第一数据库的预写日志中待同步的修改信息。
97.具体的可参考上述步骤s101,在此不再赘述。
98.步骤s202、获取预设待同步配置信息,根据预设待同步配置信息确定待同步的修改信息是否为目标数据表的修改信息。
99.具体的可参考上述步骤s102,在此不再赘述。
100.步骤s203、若是目标数据表的修改信息,则将目标数据表的修改信息的数据格式由源数据格式转换为预设数据格式。
101.其中,源数据格式为第一数据库存储数据的数据格式。
102.具体的,第一数据库存储数据的数据格式,即,源数据格式,只适用于在第一数据库内部进行数据同步与传输,当第一数据库的数据需要传输至至少一个第二数据库时,由于至少一个第二数据库的数据格式不完全相同,为方便数据传输与解析,可以先将第一数据库的数据的数据格式由源数据格式转换成通用的数据格式再进行传输。由于预设数据格式是一种计算机通用数据格式,因此数据同步装置可以将目标数据表的修改信息的数据格式由源数据格式转换为预设数据格式,以方便解析目标数据表的修改信息。其中,预设数据格式是数据同步装置预先设置的,例如,预设数据格式为json数据格式。
103.步骤s204、根据预设待同步配置信息确定目标数据表的修改信息中是否有目标数据的修改信息。
104.具体的可参考上述步骤s103,在此不再赘述。
105.步骤s205、若有目标数据的修改信息,则根据预设待同步配置信息确定目标数据的修改信息对应的至少一个第二数据库,将目标数据的修改信息的数据格式由预设数据格式分别转换为至少一个第二数据库的目标数据格式,并分别按照至少一个第二数据库的目标数据格式向至少一个第二数据库发送对应的目标数据的修改信息。
106.具体的可参考上述步骤s104,在此不再赘述。
107.需要说明的是,在本技术实施例中,由于在步骤s203中,目标数据表的修改信息的数据格式已由源数据格式转换为预设数据格式,那么在确定目标数据的修改信息对应的至少一个第二数据库之后,数据同步装置可以将目标数据的修改信息的数据格式由预设数据格式分别转换为至少一个第二数据库的目标数据格式。
108.步骤s206、根据第一数据库的预写日志中待同步的修改信息,更新预写日志的已同步的修改信息的位置信息。
109.其中,所述位置信息用于记录预写日志中已与其他数据库完成同步的修改信息的位置。
110.具体的,数据同步装置在获取了第一数据库的预写日志中待同步的修改信息之后,可以根据第一数据库的预写日志中待同步的修改信息将预写日志的已同步的修改信息的位置信息更改为第一数据库的预写日志中待同步的修改信息的位置信息。这样一来,在下一次获取第一数据库的预写日志中待同步的修改信息时,能够根据更新后的预写日志的已同步的修改信息的位置信息确定预写日志中待同步的修改信息。
111.步骤s207、根据更新后的预写日志的已同步的修改信息的位置信息,确定预写日志中是否有未同步的修改信息,如有,则重新执行步骤s201-206。
112.在本技术实施例中,由于是逐行对预写日志中未同步的修改信息进行数据同步的,因此在进行完一行修改信息的数据同步之后,需要继续将预写日志中其他未同步的修改信息进行数据同步。此时,可以根据更新后的预写日志的已同步的修改信息的位置信息,检测预写日志中是否有未同步的修改信息,若有,在更新预写日志的已同步的修改信息的位置信息之后,需继续获取第一数据库的预写日志中待同步的修改信息并进行数据同步,即,继续执行步骤s201至步骤s206,直至第一数据库的预写日志中没有未同步的修改信息。
113.作为一种可能的实现方式,图3为本技术实施例提供的另一种数据同步方法的流程示意图。具体步骤如下:
114.步骤s301、获取第一数据库的预写日志中待同步的修改信息。
115.具体的可参考上述步骤s201,在此不再赘述。
116.步骤s302、获取预设待同步配置信息,根据预设待同步配置信息确定待同步的修改信息是否为目标数据表的修改信息。
117.具体的可参考上述步骤s202,在此不再赘述。
118.步骤s303、若是目标数据表的修改信息,则将目标数据表的修改信息的数据格式由源数据格式转换为预设数据格式。
119.具体的可参考上述步骤s203,在此不再赘述。
120.步骤s304、根据预设待同步配置信息确定目标数据表的修改信息中是否有目标数据的修改信息。
121.步骤s305、若有目标数据的修改信息,获取预设的目标数据处理信息。
122.具体的,至少一个第二数据库中需同步的目标数据是至少一个第二数据库中存储的,与第一数据库存储的数据相关联的数据,但至少一个第二数据库中存储的目标数据,可能是对第一数据库中存储的与第二数据库中存储的数据相关联的数据进行了一些处理操作后再存储至至少一个第二数据库中的。因此,数据同步装置确定目标数据表的修改信息
中有目标数据的修改信息后,需要先获取至少一个第二数据库所需的对目标数据的修改信息的数据处理信息,即,预设的目标数据处理信息。
123.需要说明的是,可以在数据同步装置中预先根据至少一个第二数据库所需的对第一数据库中与至少一个第二数据库相关联的数据执行的数据处理操作,设置目标数据处理信息。
124.步骤s306、根据预设的目标数据处理信息,对第一数据进行相应的数据处理,得到目标数据的待同步修改信息。
125.其中,第一数据是目标数据的修改信息中的数据。
126.具体的,数据同步装置在获取预设的目标数据处理信息之后,可以根据预设的目标数据处理信息,对目标数据的修改信息中的数据,即第一数据,进行相应的数据处理。那么,处理之后的第一数据就是目标数据的待同步修改信息,也就是说,进行相应的数据处理之后的第一数据为至少一个第二数据库需同步的目标数据。
127.示例性的,假设第一数据库中存储的手机信息数据表中存储了多个型号的手机价格信息、手机颜色信息、手机内存信息等信息,第一列为手机价格信息,第二列为手机颜色信息,第三列为手机内存信息。数据库g是与第一数据库不同的数据库。数据库g中的手机信息数据表中存储有手机价格信息,并且数据库g中手机信息数据表中的手机价格信息为将第一数据库中的手机信息数据表中的手机价格进行8折折扣处理之后的价格信息。因此,当第一数据库中存储的手机信息数据表中的手机价格信息发生修改时,数据库g中存储的数据需要与第一数据库进行数据同步修改。那么,预设待同步配置信息可以包括数据库g中需同步的数据表为手机信息数据表,且需同步的手机信息数据表中需同步的数据为手机价格信息。预设的目标数据处理信息可以包括将需同步的手机信息数据表中需同步的手机价格信息中的手机价格乘80%。
128.这样一来,假设第一数据库中手机信息数据表中的手机价格信息中手机1的价格数据由j更改为k,那么预写日志中将会记录:手机信息数据表的手机价格信息中手机1的价格数据由j更改为k。此时,数据同步装置读取预写日志,由于预写日志中记录了所有的第一数据库中数据的修改记录,因此数据同步装置可以在第一数据库的预写日志中确定未同步的修改信息包括手机信息数据表的手机价格信息中手机1的价格数据由j更改为k。并将手机信息数据表的手机价格信息中手机1的价格数据由j更改为k确定为待同步的修改信息。然后数据同步装置获取预设待同步配置信息,由于预设待同步配置信息中包括数据库g中需同步的数据表为手机信息数据表,且需同步的手机信息数据表中需同步的数据为手机价格信息,因此数据同步装置可以确定第一数据库的预写日志中待同步的修改信息是目标数据表的修改信息,即,手机信息数据表的修改信息,并将目标数据表的修改信息的数据格式由源数据格式转换为json数据格式。
129.进一步地,数据同步装置根据预设待同步配置信息可以确定待同步的修改信息中有目标数据的修改信息,即,手机信息数据表中的手机价格信息的修改信息。在确定有目标数据的修改信息之后,获取预设的目标数据处理信息,即,将需同步的手机信息数据表中需同步的手机价格信息中的手机价格乘80%。并根据预设的目标数据处理信息,对第一数据,即目标数据修改信息中的手机价格k,进行相应的数据处理,得到目标数据的待同步修改信息。也就是说,目标数据的待同步修改信息为需同步的手机信息数据表中需同步的手机价
格信息中手机1的价格数据更改为80%*k。这样一来,当第一数据库中与数据库g相关联的手机信息数据表中手机价格信息的数据发生修改时,数据同步装置可以根据数据库g所需的数据处理方式预先设置目标数据处理信息,并根据预设的目标数据处理信息对需同步的手机信息数据表中手机价格信息中修改的数据进行处理之后再同步至数据库g中。
130.步骤s307、将目标数据的待同步修改信息的数据格式分别转换为至少一个第二数据库的目标数据格式,并分别按照至少一个第二数据库的目标数据格式向至少一个第二数据库发送对应的目标数据的待同步修改信息。
131.具体的可参考上述步骤s205,在此不再赘述。
132.步骤s308、生成埋点日志,周期性向用户发送埋点日志。
133.其中,埋点日志用于记录数据的同步速率及数据的同步信息;数据的同步信息中可以包括数据的同步延时信息、每一次数据同步的耗时、数据同步的错误信息等。
134.具体的,数据同步装置可以在预写日志读取、数据处理、数据发送阶段分别设置埋点日志1、埋点日志2、埋点日志3,用以记录数据的同步速率及数据的同步信息,并周期性向用户发送埋点日志。用户通过各埋点日志中记录的数据同步信息可以在数据同步过程出现错误时快速定位错误点并进行修改,也可以根据数据的同步速率及数据的同步信息对数据同步装置做出可视化的监控分析,以方便后续对数据同步装置作出优化。例如,根据各埋点日志中记录的数据的同步速率及数据的同步信息可以创建一些核心指标的可视化仪表,比如数据表m的数据同步速率折线图,数据同步的错误率曲线等。
135.在一种可能的实现方式中,数据同步装置可以通过elk日志系统或者graylog实现对埋点日志的管理,用户可以通过elk日志系统或者graylog获取数据同步的各项核心指标并进行分析。
136.需要说明的是,数据同步装置向用户发送埋点日志的周期可以根据实际需要预先设置,可以是1s、5s、15s、30s、60s等,本技术对此不作限制。
137.需要说明的是,步骤s308在上述步骤s301至步骤s307、下述步骤s309执行的过程中可以同时执行,以实现对数据同步过程的监控。
138.步骤s309、根据第一数据库的预写日志中待同步的修改信息,更新预写日志的已同步的修改信息的位置信息。
139.具体的可参考上述步骤s206,在此不再赘述。
140.需要说明的是,在具体实现中,数据同步装置中记录预写日志中已同步的修改信息的位置信息的功能可以通过zookeeper来实现,zookeeper通过记录预写日志中的文件名和偏移量记录预写日志中已同步的修改信息的位置信息。也就是说,数据同步装置在zookeeper中可以记录已经读取至第一数据库的预写日志中的某个文件的文件名,以及在该文件中已读取的位置信息,即偏移量。当然,也可以通过其他方式来实现,本技术对此不作限制。
141.步骤s310、根据更新后的预写日志的已同步的修改信息的位置信息,确定预写日志中是否有未同步的修改信息,如有,则重新执行步骤s301-309。
142.在本技术实施例中,由于是逐行对预写日志中未同步的修改信息进行数据同步的,因此在进行完一行修改信息的数据同步之后,需要继续将预写日志中其他未同步的修改信息进行数据同步。此时,根据更新后的预写日志的已同步的修改信息的位置信息,可以
检测预写日志中是否有未同步的修改信息,若有,在更新预写日志的已同步的修改信息的位置信息之后,需继续获取第一数据库的预写日志中待同步的修改信息并进行数据同步,即,继续执行步骤s301至步骤s309,直至第一数据库的预写日志中没有未同步的修改信息。
143.这样一来,在第一数据库中的数据发生修改时,根据上述实施例所述数据同步方法可以实现与第一数据库异构的至少一个第二数据库与第一数据库间相关联数据的同步,提高数据同步的效率。
144.与上述实施例相对应,如图4所示,本技术实施例还提供了一种数据同步装置,包括:
145.获取单元401,用于获取第一数据库的预写日志中待同步的修改信息。其中,预写日志中记录有第一数据库中数据的修改信息;数据的修改信息中至少包含有数据所在数据表的信息及数据的修改操作信息。
146.处理单元402,用于获取预设待同步配置信息,根据预设待同步配置信息确定待同步的修改信息是否为目标数据表的修改信息。若待同步的修改信息是目标数据表的修改信息,根据预设待同步配置信息确定目标数据表的修改信息中是否有目标数据的修改信息;若有目标数据的修改信息,则根据预设待同步配置信息确定目标数据的修改信息对应的至少一个第二数据库,将目标数据的修改信息的数据格式分别转换为至少一个第二数据库的目标数据格式,并分别按照至少一个第二数据库的目标数据格式向至少一个第二数据库发送对应的目标数据的修改信息。
147.其中,目标数据格式为第二数据库存储数据的数据格式。预设待同步配置信息包括至少一个第二数据库中需同步的目标数据表的标识信息及目标数据的标识信息。至少一个第二数据库中需同步的目标数据是至少一个第二数据库中存储的,与第一数据库存储的数据相关联的数据。
148.在一个可能的实施例中,处理单元402,具体用于根据目标数据表的修改信息,更新预写日志的已同步的修改信息的位置信息。
149.在一个可能的实施例中,获取单元401,具体用于读取第一数据库的预写日志;获取预写日志的已同步的修改信息的位置信息。处理单元402,具体用于根据位置信息,在第一数据库的预写日志中确定出待同步的修改信息。
150.在一个可能的实施例中,处理单元402,还用于将目标数据表的修改信息的数据格式由源数据格式转换为预设数据格式;将目标数据的修改信息的数据格式由预设数据格式分别转换为至少一个第二数据库的目标数据格式。
151.在一个可能的实施例中,处理单元402,还用于获取预设的目标数据处理信息;根据预设的目标数处理信息,对第一数据进行相应的数据处理,得到目标数据的待同步修改信息;将目标数据的待同步修改信息的数据格式分别转换为至少一个第二数据库的目标数据格式,并分别按照至少一个第二数据库的目标数据格式向至少一个第二数据库发送对应的所述目标数据的待同步修改信息。
152.在一个可能的实施例中,处理单元402,还用于生成埋点日志,其中,埋点日志用于记录数据的同步速率及数据的同步信息;周期性向用户发送埋点日志。
153.与上述实施例相对应,本技术还提供了一种电子设备。图5为本发明实施例提供的一种电子设备的结构示意图,所述电子设备500可以包括:处理器501、存储器502及通信单
元503。这些组件通过一条或多条总线进行通信,本领域技术人员可以理解,图中示出的服务器的结构并不构成对本发明实施例的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
154.其中,所述通信单元503,用于建立通信信道,从而使所述电子设备可以与其它设备进行通信。接收其他设备发送的用户数据或者向其他设备发送用户数据。
155.所述处理器501,为电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器502内的软件程序和/或模块,以及调用存储在存储器内的数据,以执行电子设备的各种功能和/或处理数据。所述处理器可以由集成电路(integrated circuit,ic)组成,例如可以由单颗封装的ic所组成,也可以由连接多颗相同功能或不同功能的封装ic而组成。举例来说,处理器501可以仅包括中央处理器(central processing unit,cpu)。在本发明实施方式中,cpu可以是单运算核心,也可以包括多运算核心。
156.所述存储器502,用于存储处理器501的执行指令,存储器502可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
157.当存储器502中的执行指令由处理器501执行时,使得电子设备500能够执行图3所示实施例中的部分或全部步骤。
158.具体实现中,本发明还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本发明提供的数据同步方法的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)或随机存储记忆体(random access memory,ram)等。
159.本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
160.本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于装置实施例和终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1