强制成员成为 mongodb 中的主要成员

iro*_*rom 6 mongodb failover

我查看了答案,但在下面的 mongo 2.6.11 集群“nms”(成员 nms01m 和 nms02)中没有任何效果。我希望我当前的辅助 nms01m 成为主要的,现在 nms02 是主要的而不是 nms02(在昨晚 nms01m 失败之后)。我尝试停止 nsm02,重新启动 nms01m ,更改优先级, rs.reconfig(cfg, {force : true}) 但没有任何帮助。对我来说总是一场斗争

nms:SECONDARY> rs.conf()
{
        "_id" : "nms",
        "version" : 193970,
        "members" : [
                {
                        "_id" : 0,
                        "host" : "nms02:27017",
                        "priority" : 2
                },
                {
                        "_id" : 1,
                        "host" : "nms01m:27017"
                }
        ]
}
Run Code Online (Sandbox Code Playgroud)

小智 2

MongoDB 副本集应至少有 3 个成员,以帮助您实现高可用性。

\n\n

MongoDB 副本集故障转移的规则(当新成员成为主节点时)是大多数“幸存”节点投票支持它成为新的主节点。

\n\n

那么让我们考虑一下:

\n\n
    \n
  1. 如果您有一个成员的副本集,并且该成员发生故障,则没有其他节点可以成为主节点。
  2. \n
  3. 如果您有一个包含 2 个成员的副本集,如果其中一个成员发生故障,则只有一个“幸存”成员。副本中的成员总数为 2,只有 1 个幸存者。多数意味着超过一半,但 1 个幸存者只是节点的一半。由于没有多数节点,唯一的幸存者节点将保留为辅助节点,因此在其他节点恢复之前为只读。
  4. \n
  5. 如果您有一个包含 3 个成员的副本集,如果其中一个成员发生故障,则有 2 个节点幸存。如果幸存者节点可以通过网络“交谈”,选举算法将确保其中一个成为“新”主节点。
  6. \n
\n\n

如果出于某种原因您对为 MongoDB 副本集投资第三台服务器不感兴趣,您可以考虑使用仲裁器。仲裁器可以是一台非常小的机器,并且需要最少的 CPU 和存储空间。但仲裁者在选举中投票,它被算作节点之一。

\n\n

查看 MongoDB 文档中的此链接:[ https://docs.mongodb.org/v3.0/core/replication-introduction/#automatic-failover][1]

\n\n
\n

当主节点在超过 10 秒内未与集合中的其他成员通信时,符合条件的辅助节点将举行选举,将自己选为新的主节点。第一个举行选举并获得大多数成员\xe2\x80\x99 选票的辅助节点将成为\n 主要节点。

\n
\n\n

如果 MongoDB 副本集有 2 个“常规”成员,再加上一个仲裁器,万一其中一个成员发生故障,副本和幸存节点将形成选举新主节点所需的 MAJORITY .\n[ https://docs.mongodb.org/v3.0/core/replica-set-arbiter/][1]

\n