Solr备份和恢复

Solr备份和恢复,第1张

solr目前我们主要使用的是6.x版本,在上面有个类似的backup和restore功能,但是实际测试发现只能对一个core进行 *** 作,而不能对整个collection进行 *** 作,实际中使用solr多采用solrCloud模式,而不是单机或主备模式。

所以在这这种情况下只能采用别的方式进行数据备份和恢复。

查看solr的帮助文档,发现solr的HTTP接口的API中有删除副本的功能,仔细查看发现删除副本的时候可以保留数据不删除,这不就是我们需要的吗。

所有的副本都下线后,state.json就会变成:

这时候重新建这个索引会报错,已经存在。

通过轮询依次调用各个副本信息后,将整个collection做到完全下线。

但是下线后,这个collection在solr前台仍然存在,还占有一定的资源,最好的办法是删除state.json信息,因为solr还对zookeeper上此节点进行监听的。

上线的时候依次恢复多个副本,当然至于先恢复哪个副本,顺序没有关系,

恢复的语句如下:

http://127.0.0.1:8983/solr/test4/replication?command=backup&location=/data/aus/tmpDir&name=test4_20180109140508&wt=json

注意:

1、location: 为备份的数据位置,/data/aus/tmpDir 在23主机上必须存在且有权限。

2、name: 为备份的文件夹后缀名字,按照上面的 *** 作,实际的文件夹为:snapshot. test4_20180109140508

3、备份的目录中的文件夹均是索引数据不含有事务日志。

4、如果不提供name参数则是snapshot.xxxxx xxxx为时间戳信息。

5、numberToKeep即可以保存的最大备份数目,可以提供也可以不提供。

solr自带的api是对整个collection *** 作,但是却只 *** 作调用的API,不能做分布式 *** 作。

备份步骤:

1)对各个solr节点均需要调用如下 *** 作:

http://127.0.0.1:8983/solr/test4/replication?command=backup&location=/data/aus/tmpDir&name=test4_20180109140508&wt=json

注意:

1、location: 为备份的数据位置,/data/aus/tmpDir 在23主机上必须存在且有权限。

2、name: 为备份的文件夹后缀名字,按照上面的 *** 作,实际的文件夹为:snapshot. test4_20180109140508

3、备份的目录中的文件夹均是索引数据不含有事务日志。

4、如果不提供name参数则是snapshot.xxxxx xxxx为时间戳信息。

5、numberToKeep即可以保存的最大备份数目,可以提供也可以不提供。

恢复collection信息调用如下:

http://127.0.0.1:8983/solr/test4/replication?command=restore&location=/data/aus/tmpDir&name=test4_20180109140508&wt=json

注意:

1、name不能提供全名和原来的备份的名字一样。

2、如果怕时间长,可以提供异步id,参数为:async = xxxid 然后通过调用查看执行结果:

/admin/collections?action=REQUESTSTATUS&requestid=request-id

3、对于replicationFactor 和maxShardsPerNode、autoAddReplicas 还提供重写功能。

方案优缺点:

优点: 整个过程简单,参数少;备份出来是文件夹形式方便压缩或换地方存储。

缺点: 不能备份一个solr节点多个的情况; 由于也有复制,耗时不定,可以采用异步的方式。

可以通过定时任务实现solr与数据库数据的的一致性、比如每天夜里某个时间点、对数据进行更新同步。更新分两种、一种叫增量,是在之前的数据的基础上,将变动的数据进行更新;另一种叫全量更新、是直接删除原来的数据、全部导入新的数据。。。我就知道这些

1、创建core或collection,有两种方式创建

第一种是使用命令行,查看README.txt所知道的

bin/solr create -c collection

第二种使用访问链接创建

localhost:8983/solr/admin/cores?action=CREATE&name=collection&instanceDir=collection

默认创建的目录在solr-5.2.1/server/solr下

2、修改solr-5.2.1/server/solr/collection/conf/managed-schema文件为schema.xml

前面进入conf文件夹一看,傻了,居然没有4.6.1里面的schema.xml文件,这怎么设置?后来看到别人的一个文件说可以设置,难道我去4.6.1复制一个过来,再仔细一看有个managed-schema文件,于是试着打开一看,看到了下面的内容:

This is the Solr schema file. This file should be named “schema.xml” and should be in the conf directory under the solr home(i.e. ./solr/conf/schema.xml by default)

3、在schema.xml添加filed,因为我的mysql数据库当中只有id和name两个字段,而name这个filed在schema.xml已经存在,我只需要添加id就行了,如下:

<fields>

<field name="id" type="int" indexed="true" stored="true" required="true" />

</fields>

<uniqueKey>id</uniqueKey>

<defaultSearchField>name</defaultSearchField>

4、修改solr-5.2.1/server/solr/collection/conf/下的solrconfig.xml的配置文件,配置一下添加数据库数据的xml,如下:

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">

<lst name="defaults">

<str name="config">data-config.xm


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10039866.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存