【问题标题】:When a new primary is elected that is not listed in the app's hosts list, does MongoDB still allow writes?When a new primary is elected that is not listed in the app's hosts list, does MongoDB still allow writes?
【发布时间】:2015-07-28 16:00:53
【问题描述】:

在使用 MongoDB 驱动程序(用于 Node.js)的应用程序中,我列出了 3 个数据库:db-01db-02db-03

我向副本集添加了一个新数据库:db-04

意外地,db-04 数据库被选为新的主数据库。

应用程序是否仍然可以写入,或者我应该在应用程序的 MongoDB 驱动程序配置的主机列表中列出 db-04

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    我假设“数据库”是指“成员”或“节点”。每个副本成员不能拥有一个不是副本集的数据库。我会假设你的意思是成员。

    如果列表中有可用的成员,那么是的,MongoDB 驱动程序将使用副本集的任何成员来了解整个集合。因此,即使您没有在代码中显式连接到主节点,它仍然会通过在您连接到的节点上调用 isMaster 来寻找集合中的主节点。然后它将在应用程序中使用它。

    【讨论】:

    • 为了更清楚一点(@Sammaye 原谅我!):如果 MongoDriver 第一次连接到副本集成员,它会被告知副本集的当前状态,包括它的(可见)成员。在连接描述中应该有多个副本集成员的原因很简单,如果驱动程序无法建立与所述描述中的第一个成员的第一个连接(例如因为它已关闭),它将尝试连接到下一个,因此即使一个成员无法访问,驱动程序也可以连接。
    • @MarkusWMahlberg 确切地说,我把它省略了,因为我不想让答案陷入困境,但你的补充很有价值
    猜你喜欢
    • 1970-01-01
    • 2018-01-20
    • 2021-05-14
    • 2022-12-02
    • 2022-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    相关资源
    最近更新 更多