web-dev-qa-db-ja.com

モンゴのセカンダリが起動状態で立ち往生

STARTUP状態を超えないセカンダリが設定されたMongoDBレプリカがあります。データベースは大きいですが、今ではSTARTUP2に移行しているはずです。プライマリからセカンダリに接続できるため、正しいポートが開いています。その逆も同様です。

3
Cris McLaughlin

次の手順で同様の問題を解決しました。

  1. PRIMARYメンバー:

    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)
    

その後、レプリカセットは通常の状態になりました。

P.S. Host.example.comは、すべてのホストでIPアドレスに解決されました。

2
Dimaf