2010-12-02 85 views
3

我目前有一個mongoDB安裝程序,每個mongos服務器,一個配置服務器和2個3 mongod(主 - 從)服務器碎片。我想確保當我關閉它們時,它們會被關閉乾淨,從而不會丟失排隊的數據或服務器正在確定要寫入的碎片等。清理關閉分片MongoDB羣集

什麼是當前最佳實踐關閉一組MongoDB服務器?

哪個順序是最好的東西在,問題FSYNC被關閉,寫鎖等。

我想編寫一個腳本來自動完成這個,便於備份,新的代碼推,和其他任何否則需要數據庫處於一致狀態。

+0

我不確定你的確切需求,但我相信最好的做法是*不*關閉任何碎片。如果是爲了備份的目的,最好取下從機並備份,這不是一種選擇嗎? – 2010-12-02 07:51:39

回答

3

這些最佳實踐仍然真正被清除。

用你的設置,我將如何做服務器維護。

備份

查找非主要在每個副本集。執行fsync & lock。複製,tar,備份。解鎖數據庫。

您應該可以在副本集上成功完成此操作。如果你真的擔心,你可以做fsync &鎖定然後關機。

壓縮

你可能需要在某些時候對數據進行壓縮。最簡單的方法是再次執行fsync &鎖定,然後執行db.repairDatabase()。修復命令基本上會爲你做「碎片整理/壓縮」。如上所述,這也可以在關機時關閉。

碼推

理想的情況下,很少有需要與問候代碼推一致。最糟糕的是,您需要管理索引創建/刪除。但是,這確實需要分開管理,因爲您不希望開發人員隨便在生產數據庫中添加索引。

監測

這是一種更復雜的問題,但你可能會想觀賞的東西,如「誰是主人」,「什麼每個節點上的寫入吞吐量」,「多少RAM上午我使用「,」節點之間有多少數據正在移動「。目前有這樣做的工具很有限,所以期望能夠推出自己的產品。