首页 > 解决方案 > 连接到 MongoDB 中副本集的“主要”时出现问题

问题描述

我在命令行中创建了一个 MongoDB 副本集。它们在端口 47017、47018、47019 中运行。当我做一个

mongo --port 47017

它总是倾向于连接到副本集的“次要”成员

$ mongo --port 47017
connecting to: mongodb://127.0.0.1:47017/?compressors=disabled&gssapiServiceName=mongodb
MongoDB server version: 4.2.6
s1:SECONDARY>

为什么它总是连接到辅助服务器而不是主服务器?有没有应该启用的设置?

标签: mongodbmongodb-replica-set

解决方案


您正在连接到单个节点。您需要通过在参数中传递副本集名称来指定要连接到副本集。例如

mongo "mongodb://127.0.0.1:47017,127.0.0.1:47018,127.0.0.0.1:47019/?replicaSet=replA"

这里的副本集名称是replA。严格来说,您不需要指定整个种子列表。只要您可以连接到任何成员并指定副本集名称,副本集就会自动将您路由到主节点。我们指定一个完整的种子列表,因为这允许客户端尝试所有成员,以防其中一个不可用。

有关完整说明,请参阅连接到副本集的文档。


推荐阅读