Mongodb复制集服务器状态:FATAL状态实际上意味着什么?

时间:2011-11-22 03:14:06

标签: mongodb

我有一个带有三台服务器的mongo db复制集。第3个节点显示它处于FATAL状态:

{
        "_id" : 3,
        "name" : "slave2-1:27017",
        "health" : 1,
        "state" : 4,
        "stateStr" : "FATAL",
        "uptime" : 276,
        "optime" : {
            "t" : 1321929689000,
            "i" : 1
        },
        "optimeDate" : ISODate("2011-11-22T02:41:29Z"),
        "lastHeartbeat" : ISODate("2011-11-22T02:46:05Z"),
        "pingMs" : 0
}

当我登录有问题的服务器时,mongo shell提示符显示它处于致命状态。 FATAL状态实际上意味着什么,我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

致命状态意味着该成员处于无法恢复的某种状态。您需要进行干预才能恢复在线状态。你应该关闭它并诊断问题(如果你不知道为什么它处于致命状态,它的日志中应该有关于它的信息)。

致命状态的常见原因是配置无效,从集合中移除节点(2.0之前),失败的回滚或任何其他未处理的异常情况。

答案 1 :(得分:0)

我实际上必须在这里说些什么。致命的状态并不意味着该成员处于某种无法从中恢复的状态。这可能意味着当前选定的主要状态与当前的致命状态节点处于完全不同的状态。无论如何,如果你使当前的致命成为主要代码,修复哪些代码。我可以通过使用当前选定的主节点复制致命状态节点dbpath,然后所有成员再次开始同步来实现。致命状态并不意味着您有任何损坏或损坏的数据!