solr配置主从同步配置及同步机制
solr主从配置:
主从配置是实现主从服务器之间的数据同步,为了实现的是读写分离,为了方便,我在一台服务器上模拟实现的,我用了一个tomcat服务器,tomcat上面部署了两个war包,一个master和一个slave,具体的solr服务搭建我就不写了,单写如何实现主从配置。
我使用的solr是多核的,我拿一个作为例子啊(用户),主从配置过程中,主服务的索引中配置文件是不需要做任何变化的,但是为了与从的比较,我也贴下配置,主配置文件solrConfig.xml:
<?xml version="1.0" encoding="UTF-8" ?> <config> <luceneMatchVersion>LUCENE_36</luceneMatchVersion> <requestDispatcher handleSelect="true" > <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" /> </requestDispatcher> <requestHandler name="standard" class="solr.StandardRequestHandler" default="true" /> <requestHandler name="/update" class="solr.XmlUpdateRequestHandler" /> <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" /> <requestHandler name="/replication" class="solr.ReplicationHandler" > <lst name="master"> <str name="replicateAfter">startup</str> <str name="replicateAfter">commit</str> <str name="confFiles">schema.xml</str> </lst> </requestHandler> <requestHandler name="/analysis/field" class="solr.FieldAnalysisRequestHandler" /> <admin> <defaultQuery>solr</defaultQuery> </admin> </config>
从配置文件的solrConfig.xml
<?xml version="1.0" encoding="UTF-8" ?> <config> <luceneMatchVersion>LUCENE_36</luceneMatchVersion> <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.StandardDirectoryFactory}"/> <updateHandler class="solr.DirectUpdateHandler2" /> <requestDispatcher handleSelect="true" > <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" /> </requestDispatcher> <requestHandler name="standard" class="solr.StandardRequestHandler" default="true" /> <requestHandler name="/update" class="solr.XmlUpdateRequestHandler" /> <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" /> <requestHandler name="/replication" class="solr.ReplicationHandler"> <lst name="slave"> <str name="masterUrl">http://127.0.0.1:8983/master/user</str> <str name="pollInterval">00:00:20</str> <str name="compression">internal|external</str> <str name="httpConnTimeout">50000</str> <str name="httpReadTimeout">500000</str> </lst> </requestHandler> <requestHandler name="/analysis/field" class="solr.FieldAnalysisRequestHandler" /> <!-- config for the admin interface --> <admin> <defaultQuery>solr</defaultQuery> </admin> </config>
以上配置表示,当主索引进行提交,更新和启动服务的时候,服务进行主从同步,从主索引http://127.0.0.1:8983/master/user上读取索引文件
配置好配置文件后,启动服务器,在solr管理界面可以验证同步情况,输入
http://127.0.0.1:8983/master/#/user/replication
如果配置成功的话会出现如下界面:
该时间为动态的,每20s会执行同步索引一次,也可以点击replicate now立即执行同步
另外,主从同步的机制如下:
1、主服务索引文件进行压缩
2、在从服务上面新建一个目录,将主索引压缩后的数据复制到新的目录上
3、同步结束后,删除老的目录(老的索引)
注意:在同步过程中访问的是老的索引
我在测试环境上面做了测试,1700多万的数据(2.79G)
其中优化索引时间比同步时间长
优化索引大约使用了10分钟
但是同步索引只用了3分钟左右
相关推荐
spylyt 2020-09-11
upxiaofeng 2020-06-11
TyCoding 2020-05-03
upxiaofeng 2020-04-30
lionelf 2020-04-20
TyCoding 2020-04-08
TyCoding 2020-03-26
wenchanter 2020-03-26
roygbip 2020-02-16
wsxsxz 2020-02-03
lionelf 2020-02-03
lionelf 2020-02-03
TyCoding 2020-02-01
heniancheng 2020-01-31
lionelf 2020-01-30
TyCoding 2020-01-10