溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MYSQL MONGODB REDIS 同步原理以及高可用性對(duì)比

發(fā)布時(shí)間:2020-08-06 13:39:21 來(lái)源:網(wǎng)絡(luò) 閱讀:1358 作者:古道卿 欄目:MongoDB數(shù)據(jù)庫(kù)

MySQL

1、異步復(fù)制:

2、半同步復(fù)制:同步出現(xiàn)超時(shí)后會(huì)自動(dòng)變回異步復(fù)制;


MongoDB

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)


Redis






MySQL和MongoDB對(duì)比

MySQL存在半同步復(fù)制,MongoDB也存在半同步復(fù)制。



向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI