You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB副本集Secondary节点状态确认:该节点是否正常?

MongoDB副本集节点状态异常分析

我有一个包含3个节点的MongoDB副本集,读写均使用Primary节点,这是一个遗留系统,使用率较低,使用的MongoDB版本为2.6.11。当我在其中一个Secondary节点上运行isMaster命令时,得到如下响应:

{
    "setName" : "PROD DB",
    "setVersion" : 5,
    "ismaster" : false,
    "secondary" : false,
    "hosts" : [ 
        "xxxxxxxxxx:27017", 
        "xxxxxxxxxy:27017", 
        "xxxxxxxxz:27017"
    ],
    "primary" : "xxxxxxxxxx:27017",
    "me" : "xxxxxxxxxy:27017",
    "maxBsonObjectSize" : 16777216,
    "maxMessageSizeBytes" : 48000000,
    "maxWriteBatchSize" : 1000,
    "localTime" : ISODate("2024-08-01T04:10:16.843Z"),
    "maxWireVersion" : 2,
    "minWireVersion" : 0,
    "ok" : 1.0
}

该节点的ismaster和secondary字段均为false,请问这个Secondary节点是否正常工作?

同时附上rs.status()的执行结果:

{
    "set" : "PROD DB",
    "date" : ISODate("2024-08-02T00:55:47.000Z"),
    "myState" : 3,
    "members" : [ 
        {
            "_id" : 0,
            "name" : "xxxy:27017",
            "health" : 1.0,
            "state" : 3,
            "stateStr" : "RECOVERING",
            "uptime" : 17607969,
            "optime" : Timestamp(1702118685, 6),
            "optimeDate" : ISODate("2023-12-09T10:44:45.000Z"),
            "infoMessage" : "still syncing, not yet to minValid optime 66aad5e1:60",
            "self" : true
        }, 
        {
            "_id" : 2,
            "name" : "xxxz:27017",
            "health" : 1.0,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 17607969,
            "optime" : Timestamp(1722560139, 1),
            "optimeDate" : ISODate("2024-08-02T00:55:39.000Z"),
            "lastHeartbeat" : ISODate("2024-08-02T00:55:46.000Z"),
            "lastHeartbeatRecv" : ISODate("2024-08-02T00:55:46.000Z"),
            "pingMs" : 0,
            "syncingTo" : "xxxx:27017"
        }, 
        {
            "_id" : 3,
            "name" : "xxxx:27017",
            "health" : 1.0,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 17607969,
            "optime" : Timestamp(1722560139, 1),
            "optimeDate" : ISODate("2024-08-02T00:55:39.000Z"),
            "lastHeartbeat" : ISODate("2024-08-02T00:55:46.000Z"),
            "lastHeartbeatRecv" : ISODate("2024-08-02T00:55:46.000Z"),
            "pingMs" : 0,
            "electionTime" : Timestamp(1702118698, 1),
            "electionDate" : ISODate("2023-12-09T10:44:58.000Z")
        }
    ],
    "ok" : 1.0
}

状态分析

  • 从rs.status()结果可见,该节点(_id:0,name:xxxy:27017)处于RECOVERING(state:3)状态,infoMessage明确显示它仍在同步数据,未达到最小有效操作时间点(minValid optime)。
  • 在MongoDB 2.6版本中,处于RECOVERING状态的节点不会被标记为secondary,因此isMaster返回secondary:false是该状态下的正常表现——只有节点完成数据同步、进入SECONDARY(state:2)状态后,isMaster才会返回secondary:true。
  • 该节点健康状态(health:1.0)正常,但数据进度远落后于Primary(optimeDate停留在2023年12月,而Primary和另一个Secondary的optimeDate为2024年8月),当前无法承担Secondary节点的角色。

结论

这个节点没有正常工作,它处于恢复同步阶段,尚未完成数据同步,无法提供Secondary节点的服务。建议等待其完成同步,或排查同步缓慢的原因(如网络延迟、数据量过大、Primary节点负载等)。


内容的提问来源于stack exchange,提问作者pavo kristiani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 09:39:53