Solr主从备份

SOLR复制模式,是一种在分布式环境下用于同步主从服务器的一种实现方式,因之前提到的基于rsync的SOLR不同方式部署成本过高,被SOLR1.4版本所替换,取而代之的就是基于HTTP协议的索引文件传输机制,该方式部署简单,只需配置一个文件即可。以下讲解具体操作步骤: 
步骤分主服务器和从服务器,允许有多个从服务器,即从服务器的配置一样。 

主服务器: 
在solrConfig.xml中: 

Xml代码  Solr主从备份
  1. <requestHandler name="/replication" class="solr.ReplicationHandler">  
  2.          <lst name="master">  
  3.                  <str name="replicateAfter">commit</str>  
  4.                  <str name="confFiles">schema.xml,solrconfig_slave.xml:solrconfig.xml</str>  
  5.                  <str name="commitReserveDuration">00:05:00</str>  
  6.          </lst>  
  7.  </requestHandler>  


说明: 

    • replicateAfter : SOLR会自行在以下操作行为发生后执行复制: 'commit', 'startup' 'optimize',这里我们选择commit , 即SOLR每一次接受到commit请求后,会执行复制策略。
    • confFiles : 待分发的配置文件,solr 也会将主服务器上的字段配置文件:schema.xml和stopwords.txt,固排文件: elevate.xml同步到辅服务器上。
    • commitReserveDuration: 每次commit之后,保留增量索引的周期时间,这里设置为5分钟。



从服务器: 

Xml代码  Solr主从备份
  1.    
  2. <requestHandler name="/replication" class="solr.ReplicationHandler">  
  3.     <lst name="slave">  
  4.         <str name="masterUrl">http://192.168.172.2:7100/solr/${solr.core.name}/replication</str>  
  5.         <str name="pollInterval">00:08:00</str>  
  6.         <!-- external 很容易有索引大小不对, 压缩文件损坏这2个问题, 导致复制无法进行, 且一直复制失败, 测试下来internal没任何问题 -->  
  7.         <str name="compression">internal</str>  
  8.         <str name="httpConnTimeout">1000</str>  
  9.         <str name="httpReadTimeout">2000</str>  
  10.     </lst>  
  11. </requestHandler>  


说明: 

  • masterUrl : 主服务器同步URL地址
  • pollInterval:从服务器同步间隔,即每隔多长时间同步一次主服务器
  • httpConnTimeout:设置连接超时(单位:毫秒)
  • httpReadTimeout:如果设置同步索引文件过大,则应适当提高此值。(单位:毫秒)
  • httpBasicAuthUser:验证用户名,需要和主服务器一致
  • httpBasicAuthPassword:验证密码,需和主服务器一致
  • compression:external or internal 使用SOLR自己的压缩算法或应用容器的

官网地址:http://wiki.apache.org/solr/SolrReplication