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