MongoDB複製整合員的重新同步
複製整合員的重新同步
當複製失敗,且落後於 primary 中oplog最大可承受的範圍的時候,replica set 成員將變為 “陳舊” (stale)。該節點無法追上主節點就變的 “陳舊”了。當發生這種情況時,我們就不得不刪除其資料檔案,並通過 initial sync 來重新同步。
本教程包含了為陳舊的節點重新同步與新節點重新同步。當同步一個節點的時候,請確保機器有足夠的空餘頻寬,並盡量在維護時間內進行,或是業務最不繁忙時。
MongoDB提供2中初始化同步(initial sync)的方式:
a.清空資料目錄,重啟 mongod 執行個體,讓MongoDB進行正常的初始化同步。這是個簡單的方式,但是耗時較長。
b.為該機器從其他節點上複製一份最近的資料檔案,並重啟。本方式操作步驟較多,但是最為快速。
步驟
自動同步
警告
在初始化同步的過程中,mongod 將會清空 dbPath 中的內容。
該步驟依靠MongoDB 自身的定期進程 initial sync 。這將恢複節點上最新的資料。有關MongoDB初始化恢複,請參考 複製過程 。
如果該執行個體沒有資料,我們可以通過 為複製集新增節點 或是 更換複製集節點 來為複製集新增一個節點。
我們也可以通過指定一個空的 dbPath 並重啟來將一個複製集中的 mongod 執行個體強制初始化同步。
a.關閉 mongod 進程。通過在 mongo 視窗中使用 db.shutdownServer() 命令或者在Linux系統中使用 mongod --shutdown 參數來安全關閉。
b.清空複製集節點的資料目錄和其子目錄,清除 dbPath 中的資料,MongoDB將會進行重新複製。可以考慮在這麼做之前先做備份以防萬一。
這時, mongod 將會進行初始化複製。初始化複製的耗時,將取決於資料庫資料量和兩節點之間的網路情況。
初始化複製將會影響其他節點,也會加大主節點的網路流量壓力,且只會在有一個節點資料是最新的且串連無問題的時候進行。
通過從其他節點複製資料檔案來同步
本方法通過使用已有節點上的資料檔案來進行。資料檔案 必須 是較新的(能夠追上 oplog ).不然的話該節點還是需要進行初始化複製。
複製資料檔案
我們可以直接複製資料檔案也可以通過鏡像。然而,大多數情況下,我們不應該複製未關閉的 mongod 執行個體的資料檔案,因為複製過程中資料檔案是會變動的。
重要
在複製資料檔案的時候,我們也必須複製 local 資料庫的資料檔案。
我們*不應該*使用 mongodump 的備份作為資料檔案,僅使用檔案快照 。關於如何在運行中的 mongod 執行個體中獲得一致性的資料檔案,參考 MongoDB備份方案 。
同步節點
在我們複製了其他節點的資料檔案後,啟動 mongod 執行個體,其會追趕最新的資料直到資料一致。
MongoDB 3.0 正式版發布下載
CentOS編譯安裝MongoDB
CentOS 編譯安裝 MongoDB與mongoDB的php擴充
CentOS 6 使用 yum 安裝MongoDB及伺服器端配置
Ubuntu 13.04下安裝MongoDB2.4.3
MongoDB入門必讀(概念與實戰並重)
Ubunu 14.04下MongoDB的安裝指南
《MongoDB 權威指南》(MongoDB: The Definitive Guide)英文文字版[PDF]
Nagios監控MongoDB分區叢集服務實戰
基於CentOS 6.5作業系統搭建MongoDB服務
MongoDB 的詳細介紹:請點這裡
MongoDB 的:請點這裡
本文永久更新連結地址: