2013-12-19 25 views
0

我正在使用MongoDB。我有一張有7M記錄和加權文本搜索索引的表格。MongoRestore創建索引階段使用100%資源並鎖定數據庫

當我做一個MongoRestore時,恢復的創建索引階段使用我數據庫資源的100%。 MongoDB對任何事情都沒有反應,直到完成。我的數據庫被鎖定到任何傳入連接。事實上,它停止報告任何進展的索引創建到我的輸出,並且我的mongodb客戶端開始獲取請求超時錯誤。我仍然可以拖拽到服務器端的mongodb日誌來檢查索引創建的進度。

我需要數據庫在這個過程正在發生時作出響應。它適用於我所有的其他表格,這些表格稍小一些。下一個最大的表格,效果很好,仍然使用加權文本搜索索引,大約是3M的記錄。

我該怎麼做?謝謝。

+0

是否有必要將大集合還原到實時運行的數據庫中?也有可能沒有足夠的資源來處理你想要做的事情。您可以隨時在沒有構建索引的情況下進行mongorestore,然後單獨在後臺啓動索引構建(使用後臺選項)。 –

回答

0

我還沒有試過這個,但似乎用{ background: true }創建的索引被mongodump這個屬性傾倒。在索引創建階段,該屬性將被傳遞給mongorestore

也許你可以用後臺選項重新創建一些戰略索引,然後轉儲數據庫。然後,恢復過程應該減少服務器的壓力,並且完成得更快。在MondoDB重建後臺索引時應該允許讀寫操作。

請注意,背景索引構建需要更長的時間才能完成,並且會產生更大的索引。此外,由於背景索引創建操作將被放在它們上面,所以這不適用於輔助副本集成員。

http://docs.mongodb.org/manual/tutorial/build-indexes-in-the-background/ http://docs.mongodb.org/manual/tutorial/build-indexes-on-replica-sets/

HTH。