復(fù)制集成員的重新同步
成都創(chuàng)新互聯(lián)公司是一家專注于成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)與策劃設(shè)計,會寧網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:會寧等地區(qū)。會寧做網(wǎng)站價格咨詢:18982081108
當(dāng)復(fù)制失敗,且落后于 primary 中oplog最大可承受的范圍的時候,replica set 成員將變?yōu)?“陳舊” (stale)。該節(jié)點無法追上主節(jié)點就變的 “陳舊”了。當(dāng)發(fā)生這種情況時,我們就不得不刪除其數(shù)據(jù)文件,并通過 initial sync 來重新同步。
本教程包含了為陳舊的節(jié)點重新同步與新節(jié)點重新同步。當(dāng)同步一個節(jié)點的時候,請確保機(jī)器有足夠的空余帶寬,并盡量在維護(hù)時間內(nèi)進(jìn)行,或是業(yè)務(wù)最不繁忙時。
MongoDB提供2中初始化同步(initial sync)的方式:
a.清空數(shù)據(jù)目錄,重啟 mongod 實例,讓MongoDB進(jìn)行正常的初始化同步。這是個簡單的方式,但是耗時較長。
b.為該機(jī)器從其他節(jié)點上復(fù)制一份最近的數(shù)據(jù)文件,并重啟。本方式操作步驟較多,但是最為快速。
步驟
自動同步
警告
在初始化同步的過程中,mongod 將會清空 dbPath 中的內(nèi)容。
該步驟依靠MongoDB 自身的定期進(jìn)程 initial sync 。這將恢復(fù)節(jié)點上最新的數(shù)據(jù)。有關(guān)MongoDB初始化恢復(fù),請參考 復(fù)制過程 。
如果該實例沒有數(shù)據(jù),我們可以通過 為復(fù)制集新增節(jié)點 或是 更換復(fù)制集節(jié)點 來為復(fù)制集新增一個節(jié)點。
我們也可以通過指定一個空的 dbPath 并重啟來將一個復(fù)制集中的 mongod 實例強(qiáng)制初始化同步。
a.關(guān)閉 mongod 進(jìn)程。通過在 mongo 窗口中使用 db.shutdownServer() 命令或者在Linux系統(tǒng)中使用 mongod --shutdown 參數(shù)來安全關(guān)閉。
b.清空復(fù)制集節(jié)點的數(shù)據(jù)目錄和其子目錄,清除 dbPath 中的數(shù)據(jù),MongoDB將會進(jìn)行重新復(fù)制??梢钥紤]在這么做之前先做備份以防萬一。
這時, mongod 將會進(jìn)行初始化復(fù)制。初始化復(fù)制的耗時,將取決于數(shù)據(jù)庫數(shù)據(jù)量和兩節(jié)點之間的網(wǎng)絡(luò)情況。
初始化復(fù)制將會影響其他節(jié)點,也會加大主節(jié)點的網(wǎng)絡(luò)流量壓力,且只會在有一個節(jié)點數(shù)據(jù)是最新的且連接無問題的時候進(jìn)行。
通過從其他節(jié)點復(fù)制數(shù)據(jù)文件來同步
本方法通過使用已有節(jié)點上的數(shù)據(jù)文件來進(jìn)行。數(shù)據(jù)文件 必須 是較新的(能夠追上 oplog ).不然的話該節(jié)點還是需要進(jìn)行初始化復(fù)制。
復(fù)制數(shù)據(jù)文件
我們可以直接復(fù)制數(shù)據(jù)文件也可以通過鏡像。然而,大多數(shù)情況下,我們不應(yīng)該復(fù)制未關(guān)閉的 mongod 實例的數(shù)據(jù)文件,因為復(fù)制過程中數(shù)據(jù)文件是會變動的。
重要
在復(fù)制數(shù)據(jù)文件的時候,我們也必須復(fù)制 local 數(shù)據(jù)庫的數(shù)據(jù)文件。
我們*不應(yīng)該*使用 mongodump 的備份作為數(shù)據(jù)文件,僅使用文件快照 。關(guān)于如何在運行中的 mongod 實例中獲得一致性的數(shù)據(jù)文件,參考 MongoDB備份方案 。
同步節(jié)點
在我們復(fù)制了其他節(jié)點的數(shù)據(jù)文件后,啟動 mongod 實例,其會追趕最新的數(shù)據(jù)直到數(shù)據(jù)一致。