2013-07-03 73 views
2

我在非常簡單的設置中使用MongoDB,並且需要一致的備份策略。我發現將mongodump包裝在一個鎖定/解鎖中是一個不好的主意。然後我讀到--oplog選項應該能夠在不鎖定/解鎖的情況下提供一致性。但是,當我嘗試時,它表示我只能在「完全轉儲」上使用--oplog選項。我圍繞文檔和大量文章進行了探討,但似乎還不清楚如何從單個時間點轉儲mongo數據庫。如何爲單個節點設置獲得一致的MongoDB備份

現在我只是用普通轉儲進行操作,但我假設如果在轉儲期間有寫入操作,它會使備份不是從單個時間點開始,對嗎?

mongodump -h $MONGO_HOST:$MONGO_PORT -d $MONGO_DATABASE -o ./${EXPORT_FILE} -u backup -p password --authenticationDatabase admin

回答

2

在生產環境中,MongoDB是典型地部署爲副本集(一個或多個),以確保冗餘和高可用性。如果您正在運行獨立的mongod實例,有幾個選項可用於時間點備份。

你剛纔提到的一個選擇是用-oplog選項做一個mongodump。但是,只有在運行副本集時,此選項纔可用。您可以輕鬆地將獨立的mongod實例轉換爲單個節點副本集,而無需添加任何新的副本集成員。詳情請查看以下文件。

http://docs.mongodb.org/manual/tutorial/convert-standalone-to-replica-set/

這樣一來,如果有,而mongodump運行寫,他們將是你的備份的一部分。請參閱以下鏈接,瞭解使用Oplogs的時間點操作部分。

http://docs.mongodb.org/manual/tutorial/backup-databases-with-binary-database-dumps/#point-in-time-operation-using-oplogs

注意,使用mongodump和mongorestore備份和恢復MongodDB可能會很慢。

文件系統快照是另一種選擇。來自以下鏈接的信息詳細說明了執行MongoDB熱備份的兩個快照選項。

http://docs.mongodb.org/manual/tutorial/backup-databases-with-filesystem-snapshots/

您還可以查看到MongoDB的備份服務。

http://www.10gen.com/products/mongodb-backup-service

此外,mongodump與OPLOG選項不符合單一的db /集合在這一刻工作。有計劃實施該功能。您可以關注該故障單並在「更多操作」按鈕下爲該功能投票。

https://jira.mongodb.org/browse/SERVER-4273