Mongo 보조가 시작 상태에서 멈춤

Mongo 보조가 시작 상태에서 멈춤

STARTUP 상태를 통과하지 못하는 보조 데이터베이스가 포함된 MongoDB 복제본 세트가 있습니다. 데이터베이스는 크지만 지금쯤이면 STARTUP2로 이동되었을 것입니다. 기본 포트에서 보조 포트에 연결할 수 있고 그 반대로도 연결할 수 있으므로 올바른 포트가 열려 있습니다.

답변1

다음 단계에서는 비슷한 문제를 해결했습니다.

  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)
    

그 후 복제본 세트가 정상 상태가 되었습니다.

PS host.example.com은 모든 호스트의 IP 주소로 확인되었습니다.

답변2

이를 위해서는 기본이 호스트 이름을 보조의 IP로 확인하고 보조도 기본의 호스트 이름을 IP로 확인해야 합니다.

제 경우에는 기본 호스트 이름을 확인하기 위해 보조 호스트 파일을 추가하는 것을 잊었습니다. 보조 데이터베이스의 호스트 파일을 업데이트하면 보조 데이터베이스의 상태가 STARTUP2로 전환된 다음 SECONDARY로 전환되었습니다.

답변3

이 문제는 Mongo 호스트 간에 연결 문제가 있을 때 발생합니다.

예를 들어 기본이 보조에 연결할 수 있지만 보조가 기본에 연결할 수 없는 경우입니다.

이 경우 기본은 보조에 연결할 수 있으므로 복제본 세트 구성을 허용하지만 보조에서 기본으로의 연결이 없기 때문에 보조는 기본과 동기화할 수 없습니다.

관련 정보