首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB:已删除的副本仍然存在于rs.conf() & rs.status()中

MongoDB:已删除的副本仍然存在于rs.conf() & rs.status()中
EN

Stack Overflow用户
提问于 2022-01-26 08:42:08
回答 1查看 238关注 0票数 1

:-)

我正在使用MongoDB (我对它还不熟悉),并希望测试何时删除主服务器的副本集特性,即其中一个次要文件将成为主服务器。

我在3个不同的LXD容器上有3个副本:

代码语言:javascript
复制
mongodb-0      10.126.63.54       <---- primary
mongodb-1      10.126.63.190
mongodb-2      10.126.63.20

然后,我想模拟主服务器的意外关闭,因此我删除了承载mongodb-0的LXD容器。

完成此操作后,我将ssh转换为mongodb-1并运行mongosh,并确保它已被选中为主服务器。类似地,当我进入mongodb-2并运行mongosh时,我发现它仍然是次要的。

投票选出一部新的主要作品!\o/

但当我跑的时候

  1. rs.conf()我看到了关机主机的这个条目:
代码语言:javascript
复制
    {
      _id: 2,
      host: '10.126.63.54:27017',
      arbiterOnly: false,
      buildIndexes: true,
      hidden: false,
      priority: 1,
      tags: {},
      secondaryDelaySecs: Long("0"),
    }
  1. rs.status()我看到了关机主机的这个条目:
代码语言:javascript
复制
    {
      _id: 2,
      name: '10.126.63.54:27017',
      ...
      lastHeartbeatMessage: 'Error connecting to 10.126.63.54:27017 :: caused by :: No route to host',
      ...
    }
  1. 这是意料之中吗?
  2. 在几小时前删除此节点后,仍将列出此节点。他们会永远列出被移除的主机吗?来自rs.status()的消息是有用的,但是我希望rs.conf()拥有当前可用的主机。(对我来说,这可能是个糟糕的期望。)
  3. 的一个大问题是:生产环境中的是否应该更新一些内容,以便rs.conf()rs.status()能够反映所有可用的主机?或者这些信息可能有帮助/重要。我的直觉告诉我,这可能会有帮助。但同时也告诉我,不能依赖于rs.conf()来向我展示所有当前运行的主机:/
EN

回答 1

Stack Overflow用户

发布于 2022-01-26 08:58:29

  1. 是的,这是意料之中的。
  2. 如果您需要从配置中删除该成员,则需要将其从带有replicaSet的rs.remove()活动主服务器中删除。
  3. 是的,此信息将复制到所有成员,并且需要删除,以便所有成员都知道。与使用rs.add()添加新成员时一样

这是因为您不希望在网络中断或服务器关闭后立即从配置中删除成员,如果成员重新启动,他将再次自动加入到replicaSet,并与其他成员同步。

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

https://stackoverflow.com/questions/70860622

复制
相关文章

相似问题

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