SOLR主从备份

一、准备工作

1.1 保证SOLR库文件版本相同

保证SOLRlib文件版本,slf4j-log4j12-1.6.1.jar slf4j-jdk14-1.6.1.jar slf4j-api-1.6.1.jar jcl-over-slf4j-1.6.1.jar

1.2 修改TOMCAT配置文件

service.xml 中增加如下内容

二、主服务器配置

SOLR每个CORE需要单独定义复制需要进入每个CORE中修改相关配置我们现有三个CORE分别为 order\product\vehicle

    设置主服务器需要进入项目的每个COREconfig\solrconfig.xml增加如下项目:

 

      

         commit

         startup

         optimize

         schema.xml

         00:00:10

      

说明:

1)replicateAfter可取startupcommitoptimize,表示触发复制的时机。使用中,这三个值都可以配上。
2)backupAfter
表示备份时机,如果需要备份,solr会在配置的时机自动生成备份。
3)confFiles
表示在复制时需要复制到slave的文件列表。我们的环境只需要schema.xml
4)commitReserveDuration
默认是10秒,这个值通常你通常不需要修改,除非你的网络慢到传输5M数据需要10秒以上的时间。

三、从服务器配置

   

        http://192.168.1.252:8080/solr/order/replication 

        00:00:10 

        internal

        5000

        10000

        username

        password

    

说明:上面的参数也不需要太多解释,其中pollInterval参数表明slavemaster复制数据的频率。如果对实时性要求不高,通常5-10分钟即可,也避免slaveindexsearcher频繁的切换,同时,mastercommit频率也可相对保持一致。

四、HTTP API

solrReplicationHandler提供了一系列http命令(参数command),支持的可选值如下:
1
indexversionslavemaster获取最新的索引点信息。
2
filecontentslavemaster下载指定文件的内容。
3
filelistslavemaster获取指定indexversion的索引文件列表(及需要复制的配置文件)。
4
backup:备份索引。如果担心索引有损坏的可能性,可以定期备份索引。
5
fetchindex:手动复制数据,和slave自动复制相当。
6
disablepoll:停止slave的复制。
7
enablepoll:开启slave的复制。
8
abortfetch:终止slave上正在进行的下载文件过程。
9
commitsshow当前仍旧保留的IndexCommit信息。
10
detailsshow slave当前的复制细节信息。
11
enablereplication:启动master对所有slave的复制功能
12
disablereplication:关闭master对所有slave的复制功能

五、性能

solrReplicationHandler使用http的分段连续的下载索引文件数据,而代替经典的rsyncsolr wiki上给出的性能测试对比图如下:

基于tomcat的solr3.5集群部署_第1张图片

可以看到,性能方面差别不大,不必有太多的担心。

六、参考文章

http://wiki.apache.org/solr/SolrReplication

几种常见连接方式


基于tomcat的solr3.5集群部署_第2张图片


基于tomcat的solr3.5集群部署_第3张图片


基于tomcat的solr3.5集群部署_第4张图片