如何找到副本集名称?

时间:2018-06-28 16:41:28

标签: mongodb

我在mongodb.com上使用所有默认设置创建了一个M0实例。我从“ Atlas连接”对话框中复制了URI连接字符串。在mongoDB Compass中被识别,并自动填写了连接详细信息表单。

它工作了好几个星期,我可以浏览我的文档。然后突然我得到了:

  

加载导航时发生错误:'not master and slaveOk = false':建议在连接对话框中将读取首选项更改为Primary Preferred或Secondary Preferred,或为完整的拓扑连接提供副本集名称。 / p>

我进行了搜索,大多数人建议明确指定Replica Set Name。自动设置将Read Preference设置为“主要”,而Replica Set Name为空白。

为什么此错误突然发生,如何找到要使用的副本集名称?

5 个答案:

答案 0 :(得分:2)

实际上,您可以在Mongo Shell上轻松键入以下内容

rs.status().set

这将为您返回副本集名称

答案 1 :(得分:1)

  

为什么这个错误突然发生

由于存在一个Replica Set Election,将您要连接的实例的statePrimary更改为Secondary,因此触发了错误消息。

connecting using MongoDB Compass时,未指定副本集名称。该连接将是与实例的直接连接,而不是与副本集的连接(自动拓扑发现)。

  

如何找出要使用的副本集名称?

MongoDB Atlas项目页面上,选择左侧菜单上的Deployment链接。在Processes标签下的Topology视图下,您应该看到副本集名称(这应该是单击Deployment时显示的默认视图)。

通常,副本集名称是群集名称加-shard-0。即群集名称test,副本集名称为test-shard-0

答案 2 :(得分:1)

要找到副本集名称:

打开mongo shell并键入命令:

rs.status()

这将为您提供一个具有副本集名称的文档(在键set下):

{
    "set" : "Name of your replica set",
    ...
}

答案 3 :(得分:1)

在mongo shell中-我执行rs.status()并复制了设置名称。 在Compass客户端中,我从左侧选择了以前使用的/“最近”连接字符串,然后单击字符串框上方的“分别填写连接字段”链接。 单击“更多选项”选项卡,然后将集名称粘贴到“副本集名称”字段中(以前是空的) 这为我修复了它,并且可以连接。

答案 4 :(得分:0)

在本地连接到主 mongod 服务器时,您会注意到提示具有副本集名称。示例:

ssh -i "keyfile.pem" MongoDPrimary:27017 (连接到 MongoD 服务器) mongo(连接到 MongoD 数据库)

s0:PRIMARY>(Mongo Shell 提示)

在上面的提示中: “s0”指的是副本集名称 “Primary”是指主副本。

rs.status() 虽然很好,但需要您对可以进行身份​​验证的 DB 进行身份验证