database - 通过已移除的成员连接到副本集成员
问题描述
我有一个包含 3 个成员的简单副本集
rs.status()的输出
{
...,
"members" : [
{
"_id": 1,
"name": "localhost:27021",
"stateStr": "PRIMARY",
},
{
"_id": 2,
"name": "localhost:27022",
"stateStr": "SECONDARY",
},
{
"_id": 3,
"name": "localhost:27023",
"stateStr": "SECONDARY",
}
]
}
我删除了一名成员
rs.remove("localhost:27023")
现在rs.status()
{
...,
"members" : [
{
"_id": 1,
"name": "localhost:27021",
"stateStr": "PRIMARY",
},
{
"_id": 2,
"name": "localhost:27022",
"stateStr": "SECONDARY",
},
]
}
现在我使用了一个删除实例的 mongodb 连接 URL。成功连接到副本集成员!!
var url = 'mongodb://localhost:27023/myproject?replicaSet=rs0';
MongoClient.connect(url, function(err, db) {
console.log("Connected correctly to server");
db.close();
});
我可以看到连接是与副本集成员建立的(localhost:27022 和 localhost:27023)
2019-04-17T18:59:04.727+0900 I NETWORK [thread1] connection accepted from 127.0.0.1:53284 #6 (3 connections now open)
2019-04-17T18:59:04.727+0900 I NETWORK [conn6] received client metadata from 127.0.0.1:53284 conn6: { driver: { name: "nodejs", version: "3.2.3" }, os: { type: "Linux", name: "linux", architecture: "x64", version: "4.15.0-47-generic" }, platform: "Node.js v10.15.0, LE, mongodb-core: 3.2.3" }
2019-04-17T18:59:04.736+0900 I - [conn6] end connection 127.0.0.1:53284 (3 connections now open)
2019-04-17T18:59:35.334+0900 I ASIO [NetworkInterfaceASIO-RS-0] Ending idle connection to host localhost:27021 because the pool meets constraints; 1 connections to that host remain open
有人可以解释一下吗?通过已移除的成员连接到副本集成员。在任何文档中都找不到任何解释。
解决方案
这是驾驶员的行为。默认情况下,连接到副本集的客户端将尝试连接到主节点。在这种情况下,连接到mongodb://localhost:27023/myproject?replicaSet=rs0
将首先localhost:27023
使用命令连接并检查连接的节点是否为主/主节点{isMaster: 1}
。从结果中,它检测到localhost:27023
不是主/主,但它也有其他可用的节点信息。接下来的步骤是连接到其他节点,直到找到主节点。
你应该关闭localhost:27023
它,它甚至不会连接。
推荐阅读
- selenium-ide - 是否可以在 Selenium IDE 中执行多行 javascript 代码
- google-apps-script - 使用 ImportData 函数从复杂页面数据中导入特定数据
- java - java.lang.OutOfMemoryError:使用 itext PdfReader 读取大型 PDF 文件时超出 GC 开销限制
- impala - 如何在 impala shell 中禁用“计算统计”的输出?
- python - CRON 没有运行 python 脚本 - Debian/RPi
- javascript - 不支持 Jquery 点击方法参数逗号
- c# - 实体框架 - 实例化存储库包装器时不明确的 DBContext 构造函数 - 使用带参数的 DbContext
- html - 过渡不适用于 css - 动画没有淡入淡出
- c# - 如何隐藏 Datagrid WPF C# 的列
- angular - 从 v8 到 v10 的 Angular 项目更新使捆绑包变得非常大