Solr索引复制(Index Replication)

索引复制这种分布式方式,是由一个主索引和多个从索引构成,从索引从主索引复制索引。主索引负责更新索引,从索引复制同步索引和查询。一个主索引可以复制索引到多个多个从索引库




在主服务中配置索引复制请求处理类

<requestHandler name="/replication" class="solr.ReplicationHandler" >
    <lst name="master">
        <!--在 'optimize(合并索引)'后进行同步,其他可选的值还有'commit', 'startup',该值可以填多个-->
        <str name="replicateAfter">optimize</str>
        <!--在 'optimize(合并索引)'后备份索引,其他可选的值还有'commit', 'startup',该值可以填多个-->
        <!-- <str name="backupAfter">optimize</str> -->
        <!--指定备份多少份文件,默认值为 MAX_VALUE-->
        <!-- <int name="numberToKeep">2</int> -->
        <!--指定需要同步的配置文件,多份文件以逗号分隔 -->
        <str name="confFiles">schema.xml,stopwords.txt,elevate.xml</str>
        <!--The default value of reservation is 10 secs. Normally , you should not need to specify this -->
        <str name="commitReserveDuration">00:00:10</str>
    </lst>
</requestHandler>



在从服务器中配置索引复制请求处理

<requestHandler name="/replication" class="solr.ReplicationHandler" >
    <lst name="slave">
        <!--主索引的url,该从索引将从这个主索引地址同步索引-->
        <str name="masterUrl">http://remote_host:port/solr/corename/replication</str>;
        <!--拉取间隔,达到这个时间,从索引将从主索引同步索引.格式为 is HH:mm:ss . 
         如果该设置为空从索引将不会主动从主索引同步索引.
         另外拉取索引的请求也可以通过 admin 页面或者 http api 来触发 -->
        <str name="pollInterval">00:00:20</str>
        <!-- 以下参数不常用,非必填参数-->
        <!--在索引传输过程中使用压缩,可选的值有两个 internal 和 external
        如果值是 'external' 请确保主索引的solr已经设置了accept-encoding header。
        如果值是 'internal' 索引数据将被自动压缩?,这个主要在低带宽情况下使用,
        局域网中请不要使用,局域网中使用会降低复制效率-->
        <str name="compression">internal</str>
        <!-以下是配置连接和读取超时时间,这个跟 http 中的概念一样,单位为毫秒-->
        <str name="httpConnTimeout">5000</str>
        <str name="httpReadTimeout">10000</str>
        <!-- 如果主服务中的 http base 的鉴权可用的话,从服务就需要配置这个用户名和密码 -->
        <str name="httpBasicAuthUser">username</str>
        <str name="httpBasicAuthPassword">password</str>
    </lst>
</requestHandler>

利用Replication Handler 备份索引

http://localhost:81/apache-solr-3.5.0/replication?command=backup
该请求成功的话,会得到:
<response>
    <lst name="responseHeader">
        <int name="status">0</int>
        <int name="QTime">42</int>
    </lst>
    <str name="status">OK</str>
</response>

此时在 solr/home  data 目录下,会发现类似 snapshot.20120626210126 的目录,该目录就是备份出来的索引库

你可能感兴趣的:(Solr索引复制(Index Replication))