2016-06-10 39 views
1

我嘗試在健康但大型的MongoDB數據庫上從mongo shell執行db.repairDatabase()命令。它運行了大約10個小時,但仍然沒有完成。無論好壞,我都會按Ctrl-C來取消它。MongoDB在中止db.repairDatabase()後鎖定?如何解鎖?

看起來羣集已經處於某種鎖定狀態。喜歡「秀星展」所有失敗,出現「操作超時」命令:

mongos> show dbs 
2016-06-10T09:38:10.179-0400 E QUERY [thread1] Error: listDatabases failed:{ "code" : 50, "ok" : 0, "errmsg" : "Operation timed out" } : 
[email protected]/mongo/shell/utils.js:25:13 
[email protected]/mongo/shell/mongo.js:62:1 
[email protected]/mongo/shell/utils.js:760:19 
[email protected]/mongo/shell/utils.js:650:15 
@(shellhelp2):1:1 

它一直是這樣了約10個多小時,現在我殺了db.repairDatabase後()。

什麼是從這恢復正確的方法?

我的集羣信息:我在任何地方運行MongoDB 3.2.5。我有3個配置服務器,11個分片,每個分片是由2個節點和一個仲裁器組成的副本集。我有大約40個運行mongos實例的節點。 3個配置服務器仍然是3.0樣式(尚未升級到複製集)。

回答

1

那麼對於它的價值我是能夠使羣集回如下:

  1. 重新啓動的所有mongos服務。
  2. 重新啓動所有mongod仲裁者。
  3. 爲所有3個配置服務器重新啓動mongod。
  4. 從我的11個分片的每個副本集中重新啓動1個節點的mongod。
  5. 從我的11個分片的每個副本集中爲其他1個節點重新啓動mongod。

步驟1至4沒有解決任何問題。

但是,當我運行第5步後,我能夠再次使用所有的數據庫。事情現在似乎恢復正常。