2017-06-06 108 views
0

所有,Mongo同步:減慢或停止同步?

我有一個replicaset設置,其中我在同一臺機器上28002運行兩個蒙戈過程,M_pri端口28001和M_sec具有以下配置:

"_id" : "myReplSet", 
    "version" : 1, 
    "protocolVersion" : NumberLong(1), 
    "members" : [ 
      { 
        "_id" : 0, 
        "host" : "localhost:28001", 
        "arbiterOnly" : false, 
        "buildIndexes" : true, 
        "hidden" : false, 
        "priority" : 1, 
        "slaveDelay" : NumberLong(0), 
        "votes" : 1 
      }, 
      { 
        "_id" : 1, 
        "host" : "localhost:28002", 
        "arbiterOnly" : false, 
        "buildIndexes" : true, 
        "hidden" : true, 
        "priority" : 0, 
        "slaveDelay" : NumberLong(0), 
        "votes" : 1 
      } 
    ], 
    "settings" : { 
      "chainingAllowed" : true, 
      "heartbeatIntervalMillis" : 2000, 
      "heartbeatTimeoutSecs" : 10, 
      "electionTimeoutMillis" : 10000, 
      "catchUpTimeoutMillis" : 2000, 
      "getLastErrorModes" : { 

      }, 
      "replicaSetId" : ObjectId("593565b0ebd8ca36a07c6576") 
    } 

該設置的目的是從M_sec上取下每日的mongodump(gunzip)。在mongodump期間,我的整個系統都變慢了,因爲我有這些進程可以寫入和讀取M_pri。

有沒有一種方法可以讓我在m_sec關閉mongodump期間停止從主模塊到輔助模塊mongo的同步?

感謝

回答

1

您可以設置M_sec是一個被延遲的成員(https://docs.mongodb.com/manual/core/replica-set-delayed-member/#replica-set-delayed-members),所以它會從M_pri與複製的延遲。 事情要記住:

要求

延遲成員:

  • 必須優先級0成員。將優先級設置爲0以防止延遲的成員成爲主要成員。
  • 應該是隱藏成員。始終阻止應用程序查看並查詢延遲的成員。 做選舉的主要表決,如果會員[N] .votes設置爲1

行爲

延遲成員複製並從源頭上OPLOG一個 延遲應用操作。在選擇延遲量時,請考慮 延遲量:

  • 必須等於或大於您的預期維護窗口持續時間。
  • 必須小於oplog的容量。有關oplog大小的更多信息,請參閱Oplog大小。

配置例子:

{ 
    "_id" : <num>, 
    "host" : <hostname:port>, 
    "priority" : 0, 
    "slaveDelay" : <seconds>, 
    "hidden" : true 
}