一种solr数据迁移方法和装置与流程

文档序号:13876493阅读:1126来源:国知局
一种solr数据迁移方法和装置与流程

本发明涉及数据迁移领域,尤其涉及一种solr数据迁移方法和装置。



背景技术:

solr是一种基于lucene的企业级搜索应用服务器,lucene是一套用于全文检索和搜寻的开源程式库。solr基于lucene搜索引擎实现站内搜索,易于安装和配置,其当前已在众多大型网站中使用。由于solr是基于大数据集群的,当大数据集群变更存储设备时,需要将集群内的solr索引数据迁移至另外一个大数据集群存储设备中,该solr索引数据是存在于hdfs(hadoopdistributedfilesystem,分布式文件系统文件系统)中。但是当前对solr索引数据进行迁移后,通常存在迁移后的solr索引数据无法直接查询的问题。



技术实现要素:

本发明实施例提供的一种solr数据迁移方法和装置,主要解决的技术问题是迁移后的solr索引数据无法直接查询的问题。

为解决上述技术问题,本发明实施例提供一种solr数据迁移方法,包括:

根据原存储设备中源solr集合,在目标存储设备上创建相同的新的solr集合;

根据原存储设备中源solr索引数据,在目标存储设备上创建相同的新的solr索引数据;

使新的solr集合和新的solr索引数据在目标存储设备上生效。

本发明实施例还提供一种solr数据迁移装置,包括:

solr集合创建模块,用于根据原存储设备中源solr集合,在目标存储设备上创建相同的新的solr集合;

solr索引数据创建模块,用于根据原存储设备中源solr索引数据,在目标存储设备上创建相同的新的solr索引数据;

生效处理模块,用于使新的solr集合和新的solr索引数据在目标存储设备上生效。

本发明实施例还提供一种计算机存储介质,计算机存储介质中存储有计算机可执行指令,计算机可执行指令用于执行前述的任一项的solr数据迁移方法。

本发明的有益效果是:

根据本发明实施例提供的solr数据迁移方法和装置,以及计算机存储介质,通过根据原存储设备中源solr集合,在目标存储设备上创建相同的新的solr集合;根据原存储设备中源solr索引数据,在目标存储设备上创建相同的新的solr索引数据;使新的solr集合和新的solr索引数据在目标存储设备上生效。即通过在目标存储设备上创建与原存储设备上相同的solr集合和solr索引数据,并使该solr集合和solr索引数据在该目标存储设备上生效,则可以使得迁移后的solr索引数据能被直接查询,提高solr数据迁移后查询数据的易用性和可靠性。

附图说明

图1为本发明实施例一的solr数据迁移方法流程图;

图2为本发明实施例一的solr数据迁移过程示意图;

图3为本发明实施例二的solr数据迁移装置示意图;

图4为本发明实施例二的另一solr数据迁移装置示意图。

具体实施方式

下面通过具体实施方式结合附图对本发明实施例作进一步详细说明。

实施例一:

本实施例提供一种solr数据迁移方法,请参见图1,具体包括:

步骤s101,根据原存储设备中源solr集合,在目标存储设备上创建相同的新的solr集合;

步骤s102,根据原存储设备中源solr索引数据,在目标存储设备上创建相同的新的solr索引数据;

步骤s103,使新的solr集合和新的solr索引数据在目标存储设备上生效。

具体的,为使迁移后的solr索引数据能被直接查询,可以通过在目标存储设备上创建与原存储设备上相同的solr集合和solr索引数据,并使该solr集合和solr索引数据在该目标存储设备上生效,以实现迁移后的solr索引数据能被直接查询的目的。

对于步骤s101,根据原存储设备中源solr集合,在目标存储设备上创建相同的新的solr集合,包括:从原存储设备中的zookeeper上获取源solr集合的配置文件,将获取到的源solr集合的配置文件存储至目标存储设备的zookeeper中;从原存储设备中的zookeeper上获取源solr集合的集合信息;根据源solr集合的配置文件和源solr集合的集合信息创建新的solr集合,并将新的solr集合的集合信息保存至目标存储设备的json格式文件中。

具体的,本实施例中,在目标存储设备上创建与源solr集合相同的新的solr集合时,需要在目标存储设备上创建用于创建新的solr集合的配置文件和该源solr集合的集合信息,然后根据该配置文件和源solr集合的集合信息创建新的solr集合。其中,根据原存储设备中源solr集合的配置文件,在目标存储设备上创建相同的新的配置文件包括:从原存储设备中的zookeeper上获取源solr集合的配置文件;将获取到的源solr集合的配置文件上传至目标存储设备的zookeeper中。本实施例中的存储设备具体可以是指集群。详细的,可参见图2所示,由于用于配置solr集合的配置文件存在于zookeeper上,所以可以由用户手动配置原始配置文件,该原始配置文件具体可以是config.ini文件,根据该config.ini文件去获取源solr集合的配置文件。用户手动配置config.ini文件,具体可以是通过该config.ini文件输入相应的zookeeper的地址,待迁移信息,即待迁移源solr集合的名称,zkcli.sh工具所在路径等信息。然后,根据config.ini文件去获取源solr集合的配置文件,具体可以是通过该config.ini文件中的zkcli.sh工具所在路径信息调用相应的zkcli.sh工具从zookeeper上获取源solr集合的配置文件,该调用相应的zkcli.sh工具从zookeeper上获取源solr集合的配置文件,具体可以是通过远程拷贝工具except_scp发送远程拷贝命令从zookeeper上自动获取源solr集合的配置文件;另外,该配置文件具体可以是config配置文件。然后将获取到的config配置文件通过远程拷贝命令scp上传至目标集群的主机上,其具体可以是通过执行target-collection.sh脚本文件实现相应处理;进一步的,在目标集群的主机上将config配置文件上传至目标集群的zookeeper中。

本实施例中,从原存储设备中的zookeeper上获取源solr集合的集合信息,包括:从原存储设备中的zookeeper上获取json格式文件;解析json格式文件,得到源solr集合的集合信息。具体的,可以使用前述的用户配置的config.ini文件,通过该config.ini文件中的zkcli.sh工具所在路径信息调用相应的zkcli.sh工具从zookeeper上获取源solr集合的集合信息。详细的,请参见图2,获取源solr集合的集合信息包括:通过zkcli.sh工具在原集群的zookeeper中获取clusterstate.json文件内容,并将该clusterstate.json文件内容保存至本地json格式文件中,该本地json格式文件具体可以是指source/source_coll.json文件;然后通过deal-coll-json.py程序解析该clusterstate.json文件中的源solr集合的集合信息,得到该源solr集合的集合信息。进一步的,在解析得到该源solr集合的集合信息后,可以将该集合信息保存至source/source_coll_$collection.ini文件中。

进一步的,本实施例中的源solr集合的集合信息包括:分片数和副本数。即解析该clusterstate.json文件中的源集合信息,得到该源solr集合的集合信息,具体可以是获取用于创建集合的分片数和副本数,当然也可以根据需要获取其他应用创建集合的信息。

本实施例中,通过前述方式,在将solr集合的配置文件存储到目标存储设备的zookeeper中,并且从原存储设备中的zookeeper上获取到源solr集合的集合信息后,根据源solr集合的配置文件和源solr集合的集合信息在目标设备中创建新的solr集合,并将新的solr集合的集合信息保存至目标存储设备的json格式文件中。具体的,请参见图2,可以是调用target_collection.sh文件和except_ssh程序来创建该新的solr集合;然后将新的solr集合的集合信息保存至目标存储设备的json格式文件中,具体可以是保存至target_coll_$collection.ini文件中。进一步的,本实施例中,在目标存储设备上创建新的solr集合,具体可以是通过执行online-collection-transfer.sh脚本,来创建新的solr集合。

对于步骤s102,根据原存储设备中源solr索引数据,在目标存储设备上创建相同的新的solr索引数据,包括:在目标存储设备的分布式文件系统上创建临时目录,并将原存储设备的分布式文件系统上的源solr索引数据上传至临时目录下;获取新的solr集合的分片范围与目标存储设备的分布式文件系统的核心节点标识的对应关系;根据对应关系,将临时目录下的源solr索引数据拷贝至正式目录对应的核心节点标识目录下。具体的,在目标存储设备上创建与原存储设备上相同的新的solr索引数据,具体可以是将原存储设备上的solr索引数据迁移到目标存储设备上进行存储,该存储设备具体可以是集群,即目标存储设备为目标solr集群,原存储设备为原solr集群。请参见图2,进行集群间的solr索引数据迁移时,需要停止原solr集群和目标solr集群,防止迁移过程中数据发生变化。进一步的,可以在目标集群的hdfs上创建临时目录,作为原集群的hdfs的solr索引数据存放的容器;然后通过使用hdfs的远程拷贝命令distcp功能,进行集群间hdfs上solr索引数据的迁移,将该solr索引数据迁移至目标集群的hdfs临时目录下;该临时目录具体可以是/solr临时目录。进一步的,将该临时目录下的solr索引数据拷贝至正式目录对应的core_nodeid(核心节点标识)目录下,请参见图2,可以是根据solr集合的shard的range(分片范围)和hdfs上的core_nodeid的对应关系,将目标集群的临时目录hdfs的solr索引数据拷贝至正式目录对应的core_nodeid目录下。其中,solr集合的shard的range和hdfs上的core_nodeid的对应关系的获取方式可以是根据原solr集合和目标solr集合的json格式文件的信息,获取solr集合的shard的range和core_nodeid的对应关系;并将该对应关系保存至当前core_info.ini文件中。该临时目录相当于一个缓冲容器,将solr索引数据从临时目录更新到正式目录,更新失败时可重复操作,solr索引数据不会在临时目录丢失,保证了数据的安全性和可靠性。上述将临时目录下的solr索引数据拷贝至正式目录对应的core_nodeid目录下,具体可以是执行target_cptmp2solr.sh脚本,将临时目录下的solr索引数据迁移至对应的core_nodeid目录下。

进一步的,本实施例中,根据对应关系,将临时目录下的源solr索引数据拷贝至正式目录对应的核心节点标识目录下之前,还包括:删除目标存储设备的分布式文件系统上的集合目录。具体的,为保证solr集合的唯一性和后续数据查询的唯一性,需要将目标存储设备的hdfs上的集合目录删除;请参见图2,该集合目录具体可以是/solr/collectom集合目录。

本实施例提供的solr数据迁移方法,使新的solr集合和新的solr数据在目标存储设备上生效,具体可以是指在目标存储设备上完成新的solr集合的创建和solr索引数据的迁移后,重启该目标存储设备,即重启该目标solr集群,使新的solr集合和新的solr数据在目标存储设备上生效。

进一步的,本实施例中提供的solr数据迁移方法,使新的solr集合和新的solr索引数据在目标存储设备上生效之后,还包括通过以下方式验证solr数据迁移是否成功:调用solr的查询接口,查询新的solr索引数据,若能够正确查询到数据,则solr数据迁移成功。具体的,请参见图2,在重启目标solr集群后,可以通过调用solr的查询接口,对新的solr索引数据进行,如果能够查询到正确的solr索引数据,则认为数据迁移过程中数据是完整的,并未丢失。

本实施例提供的solr数据迁移方法,通过根据原存储设备中源solr集合,在目标存储设备上创建相同的新的solr集合;根据原存储设备中源solr索引数据,在目标存储设备上创建相同的新的solr索引数据;使新的solr集合和新的solr索引数据在目标存储设备上生效。即通过在目标存储设备上创建与原存储设备上相同的solr集合和solr索引数据,并使该solr集合和solr索引数据在该目标存储设备上生效,则可以使得迁移后的solr索引数据能被直接查询,提高solr数据迁移后查询数据的易用性和可靠性。

实施例二:

本实施例提供一种solr数据迁移装置,请参见图3,具体包括:solr集合创建模块31,solr索引数据创建模块32和生效处理模块33。其中,solr集合创建模块31用于根据原存储设备中源solr集合,在目标存储设备上创建相同的新的solr集合;solr索引数据创建模块32用于根据原存储设备中源solr索引数据,在目标存储设备上创建相同的新的solr索引数据;生效处理模块33用于使新的solr集合和新的solr数据在目标存储设备上生效。

具体的,为使迁移后的solr索引数据能被直接查询,可以通过在目标存储设备上创建与原存储设备上相同的solr集合和solr索引数据,并使该solr集合和solr索引数据在该目标存储设备上生效,以实现迁移后的solr索引数据能被直接查询的目的。

其中,solr集合创建模块31还用于:从原存储设备中的zookeeper上获取源solr集合的配置文件,将获取到的源solr集合的配置文件存储至目标存储设备的zookeeper中;从原存储设备中的zookeeper上获取源solr集合的集合信息;根据源solr集合的配置文件和源solr集合的集合信息创建新的solr集合,并将新的solr集合的集合信息保存至目标存储设备的json格式文件中。即该solr集合创建模块31上述方式根据原存储设备中源solr集合,在目标存储设备上创建相同的新的solr集合。即在目标存储设备上创建与源solr集合相同的新的solr集合时,需要在目标存储设备上创建用于创建新的solr集合的配置文件和该源solr集合的集合信息,然后根据该配置文件和源solr集合的集合信息创建新的solr集合。该solr集合创建模块31还用于从原存储设备中的zookeeper上获取json格式文件;解析json格式文件,得到源solr集合的集合信息。本实施例中的源solr集合的集合信息包括:分片数和副本数。即解析该json格式文件中的源集合信息,得到该源solr集合的集合信息,具体可以是获取用于创建集合的分片数和副本数,当然也可以根据需要获取其他应用创建集合的信息。

本实施例中,通过前述方式,solr集合创建模块31将solr集合的配置文件存储到目标存储设备的zookeeper中,并且从原存储设备中的zookeeper上获取到源solr集合的集合信息后,根据源solr集合的配置文件和源solr集合的集合信息在目标设备中创建新的solr集合,并将新的solr集合的集合信息保存至目标存储设备的json格式文件中。

其中,solr索引数据创建模块32还用于通过以下方式在目标存储设备上创建相同的新的solr索引数据。具体的,solr索引数据创建模块32在目标存储设备的分布式文件系统上创建临时目录,并将原存储设备的分布式文件系统上的源solr索引数据上传至临时目录下;获取新的solr集合的分片范围与目标存储设备的分布式文件系统的核心节点标识的对应关系;根据对应关系,将临时目录下的源solr索引数据拷贝至正式目录对应的核心节点标识目录下。具体的,在目标存储设备上创建与原存储设备上相同的新的solr索引数据,即为将原存储设备上的solr索引数据迁移到目标存储设备上进行存储,该存储设备具体可以是集群,即目标存储设备为目标solr集群,原存储设备为原solr集群。进一步的,本实施例中的solr索引数据创建模块32在根据对应关系,将临时目录下的源solr索引数据拷贝至正式目录对应的核心节点标识目录下之前,还包括:删除目标存储设备的分布式文件系统上的集合目录,保证solr集合的唯一性和后续数据查询的唯一性。

本实施例中,生效处理模块33使新的solr集合和新的solr数据在目标存储设备上生效,具体可以是在目标存储设备上完成新的solr集合的创建和solr索引数据的迁移后,重启该目标存储设备,即重启该目标solr集群,使新的solr集合和新的solr数据在目标存储设备上生效。

进一步的,请参见图4,本实施例提供的solr数据迁移装置,还包括检测模块34,检测模块34用于在新的solr集合和新的solr索引数据在目标存储设备上生效之后,验证solr数据迁移是否成功。

本实施例提供的solr数据迁移装置,通过根据原存储设备中源solr集合,在目标存储设备上创建相同的新的solr集合;根据原存储设备中源solr索引数据,在目标存储设备上创建相同的新的solr索引数据;使新的solr集合和新的solr索引数据在目标存储设备上生效。即通过在目标存储设备上创建与原存储设备上相同的solr集合和solr索引数据,并使该solr集合和solr索引数据在该目标存储设备上生效,则可以使得迁移后的solr索引数据能被直接查询,提高solr数据迁移后查询数据的易用性和可靠性。

显然,本领域的技术人员应该明白,上述本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在计算机存储介质(rom/ram、磁碟、光盘)中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。所以,本发明不限制于任何特定的硬件和软件结合。

以上内容是结合具体的实施方式对本发明实施例所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1