Redis哨兵主備切換的數(shù)據(jù)丟失問題及解決
導(dǎo)致數(shù)據(jù)丟失的兩種情況
主備切換的過程,可能會(huì)導(dǎo)致數(shù)據(jù)丟失:
異步復(fù)制導(dǎo)致的數(shù)據(jù)丟失
因?yàn)?master->slave 的復(fù)制是異步的,所以可能有部分?jǐn)?shù)據(jù)還沒復(fù)制到 slave ,master 就宕機(jī)了,此時(shí)這部分?jǐn)?shù)據(jù)就丟失了。

腦裂導(dǎo)致的數(shù)據(jù)丟失
腦裂,也就是說,某個(gè) master 所在機(jī)器突然 脫離了正常的網(wǎng)絡(luò) ,跟其他 slave 機(jī)器不能連 接,但是實(shí)際上 master 還運(yùn)行著。
此時(shí)哨兵可能就會(huì) 認(rèn)為 master 宕機(jī)了,然后開啟選舉,將 其他 slave 切換成了 master 。
這個(gè)時(shí)候,集群里就會(huì)有兩個(gè) master ,也就是所謂的 腦裂 。
此時(shí)雖然某個(gè) slave 被切換成了 master ,但是可能 client 還沒來得及切換到新的 master ,還繼 續(xù)向舊 master 寫數(shù)據(jù)。
因此舊 master 再次恢復(fù)的時(shí)候,會(huì)被作為一個(gè) slave 掛到新的 master 上去,自己的數(shù)據(jù)會(huì)清空,重新從新的 master 復(fù)制數(shù)據(jù)。
而新的 master 并沒有后來 client 寫 入的數(shù)據(jù),因此,這部分?jǐn)?shù)據(jù)也就丟失了。

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
jwt+redis實(shí)現(xiàn)登錄認(rèn)證的示例代碼
在登錄業(yè)務(wù)代碼中,當(dāng)用戶登錄成功時(shí),生成一個(gè)登錄憑證存儲(chǔ)到redis中,本文主要介紹了jwt+redis實(shí)現(xiàn)登錄認(rèn)證的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
基于 Redis 的 JWT令牌失效處理方案(實(shí)現(xiàn)步驟)
當(dāng)用戶登錄狀態(tài)到登出狀態(tài)時(shí),對(duì)應(yīng)的JWT的令牌需要設(shè)置為失效狀態(tài),這時(shí)可以使用基于Redis 的黑名單方案來實(shí)現(xiàn)JWT令牌失效,本文給大家分享基于 Redis 的 JWT令牌失效處理方案,感興趣的朋友一起看看吧2024-03-03
redis數(shù)據(jù)一致性之延時(shí)雙刪策略詳解
在使用redis時(shí),需要保持redis和數(shù)據(jù)庫(kù)數(shù)據(jù)的一致性,最流行的解決方案之一就是延時(shí)雙刪策略,今天我們就來詳細(xì)刨析一下,需要的朋友可以參考下2023-09-09
如何操作Redis和zookeeper實(shí)現(xiàn)分布式鎖
這篇文章主要介紹了如何操作Redis和zookeeper實(shí)現(xiàn)分布式鎖的相關(guān)資料,需要的朋友可以參考下2017-07-07
關(guān)于Redis最常見的十道面試題總結(jié)大全
Redis作為一個(gè)高性能的內(nèi)存數(shù)據(jù)存儲(chǔ)系統(tǒng),具有快速讀寫、持久性、數(shù)據(jù)結(jié)構(gòu)多樣性等特點(diǎn),廣泛應(yīng)用于各種應(yīng)用場(chǎng)景,這篇文章主要給大家介紹了關(guān)于Redis最常見的十道面試題總結(jié)的相關(guān)資料,需要的朋友可以參考下2024-07-07

