这里采用master-slave的方式
简单来说,复制操作就是通过检测机制发现master服务器上有新的索引时即复制到slave服务器上, 并以时间精确到秒为文件夹名后缀index201307182307进行复制,待复制完之后,删除原来索引的文件夹并切换文件夹名index.
solr集群状态:
查询solr当前集群状态:http://localhost:8080/solr/my_solr/replication
停止master和slaves之间的复制关系:http://localhost:8080/solr/my_solr/replication?command=disablereplication
启动master和slaves之间的复制关系:http://localhost:8080/solr/my_solr/replication?command=enablereplication
手动复制数据,和slave自动复制相当:http://localhost:8080/solr/my_solr/replication?command=fetchindex
开始配置:
1、首先准备2两个tomcat(多个也行),一个作为master,其他作为slave。
2、配置master主机
修改solrconfig.xml文件
<span style="font-family:Microsoft YaHei;font-size:14px;"><requestHandler name="/replication" class="solr.ReplicationHandler">
<lst name="master">
<!-- 执行commit操作后进行replication操作,同样的可以设置startup,optimize -->
<str name="replicateAfter">commit</str>
<!-- 需要复制的文件 -->
<str name="confFiles">schema.xml,stopwords.txt,synonyms.txt</str>
<!-- 验证用户名 -->
<str name="httpBasicAuthUser">upxiaofeng</str>
<!-- 验证密码 -->
<str name="httpBasicAuthPassword">123</str>
</lst>
</requestHandler></span>
3、配置slave从机
<span style="font-family:Microsoft YaHei;font-size:14px;"><requestHandler name="/replication" class="solr.ReplicationHandler">
<lst name="slave">
<!-- master主机地址 -->
<str name="masterUrl">http://127.0.0.1:8080/solr/my_solr/replication</str>
<!-- 同步触发时间,如下是每分钟触发一次 -->
<str name="pollInterval">00:01:00</str>
<!-- 验证用户名 -->
<str name="httpBasicAuthUser">upxiaofeng</str>
<!-- 验证密码 -->
<str name="httpBasicAuthPassword">123</str>
</lst>
</requestHandler></span>
4、启动主机和从机的时候复制过来的文件和索引会有一个版本 bak
总结,solr的主从复制的整体架构如下: