Mongo 輔助節點停留在啟動狀態

Mongo 輔助節點停留在啟動狀態

我有一個 MongoDB 副本集,其輔助副本集無法通過 STARTUP 狀態。資料庫很大,但他們現在應該已經轉移到 STARTUP2 了。正確的端口已打開,因為我可以從主端口連接到輔助端口,反之亦然。

答案1

接下來的步驟解決了類似的問題:

  1. 關於主要成員:

    rs.status()
    {
    "set" : "ShardD",
    "date" : ISODate("2015-08-28T17:01:40.647Z"),
    "myState" : 1,
    "members" : [
            {
                    "_id" : 0,
                    "name" : "host.example.com:27017",
                    "health" : 1,
                    "state" : 1,
                    "stateStr" : "PRIMARY",
                    "uptime" : 1167,
                    "optime" : Timestamp(1440780623, 1),
                    "optimeDate" : ISODate("2015-08-28T16:50:23Z"),
                    "electionTime" : Timestamp(1440780252, 2),
                    "electionDate" : ISODate("2015-08-28T16:44:12Z"),
                    "configVersion" : 3,
                    "self" : true
            },
            {
                    "_id" : 1,
                    "name" : "192.0.2.222:27017",
                    "health" : 1,
                    "state" : 0,
                    "stateStr" : "STARTUP",
                    "uptime" : 584,
                    "optime" : Timestamp(0, 0),
                    "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
                    "lastHeartbeat" : ISODate("2015-08-28T17:01:40.601Z"),
                    "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
                    "pingMs" : 0,
                    "configVersion" : -2
            },
            {
                    "_id" : 2,
                    "name" : "192.0.2.223:27017",
                    "health" : 1,
                    "state" : 0,
                    "stateStr" : "STARTUP",
                    "uptime" : 676,
                    "lastHeartbeat" : ISODate("2015-08-28T17:01:40.643Z"),
                    "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
                    "pingMs" : 0,
                    "configVersion" : -2
            }
    ],
    "ok" : 1
    

    }

  2. 檢查 PRIMARY 成員的名稱(通常等於「_id」:0)

  3. 如果名稱具有網域形式,請嘗試將名稱重寫為IP位址。更改副本集中的主機名

    cfg = rs.conf()
    cfg.members[0].host = "192.0.2.221"
    rs.reconfig(cfg)
    

之後副本集恢復正常狀態。

PS host.example.com 已解析為所有主機上的 IP 位址。

答案2

它要求主主機將主機名稱解析為輔助主機的 IP,而輔助主機也將主主機的主機名稱解析為 IP。

就我而言,我忘記新增輔助主機的主機檔案來解析主主機的主機名稱。一旦我更新了輔助節點中的主機文件,輔助節點的狀態就會轉換為 STARTUP2,然後轉換為 SECONDARY。

答案3

當 mongo 主機之間存在連線問題時,就會出現此問題。

例如,如果主節點可以連接到輔助節點,但輔助節點無法連接到主節點。

在這種情況下,主節點將接受副本集配置,因為它可以連接到輔助節點,但輔助節點無法同步到主節點,因為從輔助節點到主節點沒有連接。

相關內容