您好,登錄后才能下訂單哦!
1、異步復(fù)制:
2、半同步復(fù)制:同步出現(xiàn)超時(shí)后會(huì)自動(dòng)變回異步復(fù)制;
MongoDB的副本集是一組mongod進(jìn)程的集合,提供冗余和高可用性。最小的的副本集包含(1個(gè)primary、1個(gè)secondary和1個(gè)arbiter),大多數(shù)的部署包含3個(gè)節(jié)點(diǎn)(1個(gè)primary、2個(gè)secondary)。副本集最多可以支持12個(gè)節(jié)點(diǎn),超過(guò)則需要使用主從架構(gòu)。
primary:接收所有客戶端的寫操作。每個(gè)副本集只能存在一個(gè)primary,為了支持?jǐn)?shù)據(jù)復(fù)制,primary的所有改變數(shù)據(jù)的操作都會(huì)記錄在oplog中。
secondary:通過(guò)復(fù)制primary的oplog并且重放oplog保持和primary的數(shù)據(jù)一致性(異步的有延時(shí))。當(dāng)主不可用的時(shí)候,副本集會(huì)從secondary中選出一個(gè)作為primary。默認(rèn)所有的read操作也會(huì)指向primary,但是可以通過(guò)配置將read操作指向secondary(因?yàn)閺?fù)制數(shù)據(jù)有延遲所以無(wú)法保證保證數(shù)據(jù)strict consistency)。可以通過(guò)配置priority來(lái)空值變成primary的優(yōu)先級(jí),priority=0表示不能成為primary,另外還可以配置隱藏的副本成員。
arbiter:arbiter不存儲(chǔ)數(shù)據(jù),僅僅用來(lái)來(lái)選舉primary。當(dāng)集群節(jié)點(diǎn)偶數(shù)的時(shí)候,通過(guò)添加一個(gè)artiber來(lái)獲取一個(gè)投票最多的secondary作為primary。arbiter不需要特殊的硬件。
Replica Set Elcetions:選舉的過(guò)程中,副本集因?yàn)闆]有primary所以不接手寫操作,并且所有成員都是只讀的。如果副本集的大多數(shù)成員不可用,副本集將選不出primary。
Heartbeats:副本集成員每2秒鐘給其他的成員發(fā)一個(gè)heartbeats(pings),如果一個(gè)心跳10秒鐘沒有收到響應(yīng),心跳的發(fā)送方將會(huì)把心跳的接收方標(biāo)為不可到達(dá)的。
副本集特性:異步、自動(dòng)故障切換;
可以設(shè)置一種類似于MySQL半同步的功能,可以指定多少臺(tái)臺(tái)節(jié)點(diǎn)完成寫操作同步后才返回,有超時(shí)時(shí)間。
一個(gè)典型的副本集結(jié)構(gòu)
MySQL和MongoDB對(duì)比
MySQL存在半同步復(fù)制,MongoDB也存在半同步復(fù)制。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。