首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过删除的成员连接到副本集成员

问通过删除的成员连接到副本集成员
EN

Stack Overflow用户
提问于 2019-04-17 13:17:06
回答 1查看 1.9K关注 0票数 3

我有一个简单的副本集,有3个成员

rs.status()的输出

代码语言:javascript
复制
{
    ...,
    "members" : [
        {
            "_id": 1,
            "name": "localhost:27021",
            "stateStr": "PRIMARY",
        },
        {
            "_id": 2,
            "name": "localhost:27022",
            "stateStr": "SECONDARY",
        },
        {
            "_id": 3,
            "name": "localhost:27023",
            "stateStr": "SECONDARY",
        }
    ]
}

我移走了一个成员

代码语言:javascript
复制
rs.remove("localhost:27023")

现在rs.status()

代码语言:javascript
复制
{
    ...,
    "members" : [
        {
            "_id": 1,
            "name": "localhost:27021",
            "stateStr": "PRIMARY",
        },
        {
            "_id": 2,
            "name": "localhost:27022",
            "stateStr": "SECONDARY",
        },
    ]
}

现在,我使用了带有已删除实例的mongodb连接URL。它成功地连接到复制集成员!!

代码语言:javascript
复制
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)建立的。

代码语言:javascript
复制
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

有人能解释一下吗?通过删除的成员连接到副本集成员。在任何文档中找不到任何解释。

EN

回答 1

Stack Overflow用户

发布于 2019-04-27 08:32:16

这是司机的行为。默认情况下,客户端连接到副本集将尝试连接到主节点。在这种情况下,连接到mongodb://localhost:27023/myproject?replicaSet=rs0将首先连接到localhost:27023,并使用命令{isMaster: 1}检查所连接的节点是否是主/主节点。从结果中,它检测到localhost:27023不是主/主节点,但它也有其他可用的节点信息。接下来的步骤是连接到其他节点,直到找到主节点为止。

你应该关闭localhost:27023,它甚至连不上。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55728443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档