Mongodb

節點不處於主要或恢復狀態

  • November 6, 2020

我的配置文件是:

systemLog:
   destination: file
   logAppend: true
   path: c:\data\log\mongod.log
storage:
   dbPath: c:\data\db
   journal:
       enabled: true
replication:
  replSetName: "rs0"
net:
  bindIp: 127.0.0.1
  port: 27017
security:
    authorization: enabled

所以,我通過mongod流程成功連接: 在此處輸入圖像描述

然後連接mongo並嘗試打開數據庫和集合: 在此處輸入圖像描述

並得到一個錯誤:

2018-07-07T15:40:25.092+0300 E QUERY    [thread1] Error: error: {
       "operationTime" : Timestamp(0, 0),
       "ok" : 0,
       "errmsg" : "node is not in primary or recovering state",
       "code" : 13436,
       "codeName" : "NotMasterOrSecondary",
       "$clusterTime" : {
               "clusterTime" : Timestamp(0, 0),
               "signature" : {
                       "hash" : BinData(0,"FshG5mLBvAQUizPHXGfCITV4ZKA="),
                       "keyId" : NumberLong("6573732769795407873")
               }
       }
}

為了避免這個錯誤,我使用rs.initiate()如下命令: 在此處輸入圖像描述 但是這個錯誤是什麼意思?謝謝。

您已將此節點配置為副本集成員:

replication:
    replSetName: "rs0"

啟動時,新的 MongoDB 伺服器還沒有副本集配置。伺服器將處於未知副本集成員狀態 ,直到您將此成員添加到現有副本集配置或用於rs.initiate()將其建立為新副本集的第一個成員。

您可以使用 確認目前狀態rs.status()。沒有任何配置的伺服器將在 MongoDB 4.0 中報告類似於以下內容(確切輸出可能因伺服器版本而異):

> rs.status()
{
   "operationTime" : Timestamp(0, 0),
   "ok" : 0,
   "errmsg" : "no replset config has been received",
   "code" : 94,
   "codeName" : "NotYetInitialized",
   "$clusterTime" : {
       "clusterTime" : Timestamp(0, 0),
       "signature" : {
           "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
           "keyId" : NumberLong(0)
       }
   }
}

添加到副本集後,您可以使用rs.status()rs.conf()分別檢查目前的副本集狀態和配置。

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