【问题标题】:mongodb lose primary host of replica setmongodb丢失副本集的主要主机
【发布时间】:2012-10-23 02:49:15
【问题描述】:

我有一个相当复杂的问题,我认为可以归结为以下几点。今天早上,我有一个由主机 A、B 和 C 组成的副本集,其中 A 是主要的。然后我完全失去了 A 并且 B 可能会下降一段时间(我不知道)。它是一个 ec2 实例,因此当它返回时它具有不同的主机名(尽管它具有完全相同的 ebs 卷,因此具有相同的文件结构)。

所以此时,就主机名 A 而言,我有 B、C 和 D。D 的内容与 A 相同,但外部世界将它们视为两个不同的主机(他们是)。为 B 和 C 登录 mongo 显示它们是次要的(优先级 0),它仍然列出旧主机 A,没有注明优先级:

SECONDARY> rs.conf() //this is from C
{
"_id" : "rs_0",
"version" : 1,
"members" : [
    {
        "_id" : 0,
        "host" : "A:27018"  //this is the dead guy ....
    },
    {
        "_id" : 1,
        "host" : "C:27019",
        "priority" : 0
    },
    {
        "_id" : 2,
        "host" : "B:27020",
        "priority" : 0
    }
]
}

我从 B 或 C 发出的任何命令都会返回一条消息,告诉我我不是主机,因此我无法更改此副本集的 conf 记录中的任何主机。

最坏的情况是我可以使用 mongoexport 并将所有内容转储到 json 中,这是 (a) 很痛苦, (b) 非常难看, (c) 当我在生产时并不实用。

所以基本上,归结为这一点。当我有一个副本集并且我失去对主节点的控制/访问权限并想要添加另一个主机来接管该功能时该怎么办?

谢谢!

【问题讨论】:

    标签: mongodb replication


    【解决方案1】:

    当您必须在没有主服务器的情况下重新配置时,您可以将命令发送到辅助服务器,但您必须包含一个额外的选项:{force:true}。这表示您知道您没有与主节点通话,但您仍想强制重新配置。

    在继续之前,我想指出,每个辅助节点上的优先级 0 破坏了在主节点发生故障时为自动故障转移设置副本集这一点。优先级 0 表示节点永远不能成为主节点。由于唯一的非 0 节点发生故障,因此您的副本集没有主节点。

    我建议至少有一个优先级分数高于 0(1 是默认值)的次要分数。我还建议为您的主机使用外部/可解析的 DNS 名称,而不是 AWS 名称,这样如果您再次发现自己处于这种情况,您可以将用于指向现在已死主机的名称重新分配给取代它的新主机。在这种情况下,您根本不需要重新配置副本集。

    推荐阅读:http://docs.mongodb.org/manual/tutorial/reconfigure-replica-set-with-unavailable-members/

    【讨论】:

    • 感谢您的 cmets。那么我应该为我的副本集使用什么priority 策略?我的集合中有三个主机,它们是 1,0,0。我应该做三个非零唯一整数吗?比如3、2、1?我试过{force:true} 选项;这是因为我剩下的两个主机有priority:0而失败了吗?
    • 第二个问题,您如何推荐使用外部/可解析的 DNS 名称? /等/主机?我应该在所有服务器上的 /etc/hosts 中将 mongoserver0 设置为 AWS 名称吗?如果发生这种情况,只需将该条目调整为新的 AWS 名称?再次感谢您的回复
    • 我建议首先将优先级设置为非 0(重要的是您的“首选”主机比其他两个主机的值更高)。所以值可以是 2,1,1 或 1, .5, .5。对于 DNS 名称,/etc/hosts 既好又快。 mongodb.org wiki 有一个关于 AWS 和虚拟化环境和主机名的最佳实践的页面。
    • 谢谢,我猜你提到的文件是mongodb.org/display/DOCS/Amazon+EC2
    猜你喜欢
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    相关资源
    最近更新 更多