如何确保我始终连接到 MongoDB ReplicaSet 中的主/次节点?

Mal*_*lik 6 mongodb

我有一个运行在 3 个不同服务器上的 3 节点副本集。我已经完成了设置,一切都很好。现在我想给我的用户两个连接字符串:

  1. 连接到这个“xyz”进行写入

  2. 连接到此“abc”以获取只读流量

我还尝试为每个连接设置一个 CNAME,以便将来能够灵活地更改。

提前感谢并感谢您的时间。

Sql*_*ide 10

参考:https : //docs.mongodb.com/manual/reference/connection-string/

如果您使用副本集,则不要在连接字符串中使用 mongod 主机名。而是使用所有 mongos 主机名和副本集名称。

举个例子:

使用以下 mongod 主机描述与名为 test 的副本集的连接:

端口 27017 上的 db1.example.net 和端口 2500 上的 db2.example.net。您将使用类似于以下内容的连接字符串:

mongodb://db1.example.net,db2.example.net:2500/?replicaSet=test

写入将始终进入主要状态,您无需执行任何操作。Config 和 mongos 将在它们之间进行通信并将重定向到主。

您可以配置Write concernwhich 描述了 mongod 和驱动程序为应用程序提供的关于写入操作的成功和持久性的保证类型。有关写入关注和写入操作的完整说明,请参阅写入关注

阅读首选项

读取首选项描述了与副本集相关的读取操作的行为。这些参数允许您在连接字符串中基于每个连接指定读取首选项。默认值为primary,它将所有读取操作发送到副本集的primary。

读取首选项值如下:

  • 基本的
  • 首选
  • 次要的
  • 次要优先
  • 最近的

有关每个值的说明,请参阅读取首选项模式