掌桥专利:专业的专利平台
掌桥专利
首页

Elastic Search集群间数据迁移方法、装置及系统

文献发布时间:2023-06-19 12:02:28


Elastic Search集群间数据迁移方法、装置及系统

技术领域

本发明涉及互联网技术领域,尤其涉及一种Elastic Search集群间数据迁移方法、装置及系统。

背景技术

Elastic Search(简称ES)是一个分布式、高扩展、高实时的搜索与数据分析引擎,可用于存储索引数据(一个索引相当于传统数据库中的一张表),为使用者提供更灵活的在线数据查询服务。在使用ES时,常常会因为数据备份、产品升级、集群搬迁等原因需要对ES集群中的索引数据进行迁移。ES在用作查询功能时可视为一个数据库,但不具有一般关系型数据库多表关联、一致性和事务性等特性,在使用一般数据库的文件传输方式进行数据迁移时需要通过快照将数据进行文件固定,并且不支持不同版本ES集群间数据迁移,因此无法解决产品升级时新旧ES集群间数据同步的问题。

发明内容

本发明的一个目的在于提供一种Elastic Search集群间数据迁移方法,实现不同版本ES集群的数据批量迁移,提高ES集群的数据迁移效率。本发明的另一个目的在于提供一种Elastic Search集群间数据迁移装置。本发明的再一个目的在于提供一种ElasticSearch集群间数据迁移系统。本发明的还一个目的在于提供一种计算机设备。本发明的还一个目的在于提供一种可读介质。

为了达到以上目的,本发明一方面公开了一种Elastic Search集群间数据迁移方法,包括:

将源ES集群中所有待迁移索引写入预设迁移队列中;

根据迁移配置文件确定并行迁移的并行任务数量和迁移速度;

启动所述并行任务数量对应的数据迁移进程根据所述迁移速度分别将所述并行任务数量对应的待迁移索引传输至目标ES集群。

优选的,进一步包括;

预先将源ES集群的IP地址写入目标ES集群的白名单中。

优选的,进一步包括预先对所述目标ES集群中索引进行备份的步骤:

建立与目标ES集群中每个目标索引对应的备份索引;

将所述目标索引中的数据复制至所述备份索引中。

优选的,进一步包括:

将目标索引中的数据复制至所述备份索引的备份进度写入预设备份进度表中;

当所述备份进度表中的备份进度为备份完成时,通过数据迁移进程将所述待迁移索引的待迁移数据迁移至所述目标ES集群。

优选的,所述分别将所述并行任务数量对应的待迁移索引传输至目标ES集群具体包括:

获取与所述并行任务数量对应的待迁移索引的待迁移数据;

根据预设加密规则对所述待迁移数据进行加密;

将加密后的待迁移数据传输至所述目标ES集群。

优选的,进一步包括:

根据进程配置管理文件确定节流配置信息;

根据所述节流配置信息调整并行任务数量和迁移速度。

优选的,进一步包括:

将待迁移索引传输至目标ES集群的迁移结果写入预设结果表中;

根据预设结果表中的迁移结果确定所有传输至目标ES集群的待迁移索引是否全部迁移成功;

若否,确定回退或重新迁移未迁移成功的待迁移索引。

本发明还公开了一种Elastic Search集群间数据迁移装置,包括:

索引写入模块,用于将源ES集群中所有待迁移索引写入预设迁移队列中;

迁移配置模块,用于根据迁移配置文件确定并行迁移的并行任务数量和迁移速度;

数据迁移模块,用于启动所述并行任务数量对应的数据迁移进程根据所述迁移速度分别将所述并行任务数量对应的待迁移索引传输至目标ES集群。

本发明还公开了一种Elastic Search集群间数据迁移系统,包括源ES集群、目标ES集群以及如上所述的数据迁移装置。

本发明还公开了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,

所述处理器执行所述程序时实现如上所述方法。

本发明还公开了一种计算机可读介质,其上存储有计算机程序,

该程序被处理器执行时实现如上所述方法。

本发明在ES集群间数据迁移时设置迁移队列,将源ES集群中所有待迁移索引写入预设迁移队列,根据预先配置的迁移配置文件确定并行迁移的并行任务数量和迁移速度,然后根据并行任务数量建立对应数量的数据迁移进程,将并行任务数量对应的待迁移索引中的每个待迁移索引分别通过一个数据迁移进程根据迁移速度传输至目标ES集群。本发明提供了一种可配置化、自动化调度的ES集群数据迁移方案,实现了不同版本ES集群的数据批量迁移,提高了ES集群间的数据迁移效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出本发明Elastic Search集群间数据迁移系统具体实施例的结构图;

图2示出本发明Elastic Search集群间数据迁移方法具体实施例的流程图;

图3示出本发明Elastic Search集群间数据迁移方法具体实施例S020的流程图;

图4示出本发明Elastic Search集群间数据迁移方法具体实施例备份进度监控的流程图;

图5示出本发明Elastic Search集群间数据迁移方法具体实施例S300的流程图;

图6示出本发明Elastic Search集群间数据迁移方法具体实施例节流配置的流程图;

图7示出本发明Elastic Search集群间数据迁移方法具体实施例迁移结果验证的流程图;

图8示出本发明Elastic Search集群间数据迁移装置具体实施例的结构图;

图9示出本发明Elastic Search集群间数据迁移装置具体实施例包括预处理模块的结构图;

图10示出适于用来实现本发明实施例的计算机设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,本申请公开的一种Elastic Search集群间数据迁移方法、装置及系统可用于人工智能技术领域,也可用于除人工智能技术领域之外的任意领域,本申请公开的Elastic Search集群间数据迁移方法、装置及系统的应用领域不做限定。

为了便于理解本申请提供的技术方案,下面先对本申请技术方案的相关内容进行说明。本发明实施例提供的Elastic Search集群间数据迁移方法通过将待迁移索引设置在预设队列中,根据用户配置的迁移配置文件确定并行任务数量和迁移速度的并行迁移参数,建立并行任务数量对应的一个或多个数据迁移进程,根据并行迁移参数将并行任务数量对应的待迁移索引通过对应的数据迁移进程以迁移速度并行传输至目标数据库,解决了目前不同版本ES集群间数据自动迁移的空白,同时实现了不同ES集群间数据的并行迁移,提高了数据迁移速度和效率。

图1是本发明实施例提供的Elastic Search集群间数据迁移系统的结构示意图,如图1所示,本发明实施例提供的Elastic Search集群间数据迁移系统包括源ES集群1、目标ES集群2和数据迁移装置3。

其中,源ES集群中存储有索引数据,即源ES集群中存在有大量索引,其中每个索引相当于一张表,表中存储有索引数据。从而源ES集群可作为数据库向使用者提供在线数据查询服务。在使用ES集群时,经常会因为数据备份、产品升级、集群搬迁等原因,需要将源ES集群中的索引数据迁移(复制)至目标ES集群中。

由于目前的ES集群在数据传输时采用快照形式且不支持不同版本ES集群间数据迁移,无法实现产品升级等操作时将源ES集群的数据迁移至目标ES集群的目的。由此,本实施例的数据迁移装置可将源ES集群中所有待迁移索引写入预设迁移队列中,根据迁移配置文件确定并行迁移的并行任务数量和迁移速度,启动所述并行任务数量对应的数据迁移进程根据所述迁移速度分别将所述并行任务数量对应的待迁移索引传输至目标ES集群,实现不同版本ES集群的数据批量并行迁移,提高ES集群的数据迁移效率。

需要说明的是,本发明中的数据迁移装置可以为独立的装置,通过预设的通信协议与源ES集群和目标ES集群进行通信,实现Elastic Search集群间数据迁移。当然,该数据迁移装置也可以集成在源ES集群或目标ES集群中,本发明对此并不作限定。

下面以Elastic Search集群间数据迁移装置作为执行主体为例,说明本发明实施例提供的Elastic Search集群间数据迁移方法的实现过程。可理解的是,本发明实施例提供的Elastic Search集群间数据迁移方法的执行主体包括但不限于Elastic Search集群间数据迁移装置。

根据本发明的一个方面,本实施例公开了一种Elastic Search集群间数据迁移方法。如图2所示,本实施例中,所述方法包括:

S100:将源ES集群中所有待迁移索引写入预设迁移队列中。

S200:根据迁移配置文件确定并行迁移的并行任务数量和迁移速度。

S300:启动所述并行任务数量对应的数据迁移进程根据所述迁移速度分别将所述并行任务数量对应的待迁移索引传输至目标ES集群。

可以理解的是,在一个具体例子中,预设迁移队列可为reindex队列,可通过curl命令调用队列进程,将所有需要迁移的待迁移索引加入reindex队列中。然后通过

本发明在ES集群间数据迁移时设置迁移队列,将源ES集群中所有待迁移索引写入预设迁移队列,根据预先配置的迁移配置文件确定并行迁移的并行任务数量和迁移速度,然后根据并行任务数量建立对应数量的数据迁移进程,将并行任务数量对应的待迁移索引中的每个待迁移索引分别通过一个数据迁移进程根据迁移速度传输至目标ES集群。本发明提供了一种可配置化、自动化调度的ES集群数据迁移方案,实现了不同版本ES集群的数据批量迁移,提高了ES集群间的数据迁移效率。

在优选的实施方式中,所述方法进一步包括预先对所述目标ES集群中索引进行备份的步骤:

S010:将源ES集群的IP地址写入目标ES集群的白名单中。

具体的,为了实现将源ES集群的索引数据迁移并写入目标ES集群中,同时又避免每次数据迁移时均需要进行身份验证或鉴权等操作,导致ES集群数据迁移效率慢的问题。在该优选的实施方式中,可将源ES集群的IP地址写入目标ES集群的白名单中,则目标ES集群接收到源ES集群传输的数据后可直接进行数据的存储等操作,无需对迁移数据的来源进行身份验证或鉴权,提高ES集群间的数据迁移速度和效率。例如,在一个具体例子中,源ES集群中包括多个服务器,多个服务器的IP地址形成IP地址列表,则可将源ES集群的IP地址列表写入目标ES集群的reindex remote白名单中,以使目标ES集群可以接收源ES集群传输的索引数据。

在优选的实施方式中,如图3所示,所述方法进一步包括预先对所述目标ES集群中索引进行备份的步骤S020:

S021:建立与目标ES集群中每个目标索引对应的备份索引。

S022:将所述目标索引中的数据复制至所述备份索引中。

具体的,源ES集群的索引迁移至目标ES集群中时,源ES集群的索引数据会直接覆盖目标ES集群中对应的目标索引中的数据完成数据迁移。则目标ES集群中的目标索引中存储有原始数据,源ES集群索引的迁移会直接覆盖掉目标索引中的原始数据,导致目标索引中的原始数据丢失,在数据迁移失败需要退回数据迁移时目标ES集群中的目标索引无法恢复原始状态,可能会导致目标ES集群中的关键数据丢失。基于此,在该优选的实施方式中,在将源ES集群中的索引迁移至目标ES集群之前,可预先在目标ES集群中对目标索引进行备份,以防止数据迁移出现数据丢失时目标ES集群中的索引数据丢失。例如,在一个具体例子中,可针对每个目标索引建立对应的备份索引,用于备份和迁移失败的数据恢复,如迁移对应的目标索引名为a_example_2020,则创建对应的备份索引名为a_example_2020_bak,进一步在目标ES集群内部对目标索引中的初始数据进行副本数据复制,如将a_example_2020索引的索引数据复制到a_example_2020_bak,实现对目标索引的备份。则当源ES集群的待迁移索引数据迁移失败需要退回数据迁移时,可将备份索引中的索引数据复制至对应的原目标索引,以恢复目标索引中的初始数据,如将a_example_2020_bak备份索引的数据复制回a_example_2020。

在优选的实施方式中,如图4所示,所述方法进一步包括:

S023:将目标索引中的数据复制至所述备份索引的备份进度写入预设备份进度表中。

S024:当所述备份进度表中的备份进度为备份完成时,通过数据迁移进程将所述待迁移索引的待迁移数据迁移至所述目标ES集群。

具体的,在该优选的实施方式中,在目标ES集群中目标索引的数据复制至备份索引的数据备份过程中,对数据备份的进度进行监控。当监控到目标索引中的索引数据复制到备份索引中的数据复制(备份)过程完成后,再启动源ES集群到目标ES集群的数据迁移过程,可以保证目标ES集群中目标索引的初始数据不丢失,可以通过将备份索引中的索引数据还原至目标索引,以实现目标ES集群中目标索引数据的还原。例如,在一个具体例子中,针对每个目标索引建立对应的备份索引后,可以通过调用REST API,利用REST提供的数据传输服务将目标索引中的索引数据复制到备份索引中。其中,REST在将索引数据复制至备份索引的过程中,会自动记录数据复制的备份进度。则可定时获取REST中的备份进度,将备份进度写入预设备份进度表中,通过分析备份进度表中的备份进度可确定目标索引是否已经备份完成。即当备份进度表中的备份进度为备份完成时,确认目标索引备份完成,可启动后续的源ES集群数据迁移进程,通过数据迁移进程将所述待迁移索引的待迁移数据迁移至所述目标ES集群。在该具体例子中,可通过curl命令定时访问ES接口http://<目标ES集群任意节点ip>:9200/_tasks?detailed=true&actions=*reindex&pretty,获取REST提供的备份进度,并将备份进度写入预设的备份进度表中。

在优选的实施方式中,如图5所示,所述S300分别将所述并行任务数量对应的待迁移索引传输至目标ES集群具体包括:

S310:获取与所述并行任务数量对应的待迁移索引的待迁移数据。

S320:根据预设加密规则对所述待迁移数据进行加密。

S330:将加密后的待迁移数据传输至所述目标ES集群。

具体的,源ES集群的索引中的索引数据可能涉及用户的敏感信息,这部分敏感信息通过互联网传输可能会导致用户信息泄露。由此,在该优选的实施方式中,在源ES数据库中的索引迁移至目标ES集群之前,可通过预设加密规则对待迁移索引中的待迁移数据进行加密,数据加密后再传输至目标ES集群,可避免用户的一些敏感信息在传输过程中泄露或被窃取。在一个具体例子中,开发人员可预先配置加密字段表,将待加密的索引数据的字段名和加密方式等加密规则设置在该加密字段表中。则通过对开发人员设置的加密字段表进行分析可确定需要加密的字段和加密方式。例如,开发人员可预先在加密字段表中设置加密字段名为“ID”,加密方式为将“ID”字段统一设置为“888888”。则在数据迁移之前,先对待迁移索引的各字段进行分析,确定各字段中是否存在“ID”字段,若存在,将待迁移索引“ID”字段的待迁移数据修改为“888888”后再传输至目标ES集群,可避免用户的ID信息泄露。

在优选的实施方式中,如图6所示,所述方法进一步包括:

S410:根据进程配置管理文件确定节流配置信息。

S420:根据所述节流配置信息调整并行任务数量和迁移速度。

具体的,开发人员还可以预先设置进程配置管理文件,在进程配置管理文件中设置节流配置信息。在ES集群数据迁移时,可通过分析进程配置管理文件的节流配置信息动态调整数据迁移的并行任务数量和迁移速度,以满足不同情况或时间段下不同的数据迁移方式,可根据迁移重要性和时效性调整并行任务数量和迁移速度。在一个具体例子中,该节流配置信息可以包括多个时间段及每个时间段内数据迁移的并行任务数量和迁移速度。则当时间到达各个时间段的起始时间时,可将各时间段对应的并行任务数量和迁移速度写入迁移配置文件,例如可以通过get命令获取源ES集群当前设置的并行任务数量、进程配置管理文件,具体指令可为:

GET/api/v1/reindex/remote/queue/task_pool,

GET/api/v1/reindex/rethrottle/schedule。

进而根据进程配置管理文件,使用post命令更新ES集群reindex任务并行任务数量、迁移速度以及节流配置信息,具体指令可为:

POST/api/v1/reindex/remote/queue/task_pool,

POST/api/v1/reindex/rethrottle/request_per_second,

POST/api/v1/reindex/rethrottle/schedule。

在优选的实施方式中,如图7所示,所述方法进一步包括:

S510:将待迁移索引传输至目标ES集群的迁移结果写入预设结果表中。

S520:根据预设结果表中的迁移结果确定所有传输至目标ES集群的待迁移索引是否全部迁移成功。

S530:若否,确定回退或重新迁移未迁移成功的待迁移索引。

具体的,为了确认源ES集群中的索引是否成功迁移至目标ES集群中,可分析待迁移索引传输至目标ES集群的迁移结果,将迁移结果写入预设结果表中。然后,可从预设结果表中读取待迁移索引的迁移结果,确定待迁移索引是否全部迁移成功。例如,在一个具体例子中,可以通过调用REST API,利用REST提供的数据传输服务将待迁移索引中的待迁移数据复制到目标ES集群的目标索引中。其中,REST在将数据复制至目标索引的过程中,会自动记录数据迁移的迁移进度和迁移结果。则可定时获取REST中的迁移结果,将迁移结果写入预设结果表中,通过分析预设结果表中的迁移结果可确定待迁移索引是否已完全迁移成功,即当预设结果表中所有待迁移索引的迁移结果均为迁移完成时,确认待迁移索引全部迁移成功。具体的,可通过post命令POST/api/v1/monitor/start启动监控。然后,通过接口调用指令调用REST服务以获取REST中存储的迁移结果,将获取的迁移结果存储至预设结果表中进行实时监控。

最后,当待迁移索引未全部迁移成功时,可将未迁移成功的待迁移索引回退或重新迁移。当执行回退时,在预先对目标ES集群中的目标索引进行备份的情况下,当源ES集群中对应的待迁移索引未成功迁移时,可将备份索引的索引数据恢复至目标索引,使目标索引回退至原始状态。当重新迁移时,可重新在源ES集群启动数据迁移进程将未成功迁移的待迁移索引传输至目标ES集群。

下面通过一个具体例子来对本发明作进一步的说明。以并行迁移3个索引:a_example_info_2020、b_example_info_2020、c_example_info_2020为例,简要说明整个迁移过程:

1、初始化与备份:

(1)首先完成白名单配置,3个备份索引创建(a_example_info_2020_bak、b_example_info_2020_bak、c_example_info_2020_bak),以及索引数据复制。

(2)启动索引数据复制后,开启索引复制进度监控,并将备份进度写入备份进度表中。

(3)配置加密字段表:根据实际情况,本次迁移的b_example_info_2020索引中包含id字段,需要加密为888888,因此在加密字段表中配置如下:

b_example_info_2020,id,888888。

2、数据迁移:

(1)将需要迁移的3个索引写入索引队列表中,调用队列进程,将索引队列表中的索引加入ES集群的迁移队列。

(2)调用配置管理进程,并从迁移配置文件中得到并行任务表和迁移速度。根据实际需求设置本次迁移中采用并行迁移方式且并行任务数量为3。

(3)根据进程配置管理文件确定节流配置信息,定时节流配置各时间段的时间间隔为2min,每隔2min更新ES集群reindex的并行任务数量和迁移速度。

(4)等待目标索引备份完成后,启动数据迁移进程,根据步骤(2)和(3)中配置的并行任务数量、节流配置信息等参数,启动3个reindex迁移任务并行执行,并且每2min检查并调整一次迁移速度进行节流。

(5)启动迁移任务后,读取加密字段表,判断此次迁移数据中b_example_info_2020索引中id字段需要进行加密,因此将b_example_info_2020索引中id字段的数据加密为888888后再迁移入目标ES集群。

(6)启动迁移任务后,开启迁移进度监控,每5分钟检查一次迁移状态。

3、结果验证:

(1)等待3个索引的迁移全部完成后,开启迁移结果验证。

(2)获取每个索引的迁移结果写入结果表中。

(3)读取结果表,获取迁移结果。

(4)若3个索引均迁移成功,则本次迁移结束。

(5)若其中含有未成功迁移索引(如b_example_info_2020迁移失败),则根据实际情况选择回退或重新迁移。

(a)若选择回退,则从备份索引b_example_info_2020_bak中恢复数据至目标索引b_example_info_2020。

(b)若选择重新迁移,则调度模块将b_example_info_2020重新写入索引队列表中,从步骤2开始新一轮的数据迁移过程。

本发明可实现对多个索引数据的并行迁移,并且对索引数据的迁移任务进行调度、监控和流控,通过修改配置实时监控和调整迁移任务数量和迁移速度,提供限流节流的功能,同时实现对迁移数据的加密功能。并且,本发明的数据迁移为不覆盖方式的数据迁移,其底层实现方式为对源索引scan,目标索引进行bulk写入。通过此发明,业务人员和数据分析人员可根据需求自动化和可配置化进行ElasticSearch集群间的数据迁移,并可通过参数配置实时调节和监控迁移进度,提升了ElasticSearch使用的便利性和广泛性。

基于相同原理,本实施例还公开了一种Elastic Search集群间数据迁移装置。如图8所示,本实施例中,所述装置包括索引写入模块11、迁移配置模块12和数据迁移模块13。

其中,索引写入模块11用于将源ES集群中所有待迁移索引写入预设迁移队列中。

迁移配置模块12用于根据迁移配置文件确定并行迁移的并行任务数量和迁移速度。

数据迁移模块13用于启动所述并行任务数量对应的数据迁移进程根据所述迁移速度分别将所述并行任务数量对应的待迁移索引传输至目标ES集群。

可以理解的是,在一个具体例子中,预设迁移队列可为reindex队列,可通过curl命令调用队列进程,将所有需要迁移的待迁移索引加入reindex队列中。然后通过post命令:POST/api/v1/reindex/remote/queue/start根据配置的并行任务数量和迁移速度等参数启动并行任务数量对应的数据迁移进程对reindex队列中的待迁移索引进行分批次的迁移至目标ES集群中。

本发明在ES集群间数据迁移时设置迁移队列,将源ES集群中所有待迁移索引写入预设迁移队列,根据预先配置的迁移配置文件确定并行迁移的并行任务数量和迁移速度,然后根据并行任务数量建立对应数量的数据迁移进程,将并行任务数量对应的待迁移索引中的每个待迁移索引分别通过一个数据迁移进程根据迁移速度传输至目标ES集群。本发明提供了一种可配置化、自动化调度的ES集群数据迁移方案,实现了不同版本ES集群的数据批量迁移,提高了ES集群间的数据迁移效率。

在优选的实施方式中,如图9所示,所述装置进一步包括预处理模块10。该预处理模块10用于预先对所述目标ES集群中索引进行备份,即预处理模块10用于将源ES集群的IP地址写入目标ES集群的白名单中。

具体的,为了实现将源ES集群的索引数据迁移并写入目标ES集群中,同时又避免每次数据迁移时均需要进行身份验证或鉴权等操作,导致ES集群数据迁移效率慢的问题。在该优选的实施方式中,可将源ES集群的IP地址写入目标ES集群的白名单中,则目标ES集群接收到源ES集群传输的数据后可直接进行数据的存储等操作,无需对迁移数据的来源进行身份验证或鉴权,提高ES集群间的数据迁移速度和效率。例如,在一个具体例子中,源ES集群中包括多个服务器,多个服务器的IP地址形成IP地址列表,则可将源ES集群的IP地址列表写入目标ES集群的reindex remote白名单中,以使目标ES集群可以接收源ES集群传输的索引数据。

在优选的实施方式中,所述预处理模块10进一步用于预先对所述目标ES集群中索引进行备份,即预处理模块10用于建立与目标ES集群中每个目标索引对应的备份索引,将所述目标索引中的数据复制至所述备份索引中。

具体的,源ES集群的索引迁移至目标ES集群中时,源ES集群的索引数据会直接覆盖目标ES集群中对应的目标索引中的数据完成数据迁移。则目标ES集群中的目标索引中存储有原始数据,源ES集群索引的迁移会直接覆盖掉目标索引中的原始数据,导致目标索引中的原始数据丢失,在数据迁移失败需要退回数据迁移时目标ES集群中的目标索引无法恢复原始状态,可能会导致目标ES集群中的关键数据丢失。基于此,在该优选的实施方式中,在将源ES集群中的索引迁移至目标ES集群之前,可预先在目标ES集群中对目标索引进行备份,以防止数据迁移出现数据丢失时目标ES集群中的索引数据丢失。例如,在一个具体例子中,可针对每个目标索引建立对应的备份索引,用于备份和迁移失败的数据恢复,如迁移对应的目标索引名为a_example_2020,则创建对应的备份索引名为a_example_2020_bak,进一步在目标ES集群内部对目标索引中的初始数据进行副本数据复制,如将a_example_2020索引的索引数据复制到a_example_2020_bak,实现对目标索引的备份。则当源ES集群的待迁移索引数据迁移失败需要退回数据迁移时,可将备份索引中的索引数据复制至对应的原目标索引,以恢复目标索引中的初始数据,如将a_example_2020_bak备份索引的数据复制回a_example_2020。

在优选的实施方式中,所述迁移配置模块12具体用于将目标索引中的数据复制至所述备份索引的备份进度写入预设备份进度表中。当所述备份进度表中的备份进度为备份完成时,通过数据迁移进程将所述待迁移索引的待迁移数据迁移至所述目标ES集群。

具体的,在该优选的实施方式中,在目标ES集群中目标索引的数据复制至备份索引的数据备份过程中,对数据备份的进度进行监控。当监控到目标索引中的索引数据复制到备份索引中的数据复制(备份)过程完成后,再启动源ES集群到目标ES集群的数据迁移过程,可以保证目标ES集群中目标索引的初始数据不丢失,可以通过将备份索引中的索引数据还原至目标索引,以实现目标ES集群中目标索引数据的还原。例如,在一个具体例子中,针对每个目标索引建立对应的备份索引后,可以通过调用REST API,利用REST提供的数据传输服务将目标索引中的索引数据复制到备份索引中。其中,REST在将索引数据复制至备份索引的过程中,会自动记录数据复制的备份进度。则可定时获取REST中的备份进度,将备份进度写入预设备份进度表中,通过分析备份进度表中的备份进度可确定目标索引是否已经备份完成。即当备份进度表中的备份进度为备份完成时,确认目标索引备份完成,可启动后续的源ES集群数据迁移进程,通过数据迁移进程将所述待迁移索引的待迁移数据迁移至所述目标ES集群。在该具体例子中,可通过curl命令定时访问ES接口http://<目标ES集群任意节点ip>:9200/_tasks?detailed=true&actions=*reindex&prett

在优选的实施方式中,所述数据迁移模块13具体用于获取与所述并行任务数量对应的待迁移索引的待迁移数据。根据预设加密规则对所述待迁移数据进行加密。将加密后的待迁移数据传输至所述目标ES集群。

具体的,源ES集群的索引中的索引数据可能涉及用户的敏感信息,这部分敏感信息通过互联网传输可能会导致用户信息泄露。由此,在该优选的实施方式中,在源ES数据库中的索引迁移至目标ES集群之前,可通过预设加密规则对待迁移索引中的待迁移数据进行加密,数据加密后再传输至目标ES集群,可避免用户的一些敏感信息在传输过程中泄露或被窃取。在一个具体例子中,开发人员可预先配置加密字段表,将待加密的索引数据的字段名和加密方式等加密规则设置在该加密字段表中。则通过对开发人员设置的加密字段表进行分析可确定需要加密的字段和加密方式。例如,开发人员可预先在加密字段表中设置加密字段名为“ID”,加密方式为将“ID”字段统一设置为“888888”。则在数据迁移之前,先对待迁移索引的各字段进行分析,确定各字段中是否存在“ID”字段,若存在,将待迁移索引“ID”字段的待迁移数据修改为“888888”后再传输至目标ES集群,可避免用户的ID信息泄露。

在优选的实施方式中,所述数据迁移模块13进一步用于根据进程配置管理文件确定节流配置信息。根据所述节流配置信息调整并行任务数量和迁移速度。

具体的,开发人员还可以预先设置进程配置管理文件,在进程配置管理文件中设置节流配置信息。在ES集群数据迁移时,可通过分析进程配置管理文件的节流配置信息动态调整数据迁移的并行任务数量和迁移速度,以满足不同情况或时间段下不同的数据迁移方式,可根据迁移重要性和时效性调整并行任务数量和迁移速度。在一个具体例子中,该节流配置信息可以包括多个时间段及每个时间段内数据迁移的并行任务数量和迁移速度。则当时间到达各个时间段的起始时间时,可将各时间段对应的并行任务数量和迁移速度写入迁移配置文件,例如可以通过get命令获取源ES集群当前设置的并行任务数量、进程配置管理文件,具体指令可为:

GET/api/v1/reindex/remote/queue/task_pool,

GET/api/v1/reindex/rethrottle/schedule。

进而根据进程配置管理文件,使用post命令更新ES集群reindex任务并行任务数量、迁移速度以及节流配置信息,具体指令可为:

POST/api/v1/reindex/remote/queue/task_pool,

POST/api/v1/reindex/rethrottle/request_per_second,

POST/api/v1/reindex/rethrottle/schedule。

在优选的实施方式中,所述数据迁移模块13进一步用于将待迁移索引传输至目标ES集群的迁移结果写入预设结果表中。根据预设结果表中的迁移结果确定所有传输至目标ES集群的待迁移索引是否全部迁移成功。若否,确定回退或重新迁移未迁移成功的待迁移索引。

具体的,为了确认源ES集群中的索引是否成功迁移至目标ES集群中,可分析待迁移索引传输至目标ES集群的迁移结果,将迁移结果写入预设结果表中。然后,可从预设结果表中读取待迁移索引的迁移结果,确定待迁移索引是否全部迁移成功。例如,在一个具体例子中,可以通过调用REST API,利用REST提供的数据传输服务将待迁移索引中的待迁移数据复制到目标ES集群的目标索引中。其中,REST在将数据复制至目标索引的过程中,会自动记录数据迁移的迁移进度和迁移结果。则可定时获取REST中的迁移结果,将迁移结果写入预设结果表中,通过分析预设结果表中的迁移结果可确定待迁移索引是否已完全迁移成功,即当预设结果表中所有待迁移索引的迁移结果均为迁移完成时,确认待迁移索引全部迁移成功。具体的,可通过post命令POST/api/v1/monitor/start启动监控。然后,通过接口调用指令调用REST服务以获取REST中存储的迁移结果,将获取的迁移结果存储至预设结果表中进行实时监控。

最后,当待迁移索引未全部迁移成功时,可将未迁移成功的待迁移索引回退或重新迁移。当执行回退时,在预先对目标ES集群中的目标索引进行备份的情况下,当源ES集群中对应的待迁移索引未成功迁移时,可将备份索引的索引数据恢复至目标索引,使目标索引回退至原始状态。当重新迁移时,可重新在源ES集群启动数据迁移进程将未成功迁移的待迁移索引传输至目标ES集群。

由于该装置解决问题的原理与以上方法类似,因此本装置的实施可以参见方法的实施,在此不再赘述。

基于相同原理,本实施例还公开了一种Elastic Search集群间数据迁移系统。如图1所示,本实施例中,所述系统包括源ES集群、目标ES集群以及如本实施例所述的数据迁移装置。

由于该系统解决问题的原理与以上方法类似,因此本系统的实施可以参见方法的实施,在此不再赘述。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机设备,具体的,计算机设备例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

在一个典型的实例中计算机设备具体包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述的由客户端执行的方法,或者,所述处理器执行所述程序时实现如上所述的由服务器执行的方法。

下面参考图10,其示出了适于用来实现本申请实施例的计算机设备600的结构示意图。

如图10所示,计算机设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM))603中的程序而执行各种适当的工作和处理。在RAM603中,还存储有系统600操作所需的各种程序和数据。CPU601、ROM602、以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。

以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶反馈器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡,调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装如存储部分608。

特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包括用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

相关技术
  • Elastic Search集群间数据迁移方法、装置及系统
  • 分片集群的数据迁移方法、装置和分片集群系统
技术分类

06120113148624