CN113438275A - 数据迁移方法、装置、存储介质及数据迁移设备 - Google Patents
数据迁移方法、装置、存储介质及数据迁移设备 Download PDFInfo
- Publication number
- CN113438275A CN113438275A CN202110585631.4A CN202110585631A CN113438275A CN 113438275 A CN113438275 A CN 113438275A CN 202110585631 A CN202110585631 A CN 202110585631A CN 113438275 A CN113438275 A CN 113438275A
- Authority
- CN
- China
- Prior art keywords
- data
- target
- cluster
- incremental
- migration
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1031—Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/563—Data redirection of data network streams
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据迁移方法、装置、存储介质及数据迁移设备,该数据迁移方法应用于数据迁移系统,该数据迁移系统包括源集群、目标集群和消息队列,该数据迁移方法包括:获取迁移指令,并根据迁移指令将存量数据由源集群同步至目标集群,以及将增量数据写入源集群和目标集群;当增量数据写入目标集群发生异常时,将增量数据中写入目标集群发生异常的数据确定为目标数据,并将目标数据写入消息队列;获取合并指令,并根据合并指令和目标数据的数据版本将目标数据合并至目标集群,从而提高数据迁移的效率,且减少了数据迁移过程中用户的参与度。
Description
技术领域
本申请涉及通信技术领域,具体涉及一种数据迁移方法、装置、存储介质及数据迁移设备。
背景技术
Elasticsearch是常用的大数据搜索引擎,其具有大型的分布式集群(数百台服务器)技术,在Elasticsearch版本升级时,需要将数据从低版本集群迁移至高版本集群。
目前,主要通过业务方双写以及增量消息回流的方式进行集群数据迁移,即将增量数据全部写入消息队列,当存量数据导入高版本集群后,通过消息回流的方式将增量数据补偿至低版本集群和高版本集群,导致数据更新延迟,并且,这种方式需要业务方修改代码和操作,导致数据迁移的效率较低。
发明内容
本申请提供了一种数据迁移方法、装置、存储介质及数据迁移设备,从而提高数据迁移的效率,且减少了数据迁移过程中用户的参与度,使得数据迁移更加智能化。
本申请提供了一种数据迁移方法,应用于数据迁移系统,所述数据迁移系统包括源集群、目标集群和消息队列,所述数据迁移方法包括:
获取迁移指令,并根据所述迁移指令将存量数据由所述源集群同步至所述目标集群,以及将增量数据写入所述源集群和所述目标集群;
当所述增量数据写入所述目标集群发生异常时,将所述增量数据中写入所述目标集群发生异常的数据确定为目标数据,并将目标数据写入所述消息队列;
获取合并指令,并根据所述合并指令和所述目标数据的数据版本将所述目标数据合并至所述目标集群。
本申请还提供了一种数据迁移装置,应用于数据迁移系统,所述数据迁移系统包括源集群、目标集群和消息队列,所述数据迁移装置包括:
获取模块,用于获取迁移指令,根据所述迁移指令将存量数据由源集群同步至目标集群,并将增量数据写入所述源集群和所述目标集群;
写入模块,用于当所述增量数据写入所述目标集群发生异常时,将所述增量数据中写入所述目标集群发生异常的数据确定为目标数据,并将目标数据写入消息队列;
合并模块,用于获取合并指令,并根据所述合并指令和所述目标数据的数据版本将所述目标数据合并至所述目标集群。
在本申请提供的数据迁移装置中,所述写入模块具体用于:根据所述目标数据生成事务日志,所述事务日志包括所述目标数据以及所述目标数据的第一数据标识和第一数据版本;将所述事务日志写入所述消息队列。
在本申请提供的数据迁移装置中,所述合并模块具体用于:根据所述第一数据标识确定所述目标集群中与所述目标数据对应的第一数据;根据所述目标数据、所述第一数据版本和所述第一数据的第二数据版本,将所述目标数据合并至所述目标集群。
在本申请提供的数据迁移装置中,所述合并模块具体用于:若所述第一数据版本不高于所述第二数据版本,则将所述目标数据舍弃,并将所述日志从所述消息队列中删除;若所述第一数据版本高于所述第二数据版本,则使用所述目标数据覆盖所述第一数据。
在本申请提供的数据迁移装置中,所述事务日志中还记录有所述目标数据的写入时间,所述数据迁移装置还包括生存模块,用于:根据所述写入时间确定所述目标数据的生存时长;若所述生存时长大于阈值,则将所述事务日志从所述消息队列中删除。
在本申请提供的数据迁移装置中,所述获取模块具体用于:将所述增量数据写入所述源集群,并获取写入结果;若所述写入结果指示所述增量数据写入所述源集群成功,则根据所述增量数据的第二数据标识、第三数据版本和操作类型,将所述增量数据写入所述目标集群。
在本申请提供的数据迁移装置中,所述获取模块具体用于:若所述增量数据的操作类型为新增操作,且所述目标集群中不存在第三数据标识与所述第二数据标识一致的第二数据,则将所述增量数据写入所述目标集群;若所述增量数据的操作类型为更新操作,且所述目标集群中不存在第三数据标识与所述第二数据标识一致的第二数据,则确定所述增量数据写入所述目标集群异常,并将所述增量数据确定为所述目标数据;若所述增量数据的操作类型为更新操作,且所述目标集群中存在第三数据标识与所述第二数据标识一致的第二数据,且所述第二数据的数据版本小于所述第三数据版本,则使用所述增量数据覆盖所述第二数据;若所述增量数据的操作类型为更新操作,且所述目标集群中存在第三数据标识与所述第二数据标识一致的第二数据,且所述第二数据的数据版本不小于所述增量数据的数据版本,则确定所述增量数据写入所述目标集群异常,并将所述增量数据确定为所述目标数据。
本申请还提供了一种计算机可读存储介质,所述存储介质中存储有多条指令,所述指令适于由处理器加载以执行上述任一项数据迁移方法。
本申请还提供了一种数据迁移设备,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器通过调用所述存储器中存储的所述计算机程序,用于上述任一项所述的数据迁移方法。
本申请公开了一种数据迁移方法、装置、存储介质及数据迁移设备,应用于数据迁移系统,该数据迁移系统包括源集群、目标集群和消息队列,通过获取迁移指令,并根据迁移指令将存量数据由源集群同步至目标集群,以及将增量数据写入源集群和目标集群,之后,当增量数据写入目标集群发生异常时,将增量数据中写入目标集群发生异常的数据确定为目标数据,并将目标数据写入消息队列,接着,获取合并指令,并根据合并指令和目标数据的数据版本将目标数据合并至目标集群,从而提高数据迁移的效率,且减少了数据迁移过程中用户的参与度。
附图说明
下面结合附图,通过对本申请的具体实施方式详细描述,将使本申请的技术方案及其它有益效果显而易见。
图1为本申请实施例提供的数据迁移方法的流程示意图。
图2为本申请实施例提供的数据迁移系统的结构示意图。
图3为本申请实施例提供的数据迁移方法的过程示意图。
图4为本申请实施例提供的数据迁移方法的状态示意图。
图5为本申请实施例提供的数据迁移装置的结构示意图。
图6为本申请实施例提供的数据迁移设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。在图中,结构相似的单元是用以相同标号表示。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
本申请实施例提供了一种数据迁移方法、装置、存储介质和数据迁移设备。
请参阅图1,图1为本申请实施例提供的数据迁移方法的流程示意图,该方法应用于数据迁移系统,该数据迁移系统包括源集群、目标集群和消息队列,该方法主要包括步骤S101至步骤S103,该方法包含的各个步骤的执行主体可以相同也可以不同,该执行主体可以为数据迁移系统中的各个设备,针对各个步骤的说明如下:
S101.获取迁移指令,根据迁移指令将存量数据由源集群同步至目标集群,并将增量数据写入源集群和目标集群。
具体地,搜索引擎(Search Engine)是根据一定的策略、运用特定的计算机程序去搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的一套系统。搜索引擎依托于多种技术,如网络爬虫技术、检索排序技术、网页处理技术、大数据处理技术、自然语言处理技术等,为信息检索用户提供快速、高相关性的信息服务。Elasticsearch是常用的大数据搜索引擎,其具有大型的分布式集群(数百台服务器)技术,在Elasticsearch版本升级时,需要将数据从低版本集群迁移至高版本集群,其中,上述源集群即低版本集群,上述目标集群即高版本集群。
具体地,当Elasticsearch需要进行版本升级时,业务方可以通过管理平台配置升级任务,比如配置源数据索引名称、源集群、目标数据索引名称、目标集群、目标索引的字段定义以及升级过程是否启动存量数据复制等。
其中,存量数据为收到迁移指令之前,源集群中存储的数据,增量数据为收到迁移指令后写入的数据,包括新增数据和更新数据。
在一些实施例中,用户可以通过搜索微服务对数据进行增删改,即写入。其中,搜索微服务是一种软件开发技术-面向服务的架构(Service-Oriented Architecture,SOA)样式的一种变体,将应用程序构造为一组松散耦合的服务。在微服务体系结构中,服务是细粒度的,协议是轻量级的。搜索微服务是基于Elasticsearch实现的搜索引擎服务,业务方可以通过搜索微服务实现对数据的写入和查询服务。
在未进行数据迁移之前,业务方通过搜索微服务对源集群进行读写操作,当接收到迁移指令,管理平台可以对搜索微服务进行双写配置,即搜索微服务对源集群进行读操作,对源集群和目标集群进行写入操作。容易理解的是,当开始数据迁移之后,会将存量数据由源集群迁移至目标集群,若将增量数据同时写入源集群和目标集群,即可保证源集群与目标集群中数据的一致性。
在本实施例中,步骤“将增量数据写入源集群和目标集群”主要可以包括:将增量数据写入源集群,并获取写入结果;若写入结果指示增量数据写入源集群成功,则根据增量数据的第二数据标识、第三数据版本和操作类型将增量数据写入目标集群。
具体地,考虑到将增量数据写入源集群时,可能会由于数据格式等原因导致写入失败,那么也就无需将增量数据写入目标集群,因此,可以先将增量数据写入源集群,并获取写入结果,若写入失败,则无需将增量数据写入目标集群,若写入成功,则将增量数据写入目标集群。
容易理解的是,对源数据进行增删改时,都会产生增量数据,其中,新增一个数据产生的增量数据的操作类型为新增操作,对源数据进行修改或者删除产生的增量数据的操作类型为更新操作。其中,对源数据更改时,增量数据的数据版本会比源数据的数据版本高,比如,数据D的版本为V1,若对数据D进行更新,则产生的增量数据的数据版本会由V1变为V2,为了避免增量数据写入目标集群时,低版本数据覆盖新版本数据,可以根据增量数据的版本进行增量数据的写入。
具体地,步骤“根据增量数据的第三数据版本将增量数据写入目标集群”主要可以包括:若增量数据的操作类型为新增操作,且目标集群中不存在第三数据标识与第二数据标识一致的第二数据,则将增量数据写入目标集群;若增量数据的操作类型为更新操作,且目标集群中不存在第三数据标识与第二数据标识一致的第二数据,则确定增量数据写入目标集群异常,并将增量数据确定为目标数据;若增量数据的操作类型为更新操作,且目标集群中存在第三数据标识与第二数据标识一致的第二数据,且第二数据的数据版本小于第三数据版本,则使用增量数据覆盖第二数据;若增量数据的操作类型为更新操作,且目标集群中存在第三数据标识与第二数据标识一致的第二数据,且第二数据的数据版本不小于增量数据的数据版本,则确定增量数据写入目标集群异常,并将增量数据确定为目标数据。
容易理解的是,数据标识(ID)用来唯一确定一条数据,若新增一条数据,且已经写入源集群成功,则目标集群中不会存在与增量数据的ID一致的第二数据,可以直接写入目标集群。若对数据进行更新操作,可能存在下列几种情况导致增量数据写入目标集群异常:(1)与增量数据对应的原始数据(存量数据)还未同步至目标集群中,则无法对其更新,报异常。(2)多个接口同时对原始数据进行更新,存在多条增量数据,高版本的增量数据先写入目标集群,为了避免低版本的增量数据覆盖高版本的增量数据,当增量数据的数据版本低于目标集群中第二数据的数据版本,报异常。
比如,当用过通过搜索微服务对数据D进行修改,产生增量数据,当将增量数据写入目标集群时,若目标集群不存在数据D,则无法对其进行更新,报异常。或者,多接口同时使用搜索微服务对数据D进行修改,产生了数据版本为V2、V3、V4……的多条增量数据,若目标集群中先写入了版本为V4的数据D,当版本为V3的数据D写入目标集群时,报异常。
S102.当增量数据写入目标集群发生异常时,将增量数据中写入目标集群发生异常的数据确定为目标数据,并将目标数据写入消息队列。
具体地,将写入目标集群异常的增量数据缓存,后续再将其同步至目标集群,可以保证数据的一致性,比如,当数据D还未迁入目标集群时,若产生一条对数据D进行更新的增量数据,并将其写入目标集群,则增量数据会写入目标集群异常,此时,将写入目标集群异常的增量数据确定为目标数据缓存下来,后续步骤中再将其写入目标集群,若后续数据D已经迁入目标集群,则目标数据可以成功写入目标集群,源集群和目标集群的数据即可保持一致。
在一些实施例中,步骤S102主要可以包括:根据目标数据生成事务日志,该事务日志包括目标数据以及目标数据的标识和第一数据版本;将事务日志写入消息队列。
具体地,随着数据库的发展,Translog(事务日志)早已遍及数据库领域。通常,Translog为保存了一笔或多笔成功写入Elasticsearch集群的数据记录,记录了数据写入的时间,写入的原始数据,写入的索引以及写入操作的类型,如新增、更新或删除等详细信息。Translog索引是保存了Tarnslog数据的Elasticsearch的索引。在发生故障的时候,Translog能确保数据的完整性。
具体地,消息队列(Message Queue)是在消息的传输过程中保存消息的容器,是分布式系统中重要的组件,主要用来解决应用耦合、异步处理、流量削锋等问题,当前使用较多的消息队列有RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMq等,而部分数据库如Redis、Mysql以及phxsql也可实现消息队列的功能。
通过将写入异常的增量数据使用Translog记录下来,并写入消息队列,之后,通过Translog合并程序读取消息队列中的Translog将其写入目标集群,保证了源集群和目标集群中数据的一致性。
S103.获取合并指令,根据合并指令和目标数据的数据版本将目标数据合并至目标集群。
具体地,管理平台可以定时检查是否存在未合并的Translog,若存在未合并的Translog,则生成合并指令,并发送至消息队列,之后,消息队列指示Translog合并程序根据Translog将目标数据合并至目标集群。
在本实施例中,步骤S103主要可以包括:根据第一数据标识确定目标集群中与目标数据对应的第一数据;根据目标数据、第一数据版本和第一数据的第二数据版本,将目标数据合并至目标集群。
根据上述描述可知,新增操作产生的增量数据写入目标集群时不会产生异常,只有当更新操作产生的增量数据写入目标集群时会产生异常,比如,当更新操作产生的增量数据写入目标集群时,与更新操作对应的原始数据还未写入目标集群,无法对原始数据更新时,会写入异常,因此,当将目标数据合并至目标集群时,首先确定目标集群中与目标数据对应的第一数据,该第一数据和目标数据应该具有相同的数据标识,之后根据目标数据的数据版本对目标数据进行合并。若当目标数据合并至目标集群时,不存在与目标数据对应的第一数据,则可能与目标数据对应的存量数据还未迁移至目标集群中,则暂不合并,下次执行合并操作时再进行合并。值得注意的是,若想减少执行合并操作的次数,提升合并的效率,可以在存量数据全部同步至目标集群完成后,执行增量数据的合并操作。
具体地,步骤“根据目标数据、第一数据版本和第一数据的第二数据版本,将目标数据合并至目标集群”具体可以包括:若第一数据版本不高于第二数据版本,则将目标数据舍弃,并将日志从消息队列中删除;若第一数据版本高于第二数据版本,则使用目标数据覆盖第一数据。
容易理解的是,若目标数据的第一数据版本高于目标集群中第一数据的第二数据版本,则可以直接使用目标数据覆盖第一数据,以完成对第一数据的更新,若目标数据的第一数据版本不高于目标集群中第一数据的第二数据版本,则可能是在产生目标数据之后,产生了版本高于第一数据版本的增量数据,且该增量数据写入目标集群时,与增量数据对应的存量数据已经写入目标集群,则该增量数据成功写入目标集群,此时,可以认为第一数据相较于目标数据是更新的数据,无需合并该目标数据,将该目标数据舍弃,并将该事务日志从消息队列中删除即可。
在一些实施例中,事务日志中还记录有目标数据的写入时间,该方法还可以包括:根据写入时间确定目标数据的生存时长;若生存时长大于阈值,则将目标数据从消息队列中删除。
容易理解的是,为了避免目标数据的写入无限循环下去,设置一个时间阈值,当目标数据的生存时长超过这个阈值,可以将该目标数据舍弃。比如,目标数据对应的类型为删除操作,若目标数据同步多次,均找不到与目标数据对应的原始数据,则可以认为,原始数据已经被删除,则无需同步目标数据,避免同步操作无限循环下去。
具体地,为了持久化Translog数据,需要一个Translog消费程序消费消息队列上的Translog数据将其保存到目标集群的Translog索引。其中,Translog消费程序可以在产生Translog时,即对Translog进行消费,或者,管理平台可以监控消息队列的长度,当消息队列达到一定长度时,消费Translog。
在本实施例中,当完成存量数据迁移以及目标数据写后,为了保证数据的最终一致,该数据迁移方法还包括:验证源集群与目标集群中的数据是否一致;若源集群和目标集群中的数据一致,则将业务迁移至目标集群。
具体地,最终一致是一种确保业务一致性的解决方案,此处,业务一致性是指单个业务涉及到的数据变化完整,符合业务预期。在传统单体应用中,通常直接通过数据库事务的四大特性(即ACID特性,包括Atomic(原子性)、Consistency(一致性)、Isolation(隔离性)和Durability(持久性))实现业务数据的一致性,但是在大规模分布式系统和分库分表的场景下,一般采用“幂等+重试”的最终一致方案确保业务一致性。除此之外,还可以选择通过分布式这事务确保业务一致性,不过种方案开销较大。幂等原先是数学中的概念,在计算机领域中指一个接口、方法、函数在相同参数的情况下,任意多次调用执行所产生的影响均与一次执行的影响相同。
具体地,该数据迁移系统还可以包括数据对账程序,可以通过数据对账程序对比源集群和目标集群的数据是否一致,可以通过记录数对账或者数据内存抽样对账进行对比。
其中,记录数对账包括Date Histogram(时间聚合)和Terms Aggregation(多值聚合)两种方式,Date Histogram是通过数据中的时间字段进行记录数对比,TermsAggregation是通过非时间字段进行记录数对比,比如,Date Histogram可以通过选择起始时间和结束时间作为时间范围,统计数据源集群和目标集群记录的数据条数做对比,TermsAggregation可以通过选择非时间字段做条数聚合进行对比。抽样对账是通过自定义抽取条件,之后从源集群和目标集群中抽取一定量的数据,比对数据内容进行对比。
容易理解的是,在对账完成后,还需要验证在源集群上的查询是否可以在目标集群上正常执行,避免后续使用目标集群进行读写操作时执行异常。
具体地,上述步骤“将业务迁移至目标集群”可以包括:将读业务迁移至目标集群,对源集群和目标集群进行双写。
如此,可以提高集群业务的稳定性,数据迁移前后保持对源集群和目标集群进行数据双写,若使用目标集群发生故障,可以直接切换至源集群,实现秒级的流量切换,保证集群业务正常。
同时,为了避免读操作一次性切换至目标集群去执行,会对系统产生未知影响,可以逐步切换,比如开始将部分数据的读操作切换至目标集群去执行,若无问题,再逐步将全部数据的读操作均切换至目标集群去执行,进一步提高集群业务的稳定性。
由上述可知,本实施例提供了一种数据迁移方法,应用于数据迁移系统,该数据迁移系统包括源集群、目标集群和消息队列,该数据迁移方法包括:获取迁移指令,并根据迁移指令将存量数据由源集群同步至目标集群,以及将增量数据写入源集群和目标集群;当增量数据写入目标集群发生异常时,将增量数据中写入目标集群发生异常的数据确定为目标数据,并将目标数据写入消息队列;获取合并指令,并根据合并指令和目标数据的数据版本将目标数据合并至目标集群,从而提高数据迁移的效率,且减少了数据迁移过程中用户的参与度。
根据上述实施例所描述的方法,请参阅图2和图3,下面将结合数据迁移系统对数据迁移的整个过程进行描述:
具体地,该数据迁移系统包括管理平台、搜索微服务、消息队列、数据同步程序、源集群、目标集群、Translog消费程序和Translog合并程序,具体过程如下:
首先,由用户从管理平台发起升级流程,然后管理平台首先禁用别名切换,以避免迁移过程中集群别名切换导致的数据迁移错误,然后,将存量数据同步请求写入消息队列,由数据同步程序消费消息队列中的存量数据同步请求,开始存量数据同步,具体地,数据同步程序可以通过拉取源集群中的存量数据,之后将拉取到的存量数据导入从目标集群来实现。同时,管理平台将搜索微服务配置为双写,即在接收到通过写入接口写入数据(对应于上述实施例中的增量数据)时,将写入数据写入源数据集群和目标数据集群,考虑到写入数据写入源集群时可能由于数据格式等原因导致写入失败,而写入失败的数据是不需要再写入目标集群的,因此,可以当写入源集群成功后,再写入目标集群,如果写入目标集群有异常,则生成Translog,并把Translog发送至消息队列,由Translog消费程序将Translog保存至目标集群的Translog索引中,以完成持久化,同时管理平台会定期检查Translog索引中的Translog的最大时间戳,若存在未同步Translog,将合并Translog请求写入消息队列,之后,Translog合并程序的把未合并的Translog合并到从集群的目标文件中,该目标文件即写入数据对应原始数据的索引中,之后,当存量数据和增量数据均同步完成后,管理平台进行对账,以保证源集群和目标集群数据一致,若源集群和目标集群数据一致,则完成数据迁移。
如此,在保证服务不中断的同时,可以完成数据的迁移,无需业务方修改代码,且数据迁移的过程中实时对数据进行更新,相较于先将增量数据缓存,之后由业务方将增量数据双写入源集群以及目标集群的方法,极大地提升了数据迁移的效率。
此外,请参阅图4,下面对数据迁移过程中的同步状态进行说明:
存量数据同步开始状态:如前所述,开始迁移时,管理平台将存量数据同步请求发送至消息队列,数据同步程序将存量数据由源集群同步至目标集群,当存量数据全部同步至目标集群时,进入存量数据同步完成状态。
双写:开始迁移后,若用户通过搜索微服务写入数据,将增量数据写入源集群和目标集群。
增量数据同步状态:若增量数据写入目标集群失败,生成Translog,将Translog写入消息队列,Translog合并程序将Translog合并至目标集群。
完成状态:存量数据和增量数据全部同步完成后,进行对账,若源集群和目标集群数据一致,则数据迁移结束。
停止状态:用户无论何时停止迁移,数据迁移结束。
异常状态:数据迁移过程中发生导致迁移结束的异常,数据迁移结束。
根据上述实施例所描述的方法,本实施例将从数据迁移装置的角度进一步进行描述,该数据迁移装置具体可以作为独立的实体来实现,也可以集成在数据迁移设备中来实现。
请参阅图5,图5具体描述了本申请实施例提供的数据迁移装置,应用于数据迁移系统,该数据迁移系统包括源集群、目标集群和消息队列,该数据迁移装置10包括获取模块11、写入模块12和合并模块13,其中:
(1)获取模块11
获取模块11,用于获取迁移指令,根据迁移指令将存量数据由源集群同步至目标集群,并将增量数据写入源集群和目标集群。
在一些实施例中,获取模块11主要可以用于:将增量数据写入源集群,并获取写入结果;若写入结果指示增量数据写入源集群成功,则根据增量数据的第二数据标识、第三数据版本和操作类型将增量数据写入目标集群。
在一些实施例中,获取模块11具体用于:若增量数据的操作类型为新增操作,且目标集群中不存在第三数据标识与第二数据标识一致的第二数据,则将增量数据写入目标集群;若增量数据的操作类型为更新操作,且目标集群中不存在第三数据标识与第二数据标识一致的第二数据,则确定增量数据写入目标集群异常,并将增量数据确定为目标数据;若增量数据的操作类型为更新操作,且目标集群中存在第三数据标识与第二数据标识一致的第二数据,且第二数据的数据版本小于第三数据版本,则使用增量数据覆盖第二数据;若增量数据的操作类型为更新操作,且目标集群中存在第三数据标识与第二数据标识一致的第二数据,且第二数据的数据版本不小于增量数据的数据版本,则确定增量数据写入目标集群异常,并将增量数据确定为目标数据。
(2)写入模块12
写入模块12,用于当增量数据写入目标集群发生异常时,将增量数据中写入目标集群发生异常的数据确定为目标数据,并将目标数据写入消息队列。
在本实施例中,写入模块12主要可以用于:根据目标数据生成事务日志,事务日志包括目标数据以及目标数据的第一数据标识和第一数据版本;将事务日志写入消息队列。
进一步地,事务日志中还记录有目标数据的写入时间,数据迁移装置10还包括生存模块,用于:根据写入时间确定目标数据的生存时长;若生存时长大于阈值,则将事务日志从消息队列中删除。
(3)合并模块13
合并模块13,用于获取合并指令,并根据合并指令和目标数据的数据版本将目标数据合并至目标集群。
在本实施例中,合并模块13主要可以用于:根据第一数据标识确定目标集群中与目标数据对应的第一数据;根据目标数据、第一数据版本和第一数据的第二数据版本,将目标数据合并至目标集群。
在本实施例中,合并模块13具体可以用于:若第一数据版本不高于第二数据版本,则将目标数据舍弃,并将日志从消息队列中删除;若第一数据版本高于第二数据版本,则使用目标数据覆盖第一数据。
由上述可知,本实施例提供了一种数据迁移装置,应用于数据迁移系统,该数据迁移系统包括源集群、目标集群和消息队列,该数据迁移装置10通过获取模块11获取迁移指令,并根据迁移指令将存量数据由源集群同步至目标集群,以及将增量数据写入源集群和目标集群,之后当增量数据写入目标集群发生异常时,写入模块12将增量数据中写入目标集群发生异常的数据确定为目标数据,并将目标数据写入消息队列,然后合并模块13获取合并指令,并根据合并指令和目标数据的数据版本将目标数据合并至目标集群,从而提高数据迁移的效率,且减少了数据迁移过程中用户的参与度。
另外,本申请实施例还提供一种数据迁移设备,如图6所示,数据迁移设备600包括处理器601、存储器602。其中,处理器601与存储器602电性连接。
其中,存储器602可用于存储软件程序以及模块,如上述实施例中的数据迁移方法及对应的程序指令/模块,处理器601通过运行存储在存储器602内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现通信数据保存功能。存储器602可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器602可进一步包括相对于处理器601远程设置的存储器,这些远程存储器可以通过网络连接至数据迁移设备600。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器601是数据迁移设备600的控制中心,利用各种接口和线路连接整个设备的各个部分,通过运行或执行存储在存储器602内的软件程序和/或模块,以及调用存储在存储器602内的数据,执行数据迁移设备600的各种功能和处理数据,从而对设备进行整体监控。可选的,处理器601可包括一个或多个处理核心;在一些实施例中,处理器601可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器610中。
在本实施例中,数据迁移设备600中的处理器601会按照如下的步骤,将一个或一个以上的应用程序的进程对应的指令加载到存储器602中,并由处理器601来运行存储在存储器602中的应用程序,从而实现各种功能:
获取迁移指令,并根据迁移指令将存量数据由源集群同步至目标集群,以及将增量数据写入源集群和目标集群;
当增量数据写入目标集群发生异常时,将增量数据中写入目标集群发生异常的数据确定为目标数据,并将目标数据写入消息队列,目标数据为写入目标集群异常的增量数据;
获取合并指令,并根据合并指令和目标数据的数据版本将目标数据合并至目标集群。
具体实施时,以上各个模块可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个模块的具体实施可参见前面的方法实施例,在此不再赘述。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。为此,本申请实施例提供一种存储介质,包括数据迁移设备可执行指令。其中,数据迁移设备可执行指令在由数据迁移设备处理器执行时,执行本申请实施例提供任一种数据迁移方法中的步骤。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本申请实施例所提供的任一种数据迁移方法中的步骤,因此,可以实现本申请实施例所提供的任一种数据迁移方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
综上该,虽然本申请已以优选实施例揭露如上,但上述优选实施例并非用以限制本申请,本领域的普通技术人员,在不脱离本申请的精神和范围内,均可作各种更动与润饰,因此本申请的保护范围以权利要求界定的范围为准。
Claims (10)
1.一种数据迁移方法,其特征在于,应用于数据迁移系统,所述数据迁移系统包括源集群、目标集群和消息队列,所述数据迁移方法包括:
获取迁移指令,并根据所述迁移指令将存量数据由所述源集群同步至所述目标集群,以及将增量数据写入所述源集群和所述目标集群;
当所述增量数据写入所述目标集群发生异常时,将所述增量数据中写入所述目标集群发生异常的数据确定为目标数据,并将目标数据写入所述消息队列;
获取合并指令,并根据所述合并指令和所述目标数据的数据版本将所述目标数据合并至所述目标集群。
2.根据权利要求1所述的数据迁移方法,其特征在于,所述将目标数据写入消息队列,具体包括:
根据所述目标数据生成事务日志,所述事务日志包括所述目标数据以及所述目标数据的第一数据标识和第一数据版本;
将所述事务日志写入所述消息队列。
3.根据权利要求2所述的数据迁移方法,其特征在于,所述根据所述合并指令和所述目标数据的数据版本将所述目标数据合并至所述目标集群,包括:
根据所述第一数据标识确定所述目标集群中与所述目标数据对应的第一数据;
根据所述目标数据、所述第一数据版本和所述第一数据的第二数据版本,将所述目标数据合并至所述目标集群。
4.根据权利要求3所述的数据迁移方法,其特征在于,所述根据所述目标数据、所述第一数据版本和所述第一数据的第二数据版本,将所述目标数据合并至所述目标集群,具体包括:
若所述第一数据版本不高于所述第二数据版本,则将所述目标数据舍弃,并将所述事务日志从所述消息队列中删除;
若所述第一数据版本高于所述第二数据版本,则使用所述目标数据覆盖所述第一数据。
5.根据权利要求2所述的数据迁移方法,其特征在于,所述事务日志中还记录有所述目标数据的写入时间,所述数据迁移方法还包括:
根据所述写入时间确定所述目标数据的生存时长;
若所述生存时长大于阈值,则将所述事务日志从所述消息队列中删除。
6.根据权利要求1所述的数据迁移方法,其特征在于,所述将所述增量数据写入所述源集群和所述目标集群,具体包括:
将所述增量数据写入所述源集群,并获取写入结果;
若所述写入结果指示所述增量数据写入所述源集群成功,则根据所述增量数据的第二数据标识、第三数据版本和操作类型,将所述增量数据写入所述目标集群。
7.根据权利要求6所述的数据迁移方法,其特征在于,所述根据所述增量数据的第二数据标识、第三数据版本和操作类型,将所述增量数据写入所述目标集群,具体包括:
若所述增量数据的操作类型为新增操作,且所述目标集群中不存在第三数据标识与所述第二数据标识一致的第二数据,则将所述增量数据写入所述目标集群;
若所述增量数据的操作类型为更新操作,且所述目标集群中不存在第三数据标识与所述第二数据标识一致的第二数据,则确定所述增量数据写入所述目标集群异常,并将所述增量数据确定为所述目标数据;
若所述增量数据的操作类型为更新操作,且所述目标集群中存在第三数据标识与所述第二数据标识一致的第二数据,且所述第二数据的数据版本小于所述第三数据版本,则使用所述增量数据覆盖所述第二数据;
若所述增量数据的操作类型为更新操作,且所述目标集群中存在第三数据标识与所述第二数据标识一致的第二数据,且所述第二数据的数据版本不小于所述增量数据的数据版本,则确定所述增量数据写入所述目标集群异常,并将所述增量数据确定为所述目标数据。
8.一种数据迁移装置,其特征在于,应用于数据迁移系统,所述数据迁移系统包括源集群、目标集群和消息队列,所述数据迁移装置包括:
获取模块,用于获取迁移指令,根据所述迁移指令将存量数据由源集群同步至目标集群,并将增量数据写入所述源集群和所述目标集群;
写入模块,用于当所述增量数据写入所述目标集群发生异常时,将所述增量数据中写入所述目标集群发生异常的数据确定为目标数据,并将目标数据写入所述消息队列;
合并模块,用于获取合并指令,根据所述合并指令和所述目标数据的数据版本将所述目标数据合并至所述目标集群。
9.一种计算机可读存储介质,其特征在于,所述存储介质中存储有多条指令,所述指令适于由处理器加载以执行权利要求1至7任一项所述的数据迁移方法。
10.一种数据迁移设备,其特征在于,所述数据迁移设备包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器通过调用所述存储器中存储的所述计算机程序,用于执行如权利要求1至7任一项所述的数据迁移方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110585631.4A CN113438275B (zh) | 2021-05-27 | 2021-05-27 | 数据迁移方法、装置、存储介质及数据迁移设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110585631.4A CN113438275B (zh) | 2021-05-27 | 2021-05-27 | 数据迁移方法、装置、存储介质及数据迁移设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113438275A true CN113438275A (zh) | 2021-09-24 |
CN113438275B CN113438275B (zh) | 2023-04-07 |
Family
ID=77802954
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110585631.4A Active CN113438275B (zh) | 2021-05-27 | 2021-05-27 | 数据迁移方法、装置、存储介质及数据迁移设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113438275B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113946293A (zh) * | 2021-10-27 | 2022-01-18 | 北京达佳互联信息技术有限公司 | 集群数据迁移方法、装置、电子设备和存储介质 |
CN114003585A (zh) * | 2021-11-04 | 2022-02-01 | 北京房江湖科技有限公司 | 一种数据处理的方法、装置和存储介质 |
CN114090343A (zh) * | 2022-01-18 | 2022-02-25 | 北京华品博睿网络技术有限公司 | 一种基于桶粒度的跨集群复制系统及方法 |
CN118520051A (zh) * | 2024-07-22 | 2024-08-20 | 深圳市灵智数字科技有限公司 | 数据同步方法及电子设备 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744960A (zh) * | 2014-01-06 | 2014-04-23 | 河海大学 | 一种基于云平台的元数据索引模型及方法 |
CN105718570A (zh) * | 2016-01-20 | 2016-06-29 | 北京京东尚科信息技术有限公司 | 用于数据库的数据迁移方法和装置 |
CN107818181A (zh) * | 2017-11-27 | 2018-03-20 | 深圳市华成峰科技有限公司 | 基于Plcient交互式引擎的索引方法及其系统 |
CN107958010A (zh) * | 2016-10-18 | 2018-04-24 | 北京京东尚科信息技术有限公司 | 用于在线数据迁移的方法及系统 |
CN108628874A (zh) * | 2017-03-17 | 2018-10-09 | 北京京东尚科信息技术有限公司 | 迁移数据的方法、装置、电子设备和可读存储介质 |
CN110196844A (zh) * | 2018-04-16 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种数据迁移方法、系统及存储介质 |
CN110209653A (zh) * | 2019-06-04 | 2019-09-06 | 中国农业银行股份有限公司 | HBase数据迁移方法及迁移装置 |
CN110399356A (zh) * | 2019-06-14 | 2019-11-01 | 阿里巴巴集团控股有限公司 | 一种在线数据迁移方法、装置、计算设备及存储介质 |
CN110532241A (zh) * | 2019-07-18 | 2019-12-03 | 政采云有限公司 | 利用MySQL Binlog进行不停机数据迁移方法 |
CN110807013A (zh) * | 2018-08-03 | 2020-02-18 | 阿里巴巴集团控股有限公司 | 用于分布式数据存储集群的数据迁移方法和装置 |
CN111381996A (zh) * | 2020-03-16 | 2020-07-07 | Oppo(重庆)智能科技有限公司 | 内存异常处理方法及装置 |
CN112286905A (zh) * | 2020-10-15 | 2021-01-29 | 北京沃东天骏信息技术有限公司 | 数据迁移方法及装置、存储介质、电子设备 |
-
2021
- 2021-05-27 CN CN202110585631.4A patent/CN113438275B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744960A (zh) * | 2014-01-06 | 2014-04-23 | 河海大学 | 一种基于云平台的元数据索引模型及方法 |
CN105718570A (zh) * | 2016-01-20 | 2016-06-29 | 北京京东尚科信息技术有限公司 | 用于数据库的数据迁移方法和装置 |
CN107958010A (zh) * | 2016-10-18 | 2018-04-24 | 北京京东尚科信息技术有限公司 | 用于在线数据迁移的方法及系统 |
CN108628874A (zh) * | 2017-03-17 | 2018-10-09 | 北京京东尚科信息技术有限公司 | 迁移数据的方法、装置、电子设备和可读存储介质 |
CN107818181A (zh) * | 2017-11-27 | 2018-03-20 | 深圳市华成峰科技有限公司 | 基于Plcient交互式引擎的索引方法及其系统 |
CN110196844A (zh) * | 2018-04-16 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种数据迁移方法、系统及存储介质 |
CN110807013A (zh) * | 2018-08-03 | 2020-02-18 | 阿里巴巴集团控股有限公司 | 用于分布式数据存储集群的数据迁移方法和装置 |
CN110209653A (zh) * | 2019-06-04 | 2019-09-06 | 中国农业银行股份有限公司 | HBase数据迁移方法及迁移装置 |
CN110399356A (zh) * | 2019-06-14 | 2019-11-01 | 阿里巴巴集团控股有限公司 | 一种在线数据迁移方法、装置、计算设备及存储介质 |
CN110532241A (zh) * | 2019-07-18 | 2019-12-03 | 政采云有限公司 | 利用MySQL Binlog进行不停机数据迁移方法 |
CN111381996A (zh) * | 2020-03-16 | 2020-07-07 | Oppo(重庆)智能科技有限公司 | 内存异常处理方法及装置 |
CN112286905A (zh) * | 2020-10-15 | 2021-01-29 | 北京沃东天骏信息技术有限公司 | 数据迁移方法及装置、存储介质、电子设备 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113946293A (zh) * | 2021-10-27 | 2022-01-18 | 北京达佳互联信息技术有限公司 | 集群数据迁移方法、装置、电子设备和存储介质 |
CN114003585A (zh) * | 2021-11-04 | 2022-02-01 | 北京房江湖科技有限公司 | 一种数据处理的方法、装置和存储介质 |
CN114090343A (zh) * | 2022-01-18 | 2022-02-25 | 北京华品博睿网络技术有限公司 | 一种基于桶粒度的跨集群复制系统及方法 |
CN118520051A (zh) * | 2024-07-22 | 2024-08-20 | 深圳市灵智数字科技有限公司 | 数据同步方法及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113438275B (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113438275B (zh) | 数据迁移方法、装置、存储介质及数据迁移设备 | |
US10747745B2 (en) | Transaction execution commitment without updating of data row transaction status | |
US9779128B2 (en) | System and method for massively parallel processing database | |
JP2023518374A (ja) | データベースのトランザクション処理方法、データベースのトランザクション処理装置、サーバ、及びコンピュータプログラム | |
US11132350B2 (en) | Replicable differential store data structure | |
US8825601B2 (en) | Logical data backup and rollback using incremental capture in a distributed database | |
US20220207036A1 (en) | Data access method and apparatus, and data storage method and apparatus | |
CN111694863B (zh) | 一种数据库缓存的刷新方法、系统和装置 | |
US20120278429A1 (en) | Cluster system, synchronization controlling method, server, and synchronization controlling program | |
US11640411B2 (en) | Data replication system | |
CN113094430B (zh) | 一种数据处理方法、装置、设备以及存储介质 | |
US12111817B2 (en) | Log execution method and apparatus, computer device and storage medium | |
CN102780603A (zh) | 网站流量控制方法及装置 | |
KR20140047448A (ko) | 트랜잭션 재시작 가능한 클라이언트 장치와 데이터베이스 서버 및 방법 | |
CN112905676A (zh) | 一种数据文件的导入方法及装置 | |
WO2023111910A1 (en) | Rolling back database transaction | |
CN113626457A (zh) | 缓存删除重试机制实现数据库与缓存一致性方法及系统 | |
CN112685431A (zh) | 异步缓存方法、装置、系统、电子设备和存储介质 | |
CN111221587A (zh) | 配置中心的管理调度方法及装置 | |
CN118445364B (zh) | 分布式资源同步方法、系统和设备 | |
CN117171266B (zh) | 一种数据同步方法、装置、设备和存储介质 | |
CN114116732B (zh) | 处理事务的方法、装置、存储装置以及服务器 | |
CN118365452B (zh) | 基于Redis的热点账户的交易方法、装置、介质和设备 | |
CN118132295B (zh) | 一种参数更新方法、装置及相关设备 | |
WO2024082693A1 (zh) | 数据处理方法及装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |