【问题标题】:mongodb replica set configuration problemmongodb副本集配置问题
【发布时间】:2023-03-13 18:59:01
【问题描述】:

我在尝试以下操作时遇到了一些问题:

有一个三节点的 MongoDB 4.0 集群,没有分片,一个 mongodb 实例作为主,其余的,辅助。当我关闭主节点时,其中一个从节点成为主节点,当我关闭新的主节点(以前的从节点)时,另一个仍然保持原样,剩下的从节点不会成为主节点,因此集群保持不运行状态

我一直按照文档指示执行步骤,所以应该有一些我忘记的配置。我什至改变了创建的顺序,我总是得到相同的结果

我做错了什么?

提前致谢。

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    MongoDB 无法自动故障转移到单个成员,这是由于 elections 的工作方式造成的。

    如果您从逻辑上考虑这一点,如果主服务器和辅助服务器之间存在网络分区,那么它们中的任何一个如何知道其中一个或另一个是否已关闭...所以它们都将成为辅助节点,直到其中一个或另一个可以看到大部分节点。

    https://docs.mongodb.com/manual/core/replica-set-elections/#network-partition

    网络分区可以将一个主分区划分为一个具有少数节点的分区。当主节点检测到它只能看到副本集中的少数节点时,主节点会降为主节点并成为辅助节点。独立地,分区中可以与大多数节点(包括其自身)通信的成员举行选举成为新的主节点。

    【讨论】:

    • 感谢您的回答,但我有两个问题: 1 然后,当我在副本集中有 2 个节点时,如果我关闭主节点,则辅助节点将成为主节点。 2 集群和辅助服务器会发生什么情况,它仍然无法运行?因为主节点是用户可以连接写入的唯一节点。
    • 你不能只写只读,只有在你的连接字符串中指定你允许从辅助读取docs.mongodb.com/manual/reference/connection-string/…
    • @AlejandroGarcia 这就是为什么建议至少运行一个 3 节点副本集的原因,这样当一个成员离线时,其他 2 个成员仍然可以形成多数并选举主节点。更多详情请见docs.mongodb.com/manual/core/replica-set-architectures/…
    【解决方案2】:

    选举过程需要“多数”来选举 PRIMARY ,例如当您从 3 减少 2 个节点时,将不会有大多数节点来选举新的 PRIMARY,因此第 3 个节点将保持在 SECONDARY 中,直到您至少启动其他成员之一。

    【讨论】:

    • 感谢您的回答,但我有两个问题: 1 然后,当我在副本集中只有 2 个节点时,如果我关闭主节点,则辅助节点将成为主节点。 2 集群和辅助服务器会发生什么情况,它仍然无法运行?因为主节点是用户可以连接写入的唯一节点。
    猜你喜欢
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 2020-12-30
    相关资源
    最近更新 更多