我尝试在健康但很大的MongoDB数据库上从mongo shell执行db.repairDatabase()命令。它运行了大约10个小时仍然没有完成。无论好坏,我按Ctrl-C取消它。
似乎群集已处于某种锁定状态。像“show dbs”这样的命令都会因“超时操作”而失败:
mongos> show dbs
2016-06-10T09:38:10.179-0400 E QUERY [thread1] Error: listDatabases failed:{ "code" : 50, "ok" : 0, "errmsg" : "Operation timed out" } :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1
shellHelper.show@src/mongo/shell/utils.js:760:19
shellHelper@src/mongo/shell/utils.js:650:15
@(shellhelp2):1:1
在我杀死db.repairDatabase()之后,现在又持续了大约10个小时。
从中恢复的正确方法是什么?
我的群集信息:我到处运行MongoDB 3.2.5。我有3个配置服务器,11个分片,每个分片是由2个节点和仲裁器组成的副本集。我有大约40个节点运行mongos实例。 3个配置服务器仍然是3.0风格(尚未升级到副本集)。
答案 0 :(得分:1)
对于它的价值,我能够将群集恢复如下:
第1步到第4步没有解决任何问题。
但在我执行第5步之后,我又能够再次使用所有数据库。事情似乎现在恢复正常。