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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)