CN116126874A - 数据同步方法和装置、电子设备和计算机可读存储介质 - Google Patents
数据同步方法和装置、电子设备和计算机可读存储介质 Download PDFInfo
- Publication number
- CN116126874A CN116126874A CN202210950227.7A CN202210950227A CN116126874A CN 116126874 A CN116126874 A CN 116126874A CN 202210950227 A CN202210950227 A CN 202210950227A CN 116126874 A CN116126874 A CN 116126874A
- Authority
- CN
- China
- Prior art keywords
- data
- synchronization
- target
- full
- data source
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据同步方法和装置、电子设备和计算机可读存储介质,该数据同步方法包括:响应于全量数据同步任务,将同步数据源中的全量数据同步至目标数据源,在全量数据同步任务完成后,从目标消息队列中获取目标标识,其中,目标标识是在全量数据同步任务开启后加入目标消息队列的,基于目标标识确定同步数据源中待同步的目标数据,目标数据为全量数据同步任务开始后在同步数据源中发生变化的数据,在同步数据源与目标数据源之间执行目标数据的同步。本申请的技术方案能够实现同步数据源和目标数据源之间全量数据的同步,以及全量同步任务开始后同步数据源中发生变化的数据的同步,从而保证了不同数据库间数据的完整性和一致性。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种数据同步方法和装置、电子设备和计算机可读存储介质。
背景技术
随着计算机技术的发展,大数据的应用也越来越广泛。在一些业务应用场景中,需要将非关系型数据库的数据同步到关系型数据库中。
在数据同步的过程中,如果非关系型数据库正在对外提供服务,则不可避免地会存在数据的写入操作,例如数据的新增、删除或者修改,这样会产生数据的变化。然而,主流的数据同步方法通常只对同步任务开启时刻的全量数据进行同步。因此,如何对同步任务开启之后写入的数据进行同步以保证同步数据的完整性和一致性是亟待解决的技术问题。
发明内容
有鉴于此,本申请的实施例提供了一种数据同步方法和装置、电子设备和计算机可读存储介质,能够实现在全量数据同步任务开启后对增量数据进行同步,保证了同步数据的完整性和一致性。
第一方面,本申请的实施例提供了一种数据同步方法,包括:响应于全量数据同步任务,将同步数据源中的全量数据同步至目标数据源;在全量数据同步任务完成后,从目标消息队列中获取目标标识,其中,目标标识是在全量数据同步任务开启后加入目标消息队列的;基于目标标识确定同步数据源中待同步的目标数据,目标数据为全量数据同步任务开始后在同步数据源中发生变化的数据;在同步数据源与目标数据源之间执行目标数据的同步。
第二方面,本申请的实施例提供了一种数据同步装置,包括:同步模块,用于响应于全量数据同步任务,将同步数据源中的全量数据同步至目标数据源;获取模块,用于在全量数据同步任务完成后,从目标消息队列中获取目标标识,其中,目标标识是在全量数据同步任务开启后加入目标消息队列的;同步模块,还用于基于目标标识确定同步数据源中待同步的目标数据,目标数据为全量数据同步任务开始后在同步数据源中发生变化的数据;在同步数据源与目标数据源之间执行目标数据的同步。
第三方面,本申请的实施例提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器,其中,处理器用于执行上述第一方面所述的数据同步方法。
第四方面,本申请的实施例提供了一种计算机可读存储介质,存储介质存储有计算机程序,计算机程序用于执行上述第一方面所述的数据同步方法。
本申请的实施例提供了一种数据同步方法和装置、电子设备和计算机可读存储介质,响应于全量数据同步任务,将同步数据源中的全量数据同步至目标数据源,在全量数据同步任务完成后,从目标消息队列中获取目标标识,基于目标标识确定同步数据源中待同步的目标数据,并在同步数据源与目标数据源之间执行目标数据的同步。根据本申请实施例提供的数据同步方法,实现了同步数据源和目标数据源之间全量数据的同步,以及全量同步任务开始后同步数据源中发生变化的数据的同步,保证了不同数据库间数据的完整性和一致性。
附图说明
图1a所示为本申请一示例性实施例提供的数据同步系统的系统架构示意图。
图1b所示为本申请一示例性实施例提供的数据同步方法的流程示意图。
图2所示为本申请一示例性实施例提供的数据同步方法的流程示意图。
图3所示为本申请另一示例性实施例提供的数据同步方法的流程示意图。
图4所示为本申请另一示例性实施例提供的数据同步方法的流程示意图。
图5所示为本申请另一示例性实施例提供的数据同步方法的流程示意图。
图6所示为本申请一示例性实施例提供的数据同步装置的结构示意图。
图7所示为本申请一示例性实施例提供的用于执行数据同步方法的电子设备的框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
相关技术
随着大数据技术的快速发展与广泛应用,在一些场景下,由于业务需求需要对不同数据库之间的数据进行同步处理,即执行数据同步任务,以在不同数据库之间实现数据的完整性和一致性。例如,在有些场景下,需要将非关系型数据库的数据同步到关系型数据库中。为了便于理解,本申请某些实施例以非关系型数据库,例如,Elasticsearch(简称Es),和关系型数据库,例如,MySQL,为例进行详细的介绍。Es服务器是一个基于Lucene的搜索服务器,它提供了一个分布式全文搜索引擎。MySQL是一个关系型数据库管理系统,具有其体积小、速度快、成本低的特点,另外,其还具有源码开放的特点。
举例来说,从Es服务器到MySQL服务器执行数据同步的步骤包括:使用logstash配置文件,采用scroll(快照)的方式在Es服务器中查询数据,并将查询到的待同步的数据导出为csv文件,并通过mysqlUtil工具把csv文件导入MySQL数据库,由此完成数据的同步。由于上述方式导出的数据为不可变的数据集,不会受到Es服务器中数据的新增、修改、删除等操作的影响。因此,采用上述步骤执行数据同步任务,由于新增、修改或者删除操作造成Es服务器中的数据发生变化时,已同步到MySQL中的数据却不会随之改变。由此,需要提供一种数据同步方法,以实现同步数据的完整性和一致性。
示例性系统
图1a所示为本申请一示例性实施例提供的数据同步系统100的系统架构示意图,其示出了一种在不同数据库间执行数据同步的应用场景。数据同步系统100包括同步单元10、终端设备11、网关设备12、服务器13、同步数据源14以及目标数据源15。
终端设备11可以与网关设备12通信连接,并且可以通过网关设备12与同步数据源14通信。例如,终端设备11可以是手机、平板、笔记本、台式机、车载控制器等设备。
网关设备12可以设置在终端设备11和同步数据源14之间,用于将终端设备11发送的请求消息转发至同步数据源14,还用于根据请求消息确定操作类型,并将请求消息请求操作的数据的标识和操作类型加入到目标消息队列中。
同步单元10可以与网关设备12、服务器13、同步数据源14以及目标数据源15通信连接,用于执行同步数据源14至目标数据源15的数据同步任务。例如,同步单元10用于将同步数据源14中的全量数据同步至目标数据源15,并且在全量数据同步任务完成后,从服务器13中的目标消息队列中获取目标标识,基于目标标识确定同步数据源14中待同步的目标数据,并且在同步数据源14与目标数据源15之间执行目标数据的同步。
在一实施例中,服务器13与同步单元10和网关设备12通信连接,用于将网关设备12发送的数据的标识和操作类型存储在服务器13中的目标消息队列中,并根据同步单元10的请求从目标消息队列中提取数据的标识和操作类型,并向同步单元10发送数据的标识和操作类型。可选地,服务器13为消息队列服务器,例如,kafka服务器或者RabbitMQ服务器。
应理解的是,同步单元10可以是独立的物理实体,本申请的实施例并不限于此,例如,在另一实施例中,同步单元10也可以集成在其它物理实体上,例如,集成在网关设备12、服务器13、同步数据源14或目标数据源15上。
还应理解的是,网关设备12可以是独立的物理实体,本申请的实施例并不限于此,例如,在另一实施例中,网关设备12也可以集成在其它物理实体上,例如,集成在同步数据源14上。
需要注意的是,上述应用场景仅是为了便于理解本申请的精神和原理而示出,本申请的实施例并不限于此。相反,本申请的实施例可以应用于可能适用的任何场景。
示例性方法
图1b所示为本申请一示例性实施例提供的数据同步方法的流程示意图。图1b的方法可由计算设备执行,具体地,可由图1a的同步单元10执行。如图1b所示,该数据同步方法包括如下内容。
110:响应于全量数据同步任务,将同步数据源中的全量数据同步至目标数据源。
具体地,同步数据源是指将待同步的数据迁出的数据库,目标数据源为将待同步的数据迁入的数据库,全量数据是指全量数据同步任务开启时,同步数据源中当前存储或者当前需要同步的所有数据。全量数据同步是指在同步数据源和目标数据源之间执行全量数据的同步。
在一实施例中,同步单元可以在其外部调用接口被调用时,开始执行全量数据同步任务,以将同步数据源中的全量数据同步至目标数据源。例如,同步数据源为Es服务器,目标数据源为MySQL数据库,执行全量数据同步任务是将Es服务器数据库当前存储的所有数据同步到MySQL数据库中,以使得Es服务器与MySQL数据库中存储的数据保持一致。
120:在全量数据同步任务完成后,从目标消息队列中获取目标标识,其中,目标标识是在全量数据同步任务开启后加入目标消息队列的。
在全量数据同步任务开启后,若终端设备发送请求消息请求对同步数据源中的数据进行操作,则会导致同步数据源中的数据发生变化。其中,导致同步数据源中的数据发生变化的操作请求可以包括新增数据、修改数据(更新数据)或者删除数据中的任何一种。
目标标识是用于表示同步数据源中待同步的增量数据的标识,待同步的增量数据也称为目标数据。增量数据用于表示在全量数据同步任务开启后,同步数据源中新增的数据、修改的数据或者删除的数据。由于全量数据同步任务并不能将该任务开启后在同步数据源中发生变化的数据同步至目标数据源,因此,为了确保同步数据的完整,在全量数据同步任务完成后,执行增量数据同步任务。
应理解,增量数据同步任务可以在全量数据同步任务结束之后的任一时刻开启,本申请实施例对此并不做限定。在一实施例中,增量数据同步任务可以在全量数据同步任务的结束时刻开启。
在增量数据同步任务开始时,同步单元可以从目标消息队列获取目标标识。标识是指同步数据源中的数据对应的唯一标识。在一些实施例中,标识(也称为ID)可以是数据的唯一编号,基于标识可以唯一确定对应的数据。其中,在全量数据同步任务开始后,获取同步数据源中产生的增量数据的标识,并存储到消息队列中,以便后续基于消息队列中存储的标识进行增量数据的同步。由此,只需要获取增量数据的标识并存储在消息队列中,并不需要将增量数据存储在消息队列中,从而能够节省存储空间。
130:基于目标标识确定同步数据源中待同步的目标数据,目标数据为全量数据同步任务开始后在同步数据源中发生变化的数据。
在一实施例中,若从目标消息队列获取的目标标识为同步数据源中新增的数据或者修改的数据,则基于目标标识在同步数据源中确定同步数据源中待同步的目标数据。
在一实施例中,若从目标消息队列获取的目标标识对应为同步数据源中删除的数据,则基于目标标识在目标数据源中确定同步数据源中待同步的目标数据。
在一实施例中,增量数据同步任务可以包括一条或多条增量数据。增量数据同步任务开始后,获取一个或多个标识,并基于一个或多个标识在同步数据源或者目标数据源中进行查询以获取该标识对应的增量数据。可选地,可以按照标识的存储顺序执行增量数据的查询以及同步,从而保证数据同步的先后顺序。
140:在同步数据源与目标数据源之间执行目标数据的同步。
在一实施例中,若待同步的目标数据为新增的数据,则将同步数据源中确定的数据同步至目标数据源,以完成新增的数据的同步。
在一实施例中,若待同步的目标数据为修改的数据,则根据同步数据源中确定的数据对目标数据源中的目标标识对应的数据进行修改,已完成修改的数据的同步。
在一实施例中,若待同步的目标数据为删除的数据,则基于在目标数据源中确定的目标数据进行删除操作,以完成删除的数据的同步。
本申请实施例提供了一种数据同步方法,响应于全量数据同步任务,将同步数据源中的全量数据同步至目标数据源,在全量数据同步任务完成后,从目标消息队列中获取目标标识,基于目标标识确定同步数据源中待同步的目标数据,并在同步数据源与目标数据源之间执行目标数据的同步。根据本申请实施例提供的数据同步方法,实现了同步数据源和目标数据源之间全量数据的同步,以及全量同步任务开始后同步数据源中发生变化的数据的同步,保证了不同数据库间数据的完整性和一致性。
根据本申请一实施例,图1b的数据同步方法还包括:从目标消息队列中获取与目标标识对应的操作类型,操作类型包括以下至少一种:新增、修改、删除,其中,在同步数据源与目标数据源之间执行目标数据的同步,包括:基于目标标识和操作类型在同步数据源与目标数据源之间执行目标数据的同步。
在一实施例中,全量数据同步任务开始后,同步数据源可以接收终端设备发送的请求消息,请求消息的类型可以包括读请求和写请求。若请求消息为读请求,则不会使同步数据源中的数据发生变化,若请求消息为写请求,则会使同步数据源中的数据发生变化,即写请求会在同步数据源中产生增量数据。该写请求的操作类型可以是新增操作、修改操作或删除操作。同步单元可以将增量数据的标识和操作类型存储在目标消息队列中,例如,同步单元可以向消息队列服务器发送增量数据的标识和操作类型,以便消息队列服务器将其存储在目标消息队列中。
在增量数据同步任务开始时,同步单元从目标消息队列中获取目标标识及其对应的操作类型。具体地,基于目标标识确定待同步的目标数据,基于操作类型对目标数据执行同步操作以将同步数据源中的增量数据同步至目标数据源。
在一实施例中,在增量数据同步任务开始后,同步单元可以从消息队列服务器中获取第一标识以及第一操作类型。例如,第一操作类型为新增,则基于第一标识在同步数据源查询到第一标识对应的新增的数据,将该数据写入至目标数据源中,从而完成该新增的数据的同步。
在一实施例中,在增量数据同步任务开始后,同步单元可以从消息队列服务器中获取第二标识以及第二操作类型。例如,第二操作类型为修改,则基于第二标识在同步数据源和目标数据源查询到第二标识对应的数据,将目标数据源中的数据修改为与同步数据源一致的数据,从而完成该修改的数据的同步。
在一实施例中,在增量数据同步任务开始后,同步单元可以从消息队列服务器中获取第三标识以及第三操作类型,例如,第三操作类型为删除,则基于第三标识在目标数据源中查询到第三标识对应的数据,并在目标数据源中对数据进行删除,从而完成增量数据在目标数据源中的同步。
根据本实施例提供的数据同步方法,基于从消息队列获取的标识以及操作类型,实现了同步数据源与目标数据源之间不同操作类型的增量数据的同步,保证了同步数据的完整性和一致性。
可选地,作为另一实施例,图1b的数据同步方法还包括:在全量数据同步任务开启时,向网关设备发送全量数据同步任务的开启状态信息,该开启状态信息用于触发网关设备根据终端设备发送的请求消息将目标数据的标识加入目标消息队列中。
在全量数据同步任务开启时,同步单元发送全量数据同步任务的开启状态信息至网关设备。网关设备可以基于接收到的该开启状态信息确定全量数据同步任务已开启,开始对终端设备发送的请求消息进行处理,并将同步数据源中发生变化的数据的标识加入到消息队列中,以便后续基于消息队列中的标识进行数据同步。另外,将增量数据的标识存储到消息队列,而不是将增量数据存储到消息队列,可以减少消息队列的内存占用空间。
在一实施例中,网关设备中可以设置有用于表示全量数据同步任务是否开启的变量。变量值默认值为0,表示全量数据同步任务未开启。在接收到全量数据同步任务的开启状态信息时,变量值修改为1,表示全量数据同步任务已开启。
进一步地,同步数据源中的数据以索引的形式存储在所述同步数据源,开启状态信息包括全量数据同步任务中已开始同步的索引的信息,以便网关设备基于已开始同步的索引的信息判断是否对终端设备发送的请求消息的操作类型进行解析。
同步数据源的数据以索引的形式进行存储,一个索引中可以存储有对应的多个数据,例如,索引是Es服务器的一种存储数据的载体,一个索引可以包含很多条数据。同步单元执行全量数据同步时,可以通过指定一个或多个索引的方式对该一个或多个索引包括的所有数据进行同步。
具体地,开启状态信息可以包括已开始同步的索引的信息,例如索引名称,以便网关设备可以基于该开启状态信息中的索引信息对终端设备发送的请求消息进行操作。例如,网关设备基于请求消息得到请求操作的数据的索引A,然后确认开启状态信息中是否包括索引A。若开启状态信息中包括索引A,则对该请求消息的操作类型进行解析,并获取到该请求消息请求操作的数据的标识加入目标消息队列中。若开启状态信息中不包括索引A,则不对该请求消息的操作类型进行解析,直接将请求消息发送至同步数据源进行操作。若该操作在同步数据源产生了新增的、修改的或删除数据,可以在随后该索引被指定开始全量数据同步任务时进行同步,而不需要将该数据的标识加入到消息队列,提高了数据同步效率。
在一实施例中,同步单元可以包括全量数据同步单元和增量数据同步单元。在全量数据同步任务完成时刻,全量数据同步单元发送全量数据同步任务的完成状态信息至增量数据同步单元,以便增量数据同步单元可以根据该完成状态信息按照预设时间开始进行增量数据的同步,从而避免在全量数据同步任务未完成的状态下开启增量数据同步,避免了数据的重复同步或者数据丢失,保证了数据同步任务的有效进行。
根据本申请一实施例,同步数据源中的数据以索引的形式存储在同步数据源,在响应于全量数据同步任务之前,数据同步方法还包括:判断全量数据同步任务指定的待同步的索引是否有在途的同步任务;若待同步的索引没有在途的同步任务,执行全量数据同步任务,若待同步的索引有在途的同步任务,不执行全量数据同步任务。
在执行全量数据同步任务之前,首先判断待同步的全量数据的索引是否有正在执行的同步任务,再决定是否执行该索引包括的全量数据的同步,从而可以避免对同步数据源中的数据进行重复同步,保证了数据同步任务的有效进行。
在一实施例中,若待同步的索引没有在途的同步任务,则开始执行该索引的全量数据同步任务同时对该索引设置一个标签,用于表示该索引正在进行同步,不接受其它的全量数据同步任务的操作,避免对同步数据源中的数据进行重复同步,从而保证同步任务的有效进行。
如上所述,全量数据同步任务可以采用文件导出和导入的方法完成。例如,将Es服务器的数据同步到MySQL数据库中,可以通过logstash调用Es服务器的scroll对数据进行查询,由于采用scroll的方式查询数据时,在一些异常情况会存在数据丢失的问题,从而出现同步数据不完整的情况。例如,若同步数据源中一个索引包括300条数据,使用scroll查询数据,每一次查询可获取100条数据,每次获取数据的位置是[0-100],[101-200],[201-300]。若第二次获取数据时由于一些原因数据获取失败,而第三次获取数据时直接从[201-300],从而出现[101-200]的数据丢失的情况。
为了解决上述问题,在一实施例中,全量数据同步任务可以采用调用同步数据源的应用程序接口对同步数据源中的数据进行查询,将查询到的数据直接写入目标数据源。
根据本申请一实施例,上述执行全量数据同步任务包括:调用同步数据源的应用程序接口对同步数据源中待同步的数据进行查询;将查询到的待同步的数据写入目标数据源中。
具体地,对Es服务器执行全量数据同步任务时,通过调用Es服务器的查询接口,例如采用search after方式,对待同步的数据进行查询,并将查询得到的数据写入MySQL数据库中。在采用search after方法进行分页查询时,每次查询获取数据时依赖于上次查询的最后一条数据,从而避免了采用scroll方式出现数据丢失的问题。本实施例提供的全量数据同步方法通过调用接口的方式对待同步的数据进行查询,将查询的数据写入到目标数据源中,与传统模式下通过磁盘作为中转对数据进行同步的方案相比,减少了磁盘的使用。另外,避免了数据同步中出现数据丢失的情况。
图2所示为本申请另一示例性实施例提供的数据同步方法的流程示意图。图2所示的方法可由计算设备执行,具体地,可由图1a的同步单元10执行。如图2所示,在图1a的数据同步方法的基础上,在步骤120之前,该数据同步方法还包括如下内容。
210:同步单元获取终端设备发送的请求消息,请求消息用于请求对同步数据源中的数据进行操作。
终端设备向同步数据源发送请求消息,请求消息可以包括请求操作的数据的标识、索引信息、操作类型、关键字或者查询参数,用于请求对同步数据源中的数据进行操作。。
220:若针对同步数据源中的数据的全量数据同步任务已开启,则同步单元解析请求消息,得到请求消息的操作类型。
具体地,基于终端设备发送的请求消息判断是否针对请求消息请求操作的数据开启了全量数据同步任务。若该数据已经开启了全量数据同步任务,则需要对该请求消息的类型进行解析。例如,通过对请求消息的类型进行解析,得到该请求消息的类型可以是以下任何一种:读请求、新增、修改或删除。
230:若请求消息的操作类型为新增、修改、删除中的任何一种,则同步单元获取请求消息请求操作的数据的标识。
对请求消息进行解析包括判断该请求消息是写请求或者读请求。在一实施例中,若请求消息是写请求,则操作类型具体可以是新增、修改、或者删除。若请求消息的操作类型为新增、修改、删除中的任何一种,则从同步数据源中获取针对请求消息请求操作的数据的标识。该标识可以是同步数据源中用于表示数据的唯一标识或者唯一编号,且基于该标识可以查询得到对应的数据。
在一实施例中,若该请求消息为读请求,同步单元可以直接将该请求消息发送至同步数据源,不需要获取请求消息请求操作的数据的标识。
240:同步单元将请求消息请求操作的数据的标识加入消息队列。
具体地,若请求消息的操作类型为新增、修改、或者删除中的任何一种,则基于该请求消息在同步数据源中获取请求消息请求操作的数据的标识,并将获取的标识加入到消息队列中。
可选地,从同步数据源中获取的数据的标识可以存储在具有存储和读取功能的设备中。消息队列可以是分布式消息队列服务器,例如kafka或rabbitmq等服务器。可替代地,可以采用具有存储和读取功能的其它中间件代替分布式消息队列服务器,例如Es服务器的存储单元。应理解,本申请实施例对此并不做限定。
可选地,选用kafka存储数据的标识时,可以将kafka的主题只设置一个分区,以便在一个分区内的数据的标识按获取的顺序进行排列,以保证增量数据同步时按照写入的顺序进行同步,保证同步数据的先后顺序。例如,增量数据同步时可以保证消费端消费数据的先后顺序,有利于对消费数据进行有效分析。
根据本申请实施例提供的数据同步方法,通过获取终端设备向同步数据源发送的请求消息,基于请求消息在同步数据源中获取请求操作的数据的标识并将标识加入到消息队列,以便同步单元在全量数据同步任务完成后基于标识执行增量数据同步任务,从而实现了在全量数据同步任务开启后同步数据源中产生的增量数据的同步,保证了同步数据的完整性和一致性。另外,将数据的标识进行存储,减小了消息队列服务器的内存使用空间。
根据本申请一实施例,数据同步方法还包括:将请求消息请求操作的数据的标识和请求消息的操作类型加入消息队列,以便同步单元基于标识和操作类型执行增量数据同步任务。
具体地,可以将基于请求消息在同步数据源中获取请求操作的数据的标识,并将该标识与该请求消息的操作类型一起发送至消息队列服务器,由该消息队列服务器将标识和操作类型加入消息队列,以便后续基于该标识和操作类型执行增量数据同步任务。
根据本申请一实施例,同步数据源为分布式全文搜索服务器,目标数据源为关系型数据库。
图3所示为本申请另一示例性实施例提供的数据同步方法的流程示意图。图3实施例是图1b实施例的例子,为避免重复,相同之处不再赘述。图3的方法可由计算设备执行,具体地,可由同步单元10执行。同步单元10包括全量数据同步单元和增量数据同步单元。如图3所示,该数据同步方法包括如下内容。
310:全量数据同步单元开始执行全量数据同步任务。
可选地,全量数据同步单元开始全量数据同步任务之前,首先判断指定的待同步的索引是否有在途的同步任务。若有,则结束全量数据同步任务。若无,则开始全量数据同步任务。
例如,在开启全量数据同步任务时,可以指定同步数据源Es服务器的索引名称,并指定目标数据源MySQL数据库的表名称。可选地,还可以对执行全量数据同步的索引设置一个标签,表示该索引正在同步中,不再接受其他的同步请求,从而避免对同一个索引重复执行同步任务。
320:全量数据同步单元向设置在终端设备和同步数据源之间的网关设备发送全量数据同步任务的开启状态信息。
330:在全量数据同步任务完成时,全量数据同步单元向增量数据同步单元发送全量数据同步任务的完成状态信息。
340:增量数据同步单元从分布式消息队列服务器中获取目标标识。
可选地,增量数据同步单元从分布式消息队列服务器中获取目标标识和操作类型。
基于目标标识可以在同步数据源或者目标数据源中查询获取唯一对应的数据。
350:增量数据同步单元基于目标标识和操作类型确定同步数据源中需要同步的数据。
360:增量数据同步单元在同步数据源与目标数据源之间执行同步。
图4所示为本申请另一示例性实施例提供的数据同步方法的流程示意图。图4实施例与图2实施例执行的步骤类似,区别在于执行主体不同,为避免重复,相同之处不再赘述。图4的方法可由网关设备执行。如图4所示,该数据同步方法包括如下内容。
410:网关设备获取终端设备发送的请求消息。
请求消息用于请求对同步数据源中的数据进行操作。基于请求消息可以得到请求操作的数据的索引、数据的标识、请求消息的操作类型等信息。
420:网关设备判断是否针对请求操作的数据开启了全量数据同步任务。若已开启,则解析请求消息,得到请求消息的操作类型。
具体地,网关设备接收同步单元发送的全量数据同步任务的开启状态信息,基于该开启状态信息判断是否针对请求操作的数据开启了全量数据同步任务。通过执行上述判断操作,可以确保同步数据源中产生的增量数据的标识被存储到消息队列,还可以避免把等待同步中还未开始的全量数据的标识存储到消息队里,避免了同步数据的丢失或者重复。
例如,当同步数据源为Es服务器时,可以基于终端设备发送的请求消息获取该请求消息所包含的索引信息,并在开启状态信息中查找是否包括该索引信息,从而判断是否针对该请求消息请求操作的数据开启了全量数据同步任务。
应理解,步骤420中,若针对请求操作的数据未开启全量数据同步任务,则可以将该请求消息发送至同步数据源,不需要进行解析请求消息的操作,且不执行下述步骤内容。
430:若请求消息的操作类型为新增、修改或者删除中的任何一种,则网关设备从同步数据源中获取请求消息请求操作的数据的标识。
若该请求消息的消息类型为读请求,将该请求消息发送至同步数据源,且不执行本步骤及以下步骤操作。
440:网关设备将请求消息请求操作的数据的标识以及请求消息的操作类型加入消息队列。
图5所示为本申请另一示例性实施例提供的数据同步方法的流程示意图。图5实施例是图1b至图4实施例的例子,为避免重复,相同之处不再赘述。如图5所示,该数据同步方法包括如下内容。
为了更清楚的对本申请实施例提供的数据同步方法进行完整详细地说明,图5实施例以Es服务器为同步数据源,MySQL为目标数据源为例进行说明。
510:同步单元执行全量数据同步任务。
具体地,同步单元调用Es服务器的查询接口search after在Es服务器中查询,获取待同步的全量数据,并将全量数据直接写入MySQL数据库,从而完成全量数据的同步。
511:当全量数据同步任务开始时,同步单元向网关设备发送全量数据同步任务的开启状态信息。
具体地,网关设备接收到该开启状态信息,开启状态信息用于触发对终端设备发送的请求消息进行拦截及操作,用来判断请求消息请求操作的数据是否开启了全量数据同步任务。若针对请求消息请求操作的数据已开启了全量数据同步任务则确定该请求消息请求操作的数据为需要同步的增量数据。
512:网关设备获取终端设备发送的请求消息。
具体地,网关设备接收到请求消息,首先判断该请求消息中携带的索引是否开启了全量数据同步任务,若已开启,对请求消息进行解析得到请求消息的类型,并执行步骤513;若未开启,直接把请求消息发送至Es服务器执行请求消息的操作任务。
本实施例中以下的步骤以该请求消息对应的索引开启了全量数据同步任务为例进行说明。
513:网关设备解析请求消息的操作类型。
请求消息的操作类型包括读请求和写请求,其中写请求包括新增、修改或者删除。本实施例中下述步骤以该请求消息的操作类型为写请求为例进行说明。当请求消息的操作类型为读请求时,不执行下述步骤的内容。
514:网关设备从Es服务器中获取请求消息请求操作的数据的标识。
515:网关设备将在步骤514中获取的数据的标识和针对数据的操作类型发送至消息队列服务器。
516:同步单元执行增量数据同步任务,同步单元发送请求消息至消息队列服务器。
517:同步单元从消息队列服务器获取响应消息,该响应消息携带数据的标识和针对数据的操作类型。
具体地,同步单元从消息队列服务器中获取目标标识和对应地操作类型。
518:同步单元基于数据的标识和针对数据的操作类型执行增量数据同步。
关于在同步数据源与目标数据源之间执行增量数据同步请参见本申请图1b实施例中的描述,为避免重复,此处不再赘述。
应说明,在本发明的各种实施例中,各流程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
示例性装置
图6所示为本申请一示例性实施例提供的数据同步装置600的结构示意图。如图6所示,数据同步装置600包括:同步模块610以及获取模块620。
同步模块610用于响应于全量数据同步任务,将同步数据源中的全量数据同步至目标数据源。
获取模块620用于在全量数据同步任务完成后,从目标消息队列中获取目标标识,其中,目标标识是在全量数据同步任务开启后加入目标消息队列的。
同步模块610还用于基于目标标识确定同步数据源中待同步的目标数据,目标数据为全量数据同步任务开始后在同步数据源中发生变化的数据;在同步数据源与目标数据源之间执行目标数据的同步。
本申请实施例提供了一种数据同步装置,响应于全量数据同步任务,将同步数据源中的全量数据同步至目标数据源,在全量数据同步任务完成后,从目标消息队列中获取目标标识,并基于目标标识确定同步数据源中待同步的目标数据,在同步数据源与目标数据源之间执行目标数据的同步。根据本申请实施例提供的数据同步方法,实现了同步数据源和目标数据源之间全量数据的同步,以及全量同步任务开始后同步数据源中发生变化的数据的同步,保证了不同数据库间的数据的完整性和一致性。
在一实施例中,获取模块620还用于从目标消息队列中获取与所述目标标识对应的操作类型,所述操作类型包括以下至少一种:新增、修改、删除。
在一实施例中,同步模块610还用于基于目标标识和操作类型在同步数据源与目标数据源之间执行目标数据的同步。
在一实施例中,该数据同步装置600还包括发送模块630。发送模块630用于在全量数据同步任务开启时,向网关设备发送全量数据同步任务的开启状态信息,开启状态信息用于触发网关设备根据终端设备发送的请求消息将目标数据的标识加入目标消息队列中。
在一实施例中,发送模块630还用于在全量数据同步任务完成时,全量数据同步单元向增量数据同步单元发送全量数据同步任务的完成状态信息,以便增量数据同步单元开始执行同步数据源中的增量数据的同步。
在一实施例中,该数据同步装置600还包括判断模块640。同步数据源中的数据以索引的形式存储在同步数据源,判断模块640用于在响应于全量数据同步任务之前,判断全量数据同步任务指定的待同步的索引是否有在途的同步任务;若待同步的索引没有在途的同步任务,执行全量数据同步任务,若待同步的索引有在途的同步任务,不执行全量数据同步任务。
在一实施例中,获取模块620还用于获取终端设备发送的请求消息,请求消息用于请求对同步数据源中的数据进行操作;若针对同步数据源中的数据的全量数据同步任务已开启,则解析请求消息,得到请求消息的操作类型;若请求消息的操作类型为新增、修改、删除中的任何一种,则获取请求消息请求操作的数据的标识。
在一实施例中,数据同步装置600还包括存储模块650,用于将请求消息请求操作的数据的标识加入消息队列中,以便同步模块610基于标识执行增量数据同步任务。
在一实施例中,存储模块650还用于将请求消息的操作类型加入消息队列中,以便同步模块610基于标识和操作类型执行增量数据同步任务。
在一实施例中,数据同步装置600还包括接收模块660,接收模块660用于接收全量数据同步单元发送的全量数据同步任务的开启状态信息,开启状态信息用于触发网关设备根据终端设备发送的请求消息将目标数据的标识加入目标消息队列中。
在一实施例中,同步模块610还用于调用同步数据源的应用程序接口对全量数据进行查询;将查询到的全量数据直接写入目标数据源中。
在一实施例中,同步数据源为分布式全文搜索服务器,目标数据源为关系型数据库。
应当理解,上述实施例中的同步模块610、获取模块620、发送模块630、判断模块640、存储模块650以及接收模块660的操作和功能可以参考上述实施例中提供的数据同步方法的描述,为了避免重复,在此不再赘述。
图7所示为本申请一示例性实施例提供的用于执行数据同步方法的电子设备700的框图。
参照图7,电子设备700包括处理组件710,其进一步包括一个或多个处理器,以及由存储器720所代表的存储器资源,用于存储可由处理组件710执行的指令,例如应用程序。存储器720中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件70被配置为执行指令,以执行上述数据同步方法。
电子设备700还可以包括一个电源组件被配置为执行电子设备800的电源管理,一个有线或无线网络接口被配置为将电子设备700连接到网络,和一个输入输出(I/O)接口。可以基于存储在存储器720的操作系统操作电子设备700,例如Windows ServerTM,Mac OSXTM,UnixTM,LinuxTM,FreeBSDTM或类似。
一种非临时性计算机可读存储介质,当存储介质中的指令由上述电子设备800的处理器执行时,使得上述电子设备700能够执行一种数据同步方法。数据同步方法包括:响应于全量数据同步任务,将同步数据源中的全量数据同步至目标数据源;在全量数据同步任务完成后,从目标消息队列中获取目标标识,其中,目标标识是在全量数据同步任务开启后加入目标消息队列的;基于目标标识确定同步数据源中待同步的目标数据,目标数据为全量数据同步任务开始后在同步数据源中发生变化的数据;在同步数据源与目标数据源之间执行目标数据的同步。
上述所有可选技术方案,可采用任意结合形成本申请的可选实施例,在此不再一一赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序校验码的介质。
需要说明的是,在本申请的描述中,术语“第一”、“第二”、“第三”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种数据同步方法,其特征在于,包括:
响应于全量数据同步任务,将同步数据源中的全量数据同步至目标数据源;
在所述全量数据同步任务完成后,从目标消息队列中获取目标标识,其中,所述目标标识是在所述全量数据同步任务开启后加入所述目标消息队列的;
基于所述目标标识确定所述同步数据源中待同步的目标数据,所述目标数据为所述全量数据同步任务开始后在所述同步数据源中发生变化的数据;
在所述同步数据源与所述目标数据源之间执行所述目标数据的同步。
2.根据权利要求1所述的数据同步方法,其特征在于,所述方法还包括:
从所述目标消息队列中获取与所述目标标识对应的操作类型,所述操作类型包括以下至少一种:新增、修改、删除,
其中,所述在所述同步数据源与所述目标数据源之间执行所述目标数据的同步,包括:基于所述目标标识和所述操作类型在所述同步数据源与所述目标数据源之间执行所述目标数据的同步。
3.根据权利要求1所述的数据同步方法,其特征在于,所述方法还包括:
在所述全量数据同步任务开启时,向网关设备发送所述全量数据同步任务的开启状态信息,所述开启状态信息用于触发所述网关设备根据终端设备发送的请求消息将所述目标数据的标识加入所述目标消息队列中。
4.根据权利要求3所述的数据同步方法,其特征在于,所述同步数据源中的数据以索引的形式存储在所述同步数据源;所述开启状态信息包括所述全量数据同步任务中已开始同步的索引的信息,以便所述网关设备基于所述已开始同步的索引的信息判断是否对所述终端设备发送的请求消息的操作类型进行解析。
5.根据权利要求1所述的数据同步方法,其特征在于,所述同步数据源中的数据以索引的形式存储在所述同步数据源;在所述响应于全量数据同步任务之前,所述方法还包括:
判断所述全量数据同步任务指定的待同步的索引是否有在途的同步任务;
若所述待同步的索引没有在途的同步任务,执行所述全量数据同步任务,若所述待同步的索引有在途的同步任务,不执行所述全量数据同步任务。
6.根据权利要求1至5中任一项所述的数据同步方法,其特征在于,所述方法还包括:
获取所述终端设备发送的请求消息,所述请求消息用于请求对所述同步数据源中的数据进行操作;
若针对所述同步数据源中的数据的所述全量数据同步任务已开启,则解析所述请求消息,得到所述请求消息的操作类型;
若所述请求消息的操作类型为新增、修改、删除中的任何一种,则获取所述请求消息请求操作的数据的标识;
将所述请求消息请求操作的数据的标识加入消息队列。
7.根据权利要求1至5中任一项所述的数据同步方法,其特征在于,所述将同步数据源中的全量数据同步至目标数据源,包括:
调用所述同步数据源的应用程序接口对所述同步数据源中待同步的数据进行查询;
将查询到的所述待同步的数据写入所述目标数据源中。
8.一种数据同步装置,其特征在于,所述装置包括:
同步模块,用于响应于全量数据同步任务,将同步数据源中的全量数据同步至目标数据源;
获取模块,用于在所述全量数据同步任务完成后,从目标消息队列中获取目标标识,其中,所述目标标识是在所述全量数据同步任务开启后加入所述目标消息队列的;
同步模块,还用于基于所述目标标识确定所述同步数据源中待同步的目标数据,所述目标数据为所述全量数据同步任务开始后在所述同步数据源中发生变化的数据;在所述同步数据源与所述目标数据源之间执行所述目标数据的同步。
9.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器,
其中,所述处理器用于执行上述权利要求1至7中任一项所述的数据同步方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序用于执行上述权利要求1至7中任一项所述的数据同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210950227.7A CN116126874A (zh) | 2022-08-09 | 2022-08-09 | 数据同步方法和装置、电子设备和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210950227.7A CN116126874A (zh) | 2022-08-09 | 2022-08-09 | 数据同步方法和装置、电子设备和计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116126874A true CN116126874A (zh) | 2023-05-16 |
Family
ID=86296095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210950227.7A Pending CN116126874A (zh) | 2022-08-09 | 2022-08-09 | 数据同步方法和装置、电子设备和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116126874A (zh) |
-
2022
- 2022-08-09 CN CN202210950227.7A patent/CN116126874A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108427705B (zh) | 电子装置、分布式系统日志查询方法及存储介质 | |
CN106598992B (zh) | 数据库的操作方法及装置 | |
CN110751550B (zh) | 对账方法、装置、计算机设备和存储介质 | |
CN110209642A (zh) | 信息处理的方法、装置、服务器及计算机可读介质 | |
EP2380090B1 (en) | Data integrity in a database environment through background synchronization | |
EP2947582A1 (en) | Computing device and method for executing database operation command | |
CN109408507B (zh) | 多属性数据的处理方法、装置、设备及可读存储介质 | |
CN109871354B (zh) | 一种文件处理的方法及装置 | |
WO2020224236A1 (zh) | 区块链数据处理的装置、方法、系统及存储介质 | |
CN110851474A (zh) | 数据查询方法、数据库中间件、数据查询设备及存储介质 | |
CN104881454A (zh) | 参数的更新方法及系统 | |
CN113806301A (zh) | 数据同步方法、装置、服务器及存储介质 | |
CN114398520A (zh) | 数据检索方法、系统、装置、电子设备及存储介质 | |
CN113438275B (zh) | 数据迁移方法、装置、存储介质及数据迁移设备 | |
CN113626449A (zh) | 数据存储、数据查询方法及相关设备 | |
CN116126874A (zh) | 数据同步方法和装置、电子设备和计算机可读存储介质 | |
CN115878721A (zh) | 一种数据同步方法、装置、终端和计算机可读存储介质 | |
CN113094367A (zh) | 数据处理方法、装置和服务器 | |
CN112711606A (zh) | 数据库访问方法、装置、计算机设备和存储介质 | |
CN113076273B (zh) | 组件接入方法、装置、电子设备、存储介质及程序产品 | |
CN114676166B (zh) | 数据处理方法及装置 | |
CN116501700B (zh) | 一种app格式化文件离线存储方法、装置、设备及存储介质 | |
CN117573730B (zh) | 数据处理方法、装置、设备、可读存储介质及程序产品 | |
CN113220760B (zh) | 一种数据处理方法、装置、服务器及存储介质 | |
KR20080106672A (ko) | 자료 동기화 방법 및 그에 따른 자료 동기화 게이트웨이 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |