我有一个 mongodb 副本集,想将其移动到单个服务器设置
rs.remove()
这和对其他两个节点执行操作一样简单吗?
答案1
在副本集的当前主节点上,您可以rs.remove()
对这些节点发出,从而停止对它们的复制尝试。
您可能必须关闭想要以单一模式运行的服务器,然后在没有该--replSet <name>
选项的情况下重新启动它(或它可能在配置文件中设置的任何内容),因为这将以单一模式启动服务器,并且不会尝试复制到任何其他节点。
答案2
您可以完全跳过删除,事实上您应该这样做。解释一下:如果您一次 rs.remove() 一个,那么在第一次删除之后,您将无法获得足够的投票来形成多数(不可能有 2 个节点形成多数)。
因此,正如 Mike 所建议的,只需重新启动主节点(不带 --replSet)(或等效的配置文件)并关闭其他节点。
答案3
根据我的经验,要完全关闭故障转移(并从池中删除当前主服务器),您需要执行以下操作:
- 从当前主节点开始,用于
rs.remove()
从组中删除所有辅助节点。 - 停止当前主节点上的 mongod。
- 按照说明操作这里- 即删除主实例上的所有本地。* 文件并从主实例的 mongo 配置文件中删除所有副本集配置。
- 在当前主节点上启动 mongod。
这将导致您的旧主服务器成为新的单一服务器(所有其他服务器都可以关闭/销毁)。
每当我尝试在没有任何副本集配置/--replSet 标志的情况下进行简单重启时,它都不起作用,大概是因为本地数据库仍然具有副本集的配置。