Backup

這是 MongoDB 的有效備份策略嗎?

  • July 29, 2011

我有一個單獨的專用伺服器,帶有大約 10GB 的 MongoDB 數據庫。我需要每天進行備份,但我不能讓數據庫停機。是否可以在單個磁碟上使用副本集(在不同的埠上執行 2 個 mongod 實例),然後簡單地使輔助副本離線並將數據文件備份到 S3 等異地儲存(打開日誌)?還是使用主/從比副本集更好?

這是否可行,如果可行,我可能會遇到哪些潛在問題?如果不是,我如何將其概念化為工作?

ReplicaSet 將在這種情況下工作。但是,我無法判斷在同一台伺服器上擁有兩個 MongoDB 實例是否是一個好主意——這取決於伺服器硬體/軟體和負載。

要確保您的backupMongoDB 節點不會成為主節點,請將其priority參數設置為0,例如

rs.add({_id: 1, host: "localhost:<port>", priority: 0})

注意:如果你不能停機,你應該在 ReplicaSet 中至少有 2 個主要的 MongoDB 節點,請參閱文章

要考慮的一種策略是在副本集的備份節點上使用“隱藏”選項。來自 MongoDB 部落格:

隱藏的伺服器不會出現在 isMaster() 結果中。這也意味著如果驅動程序自動將讀取分配給從屬設備,它們將不會被使用。隱藏伺服器的優先級必須為 0(您不能擁有隱藏的主伺服器)。要添加隱藏成員,請執行:

> > rs.add({"_id" : num, “host” : 主機名, “priority” : 0, “hidden” : true}) > > >

引用自:https://serverfault.com/questions/284553