如何找到副本集名称?

Old*_*zer 6 mongodb

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

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

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

我搜索并大多数建议明确指定Replica Set Name. 自动设置已Read Preference设置为主要且Replica Set Name为空白。

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

小智 11

要查找副本集名称:

打开mongo shell并输入命令:

rs.status()
Run Code Online (Sandbox Code Playgroud)

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

{
    "set" : "Name of your replica set",
    ...
}
Run Code Online (Sandbox Code Playgroud)


小智 5

其实你可以很容易地在 Mongo Shell 上输入以下内容

rs.status().set
Run Code Online (Sandbox Code Playgroud)

这将返回副本集名称


Wan*_*iar 3

为什么突然出现这个错误

触发错误消息的原因是存在副本集选择,将您正在连接的实例的状态从Primary更改为secondary

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

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

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

一般情况下,副本集名称是集群名称加-shard-0。即集群名称test,副本集名称是test-shard-0