2012-02-27 69 views
3

我們在開發服務器上設置了5個節點複製。我們正在尋找一種方法,允許開發人員在mongo數據庫中備份一部分數據,並將其恢復到本地開發環境。MongoDB部分備份

我們研究過克隆的b和mongodump工具,但都只允許完整數據庫的備份/轉儲。由於數據庫的可能大小,我們需要一個允許我們限制正在備份或恢復的數據的選項。

是否知道某個實用程序或實現此目的的方法?

+1

你幾乎肯定會寫自己的工具。如果不知道數據是如何相關的,那麼很難獲取一部分數據。如果你確信你可以簡單地生活在最新的數據塊中,你可以編寫一個腳本遍歷所有集合,並檢索/存儲最後X個記錄。 – 2012-02-27 10:02:01

回答

1

我只是在這個問題再次絆倒,並決定加入我們的備份策略的描述中,我們選擇爲:

當前備份策略爲我們蒙戈DB這臺服務器由2個設置;通過延遲被動次節點備份和使用mongodump進行每日備份(需要日誌記錄和oplog進場)。

除了我們正常的生產節點之外,我們還設置了另一個優先級爲0的輔助節點(可以在自己的服務器上,也可以在另一臺mongo服務器上使用單獨的端口),隱藏爲真,延遲7200秒(2小時)。這個奴隸在那裏是爲了「黃油手指」,當有人不小心丟棄了一個數據庫或清除了一個集合時,我們有2個小時纔將這些變化複製到這個被動的次要的。被動輔助不能用於閱讀或書寫。它的作用僅僅是備份節點。我們還使用此節點進行夜間備份,以防止任何其他節點出現不必要的開銷。

夜間備份設置爲每天晚上23:00通過cron選項卡運行。該命令只需執行/opt/auto-mongo-backup中的腳本設置。該腳本可在https://github.com/jaconel/automongobackup找到(最初發現它在https://github.com/micahwedemeyer/automongobackup)。該腳本允許每晚一次的cron覆蓋每週備份和每月備份。備份保存在/var/backups/mongodb

希望這有助於一個人。

+0

我對原始問題感興趣,但你的答案根本不是關於它的。你是否最終編寫了自己的工具來提取部分數據? – maxdec 2014-03-26 10:29:51

+0

您可以使用mongoexport僅導出特定的集合,甚至可以使用查詢限制該集合的結果。要恢復該數據,只需使用mongoimport將其導回到集合中即可。請記住使用upsert確保不要插入重複項。 – j4kes 2014-03-27 11:55:15