【问题标题】:Mongo Replica EndpointMongo 副本端点
【发布时间】:2021-04-09 03:06:58
【问题描述】:

我对 mongo 副本有一些疑问 mongo replica

如果我将 1 个主 MongoDB 和 2 个辅助 MongoDB 用于复制。所以我有 3 个端点到 3 个不同的数据库,我的应用程序只能在主数据库上写入。如果突然我的主要关闭和辅助数据库接管主要数据库怎么办。那么如何在我的应用程序中自动更改端点?我应该使用 mongos(mongo 路线)吗?但如果我没记错的话,它需要分片。

谢谢。

【问题讨论】:

    标签: mongodb replication


    【解决方案1】:

    副本集中的所有节点一起工作以获得相同的数据。辅助节点可能落后于主节点,但您不会得到“3 个不同的数据库”。每个节点上只有一个数据库,其副本存在。

    所有 MongoDB 驱动程序都知道监控副本集成员并自动发现哪个是主要成员。您需要通过提供副本集名称来配置一些驱动程序来执行此操作,而其他驱动程序默认情况下会在连接到副本集节点时自动执行。在您的驱动程序文档中查找“连接到副本集”。

    【讨论】:

      【解决方案2】:

      在适当的连接字符串中,您将提供所有三个 RS 成员,例如

      mongodb://mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?replicaSet=myRepl
      

      客户端将检测到 PRIMARY 并使用它。我猜,如果 PRIMARY 节点发生变化,大多数驱动程序都会自动重新连接。

      如果您提供 ReplicaSet 名称,大多数驱动程序将自动检测 PRIMARY,即

      mongodb://mongodb0.example.com:27017/?replicaSet=myRepl
      

      将连接到 PRIMARY,即使它不是 mongodb0.example.com。但是,如果 mongodb0.example.com 没有运行,那么你根本就没有连接。因此,在连接字符串中提供所有 ReplicaSet 成员是有益的。

      Connection String URI Format

      mongos 只需要连接到Sharded Cluster

      【讨论】:

        猜你喜欢
        • 2016-08-15
        • 1970-01-01
        • 2017-02-01
        • 2016-06-05
        • 1970-01-01
        • 2021-03-13
        • 2021-06-12
        • 1970-01-01
        • 2019-11-29
        相关资源
        最近更新 更多