2012-11-02 124 views
0

這個mongodb指南:http://www.mongodb.org/pages/viewpage.action?pageId=19562846表示如果您的數據映射到多個EBS卷,那麼您需要鎖定數據庫,然後對其進行快照。我在4個EBS捲上使用RAID 10,但我的數據庫只有一個實例(沒有副本集),現在我想保持這種狀態。由於我想每隔一小時對數據進行一次快照,因此我擔心每次都必須鎖定數據庫 - 我無法負擔每小時的停機時間,也不能每小時拒絕寫入請求。有沒有辦法繞過這個鎖?EBS MongoDB數據快照與RAID 10

回答

3

如果您未鎖定數據庫,則在拍攝快照時無法保證多個RAID卷間數據的一致性。這基本上是RAID配置的一個限制,而不是MongoDB - 鎖只是一種確保在拍攝快照時數據庫數據不會改變的方式,因此可以避免RAID限制(至少適用於MongoDB數據)。

如果你想避免鎖定數據庫引起的停機時間,那麼你將不得不有一個次要的快照(你可以隱藏它,以便它永遠不會接管或服務讀取)。正如您所描述的,使用單個節點無法執行此操作 - 它是停機時間(由於鎖定)以保持一致性,或者使用其他節點進行備份,否則您的快照基本上毫無價值。

注意:如果輔助服務器可以跟蹤單個EBS捲上的複製並且正在運行日誌記錄,那麼您可以根據需要快照,不需要鎖定數據庫。隱藏的輔助教材不需要與主教材完全相同,只需要足夠好就可以跟上。

+0

謝謝亞當!那麼,我可以在四個捲上安裝RAID 10,然後在一個卷內有一個輔助卷,其中所有卷都連接到同一個實例?然後,我可以簡單地備份次要數據庫而無需鎖定數據庫? – user730569

+0

我正在考慮簡單地遵循本指南:http://docs.mongodb.org/manual/tutorial/deploy-replica-set/#deploy-a-development-or-testing-replica-set for production(only because我們真的不需要多個數據庫實例在這一點上)。我怎樣才能讓中學隱藏? – user730569

+0

剛纔看到這個:http://docs.mongodb.org/manual/administration/replica-sets/#replica-set-hidden-members隱藏成員是否永遠不會直接處理讀/寫請求? – user730569