4

mongos一开始没有运行。尝试启动时,mongos我看到以下日志:

Fri Mar 22 17:43:13.383 [mongosMain] 错误:错误将配置数据库升级到 v4 :: 由 :: 需要更新版本 4 的 mongo 配置元数据,当前版本为 3,需要使用 --upgrade 运行 mongos

但是使用--upgrade参数,我看到以下日志:

Fri Mar 22 17:43:39.273 [mongosMain] 错误:将配置数据库升级到 v4 时出错 :: 由 :: balancer 引起的,必须停止配置升级

现在的问题是:我无法停止平衡器,sh.stopBalancer()因为我无法启动 mongos。现在对我来说是个僵局。请帮忙。

4

4 回答 4

5

我发现了问题所在。我应该连接到端口27019以获取configsrv. 这样我就不需要启动了mongos。相反,sh.stopBalancer()可以简单地在mongo解释器中执行。

于 2013-03-22T19:47:45.687 回答
2

我刚才也有同样的问题。我将我的 mongo 数据库从版本 2.0.4 更新到了 2.4.3。我无法连接到 mongos,因为需要升级配置服务器。但是,我无法使用命令 stopBalancer() 停止平衡器,因为我的 mongos 处于非活动状态。我没有从 stackoverflow 找到其他解决方案。我试过很多次。

我的解决方案是:1、ssh到配置服务器;

2、使用config数据库;

可能需要通过认证;

3、运行 db.settings.update( { _id: "balancer" }, { $set : {stopped: true } } , true ) 停止平衡器;

4、我可以用--upgrade选项运行“mongos”;

于 2014-12-02T17:22:41.433 回答
1

我有同样的问题。我的解决方案是使用 mongo shell连接到configsvr

mongo --host ip_of_config_server_host --port 27019

并从那里关闭平衡器

sh.setBalancerState(假)

在此之后,我可以进行配置服务器升级

mongos --port 27017 --configdb ip_of_config_server_host --upgrade

于 2014-05-09T09:40:40.747 回答
1

假设您遵循始终运行 3 个配置服务器的建议,我会尝试以下步骤:

  1. 确保所有其他 mongos 客户端都已停止。如果没有 mongos 正在运行,那么平衡器也不应该保持锁定。

  2. 如果您仍然收到错误(在确定没有 mongos 连接到配置服务器之后),我将停止所有配置服务器,但其中一个并清除管理数据库中的平衡器锁定。成功尝试使用此配置服务器后,我将重置其他两个。如果不成功,您还有另外两个副本。

于 2013-03-22T18:57:14.340 回答