redis mysql原理_MYSQL MONGODB REDIS 同步原理以及高可用性对比
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),超過則需要使用主從架構(gòu)。
primary:接收所有客戶端的寫操作。每個(gè)副本集只能存在一個(gè)primary,為了支持?jǐn)?shù)據(jù)復(fù)制,primary的所有改變數(shù)據(jù)的操作都會(huì)記錄在oplog中。
secondary:通過復(fù)制primary的oplog并且重放oplog保持和primary的數(shù)據(jù)一致性(異步的有延時(shí))。當(dāng)主不可用的時(shí)候,副本集會(huì)從secondary中選出一個(gè)作為primary。默認(rèn)所有的read操作也會(huì)指向primary,但是可以通過配置將read操作指向secondary(因?yàn)閺?fù)制數(shù)據(jù)有延遲所以無法保證保證數(shù)據(jù)strict consistency)。可以通過配置priority來空值變成primary的優(yōu)先級(jí),priority=0表示不能成為primary,另外還可以配置隱藏的副本成員。
arbiter:arbiter不存儲(chǔ)數(shù)據(jù),僅僅用來來選舉primary。當(dāng)集群節(jié)點(diǎn)偶數(shù)的時(shí)候,通過添加一個(gè)artiber來獲取一個(gè)投票最多的secondary作為primary。arbiter不需要特殊的硬件。
Replica Set Elcetions:選舉的過程中,副本集因?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ù)制。
總結(jié)
以上是生活随笔為你收集整理的redis mysql原理_MYSQL MONGODB REDIS 同步原理以及高可用性对比的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 启示录2:打造优秀的产品团队
- 下一篇: mysql redo原子写_InnoDB