1. 程式人生 > >2016重走solr長征之路:replication主從同步機制

2016重走solr長征之路:replication主從同步機制

solr/replication的描述

在分散式solrcloud的大熱之下,solr的主從同步機制似乎被遺忘。其實對於大多數的搜尋服務或者資料服務的數量級來說,根本用不上solrcloud,而且solrcloud未必能帶來效能的提升。而主從同步機制,配置簡單,使用靈活,對環境要求低,往往適用的場景更多。

典型的主從複製模式(master/slave)的配置方案

solrconfig.xml的配置
master:

<requestHandler name="/replication" class="solr.ReplicationHandler">
<lst name="master"
>
<str name="replicateAfter">optimize</str> <str name="backupAfter">optimize</str> <str name="confFiles">schema.xml,stopwords.txt,elevate.xml</str> <str name="commitReserveDuration">00:00:10</str> </lst> <int name="maxNumberOfBackups">2</int>
<lst name="invariants"> <str name="maxWriteMBPerSec">16</str> </lst> </requestHandler>
  • maxNumberOfBackups:最大備份數量
  • confFiles:主從進行同步的檔案
  • commitReserveDuration:網路很慢的情況下,每次commit之後,保留增量索引的週期時間,預設是10秒

    slave:
<requestHandler name="/replication" class="solr.ReplicationHandler"
>
<lst name="slave"> <str name="masterUrl">http://remote_host:port/solr/core_name/replication</str> <str name="pollInterval">00:00:20</str> <str name="compression">internal</str> <str name="httpConnTimeout">5000</str> <str name="httpReadTimeout">10000</str> <str name="httpBasicAuthUser">username</str> <str name="httpBasicAuthPassword">password</str> </lst> </requestHandler>


- masterUrl:master主機的solr地址,eg: http://192.168.11.13:8280/solr/androidapp
- pollInterval:輪詢的間隔時間

操作solr/replication的API

  • 使master的主從服務生效:
    http://master_host:port/solr/core_name/replication?command=enablereplication

  • 使master的主從服務失效:
    http://master_host:port/solr/core_name/replication?command=disablereplication

  • 檢視當前索引的版本:
    http://host:port/solr/core_name/replication?command=indexversion

  • 手動從master拉取資料到slave:
    http://slave_host:port/solr/core_name/replication?command=fetchindex

  • 使slave的輪詢失效:
    ttp://slave_host:port/solr/core_name/replication?command=disablepoll

  • 使slave的輪詢生效:
    http://slave_host:port/solr/core_name/replication?command=enablepoll

  • 執行備份:
    http://master_host:port/solr/core_name/replication?command=backup

  • 刪除備份:
    http://master_host:port /solr/core_name/replication?command=deletebackup