Mongodb

MongoDB 副本集 - 選舉延遲

  • June 18, 2021

我已經為 3 個具有成功副本集的 mongo 數據庫實例進行了本地設置。(1 個小學,2 個中學)。

如果我終止主實例,其中一個輔助實例將變為主實例,但大約需要 10 秒。

有什麼辦法可以減少時間。

我已更新 rs.config 如下:

 config = rs.config()
 {
"_id" : "rs0",
"version" : 3,
"protocolVersion" : NumberLong(1),
"members" : [
   {
       "_id" : 0,
       "host" : "127.0.0.1:27020",
       "arbiterOnly" : false,
       "buildIndexes" : true,
       "hidden" : false,
       "priority" : 1,
       "tags" : {

       },
       "slaveDelay" : NumberLong(0),
       "votes" : 1
   },
   {
       "_id" : 1,
       "host" : "127.0.0.1:27021",
       "arbiterOnly" : false,
       "buildIndexes" : true,
       "hidden" : false,
       "priority" : 1,
       "tags" : {

       },
       "slaveDelay" : NumberLong(0),
       "votes" : 1
   },
   {
       "_id" : 2,
       "host" : "127.0.0.1:27022",
       "arbiterOnly" : false,
       "buildIndexes" : true,
       "hidden" : false,
       "priority" : 1,
       "tags" : {

       },
       "slaveDelay" : NumberLong(0),
       "votes" : 1
   }
],
"settings" : {
   "chainingAllowed" : true,
   "heartbeatIntervalMillis" : 1000,
   "heartbeatTimeoutSecs" : 3,
   "electionTimeoutMillis" : 10000,
   "catchUpTimeoutMillis" : 2000,
   "getLastErrorModes" : {

   },
   "getLastErrorDefaults" : {
       "w" : 1,
       "wtimeout" : 0
   },
   "replicaSetId" : ObjectId("5976e7bd5b7837e0fbba2871")
 }
}

編輯

我已經重新安裝了 MongoDB 企業版:

  MongoDB shell version: 3.2.15

是的!在這裡檢查。

你可以調整

  • settings.heartbeatTimeoutSecs
  • settings.electionTimeoutMillis
  • settings.catchUpTimeoutMillis
  • settings.heartbeatIntervalMillis

對於那些從 3.0 或更早版本開始執行 MongoDB 的人,您可能沒有,protocolVersion或者它可能被設​​置為0. 如果您現在執行的是 3.2.12+ 或 3.4+ 版本,我們建議您升級您的 RS 以使用 protocolVersion 1。這應該會大大提高選舉新主節點的速度。

引用自:https://dba.stackexchange.com/questions/181951