复制如何工作

时间:2016-10-19 14:22:19

标签: solr solr4

假设我在主Solr服务器上进行了复制,配置如下:

<lst name="master">
    <str name="enable">true</str>
    <str name="replicateAfter">optimize</str>

    <str name="confFiles">solrconfig.xml,schema.xml,stopwords.txt,synonyms.xml</str>
    <str name="commitReserveDuration">00:00:10</str>
</lst>

和slave配置如下:

<lst name="slave">
    <str name="enable">true</str>
    <str name="masterUrl">masterSolr</str>
    <str name="pollInterval">24:00:00</str>
</lst>
  1. 奴隶如何知道在主人身上执行了优化(主人对奴隶一无所知)?
  2. 奴隶是否每24小时检查一次(不是更频繁)?
  3. 如果没有优化但是有几次提交(在主服务器上),是否会执行复制?
  4. 如何达到slave只在优化后进行复制的状态(没有别的),并且会在优化后不久进行复制(我们不想等待几个小时)?

1 个答案:

答案 0 :(得分:1)

复制是一种拉动机制 - 因此,为了能够支持您的场景,您需要进行一些配置。

对于你的问题:
1.它没有 - 它从主人那里拉出间隔(或强制),它告诉你什么版本准备好被复制 2.是 - 24小时
3.仅当自上次索引获取以来已完成优化时 4.需要从主站到从站的一些配置和知识 您可以在updatehandler上使用postOptimize update事件来强制对从属设备进行复制

<listener event="postOptimize" class="solr.RunExecutableListener">
      <str name="exe">wget</str>
      <str name="dir">solr/bin</str>
      <bool name="wait">true</bool>
      <arr name="args"> <str> http://slave_host:port/solr/core?/replication?command=fetchindex</str> </arr>

    </listener>

然后,您可以从slave配置中删除轮询间隔。你需要为每个奴隶添加多个args(在str标签中)