无法升级分片mongoDB或停止平衡器

时间:2013-03-22 17:47:41

标签: mongodb database-administration

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

  

Fri Mar 22 17:43:13.383 [mongosMain]错误:错误升级配置   数据库到v4 ::由mongo config的::较新版本4引起   元数据是必需的,当前版本是3,需要运行mongos   --upgrade

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

  

Fri Mar 22 17:43:39.273 [mongosMain]错误:错误升级配置   数据库到v4 ::由:: balancer导致必须停止配置   升级

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

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

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

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

2,使用config database;

可能需要通过身份验证;

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

4,我可以跑" mongos" with --upgrade选项;

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:1)

我遇到了同样的问题。我的解决方案是使用mongo shell

连接到 configsvr

mongo --host ip_of_config_server_host --port 27019

并使用

从那里设置平衡器

sh.setBalancerState(false)

在此之后,我可以使用

进行配置服务器升级

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