您好,登錄后才能下訂單哦!
MongoDB初始化數(shù)據(jù)同步:
副本集中的成員啟動(dòng)之后,就會(huì)檢查自身的狀態(tài),確定是否可以從某個(gè)成員那里進(jìn)行同步。如果不行的話,嘗試從其他成員那里進(jìn)行完整的數(shù)據(jù)復(fù)制。
這個(gè)過程就是初始化同步(initial syncing),這幾個(gè)步驟可以從mongod日志查看。
1、首先,這個(gè)成員會(huì)做一些記錄前的準(zhǔn)備工作:選擇一個(gè)成員作為同步源,在local.me中為自己創(chuàng)建一個(gè)標(biāo)識(shí)符,刪除所有已存在的數(shù)據(jù)庫,以一個(gè)全新的狀態(tài)進(jìn)行復(fù)制。
在這個(gè)過程中,所有現(xiàn)有的數(shù)據(jù)都會(huì)被刪除。應(yīng)該只在不需要保留現(xiàn)有數(shù)據(jù)的情況下做初始化同步,因?yàn)閙ongod會(huì)首先將現(xiàn)有數(shù)據(jù)刪除。
2、然后是克隆(cloning),就是將同步源的所有記錄全部復(fù)制到本地。通常是最耗時(shí)的。
3、然后就進(jìn)入oplogt同步的第一步,克隆過程中所有的操作都會(huì)記錄到oplog中。如果有文檔在克隆過程中被移動(dòng)了,就可能會(huì)被遺漏,導(dǎo)致沒有被克隆,對(duì)于這樣的文檔可能
需要重新克隆
4、接下來是oplog同步過程的第二步,用于將第一個(gè)oplogt同步中的操作記錄下來
5、到目前為止,本地的數(shù)據(jù)應(yīng)該與主節(jié)點(diǎn)的某個(gè)時(shí)間點(diǎn)的數(shù)據(jù)完全一致,可以創(chuàng)建索引,如果集合比較大,創(chuàng)建索引也會(huì)比較耗時(shí)
6、如果當(dāng)前節(jié)點(diǎn)的數(shù)據(jù)仍遠(yuǎn)遠(yuǎn)落后于同步源,那么oplog同步過程的最后一步就是將創(chuàng)建索引期間的所有操作全部記錄下來,防止該成員成為備份節(jié)點(diǎn)
7、現(xiàn)在,當(dāng)前成員初始化完成,切換到普通同步狀態(tài),這時(shí)當(dāng)前成員就可以成為備份節(jié)點(diǎn)
replset initial sync done
replset syncing
replset secondary
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。