我在 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)
这将返回副本集名称
为什么突然出现这个错误
触发错误消息的原因是存在副本集选择,将您正在连接的实例的状态从Primary更改为secondary。
使用 MongoDB Compass 连接时,未指定副本集名称。连接将是与实例的直接连接,而不是与副本集的连接(自动拓扑发现)。
如何找到要使用的副本集名称?
在MongoDB Atlas项目页面上,选择Deployment左侧菜单上的链接。在选项卡下的视图Processes中,Topology您应该会看到副本集名称(这应该是单击 时显示的默认视图Deployment)。
一般情况下,副本集名称是集群名称加-shard-0。即集群名称test,副本集名称是test-shard-0。
| 归档时间: |
|
| 查看次数: |
13577 次 |
| 最近记录: |