Redis哨兵主備切換的數(shù)據(jù)丟失問題及解決
導(dǎo)致數(shù)據(jù)丟失的兩種情況
主備切換的過程,可能會導(dǎo)致數(shù)據(jù)丟失:
異步復(fù)制導(dǎo)致的數(shù)據(jù)丟失
因為 master->slave 的復(fù)制是異步的,所以可能有部分數(shù)據(jù)還沒復(fù)制到 slave ,master 就宕機了,此時這部分數(shù)據(jù)就丟失了。
腦裂導(dǎo)致的數(shù)據(jù)丟失
腦裂,也就是說,某個 master 所在機器突然 脫離了正常的網(wǎng)絡(luò) ,跟其他 slave 機器不能連 接,但是實際上 master 還運行著。
此時哨兵可能就會 認為 master 宕機了,然后開啟選舉,將 其他 slave 切換成了 master 。
這個時候,集群里就會有兩個 master ,也就是所謂的 腦裂 。
此時雖然某個 slave 被切換成了 master ,但是可能 client 還沒來得及切換到新的 master ,還繼 續(xù)向舊 master 寫數(shù)據(jù)。
因此舊 master 再次恢復(fù)的時候,會被作為一個 slave 掛到新的 master 上去,自己的數(shù)據(jù)會清空,重新從新的 master 復(fù)制數(shù)據(jù)。
而新的 master 并沒有后來 client 寫 入的數(shù)據(jù),因此,這部分數(shù)據(jù)也就丟失了。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于 Redis 的 JWT令牌失效處理方案(實現(xiàn)步驟)
當用戶登錄狀態(tài)到登出狀態(tài)時,對應(yīng)的JWT的令牌需要設(shè)置為失效狀態(tài),這時可以使用基于Redis 的黑名單方案來實現(xiàn)JWT令牌失效,本文給大家分享基于 Redis 的 JWT令牌失效處理方案,感興趣的朋友一起看看吧2024-03-03如何操作Redis和zookeeper實現(xiàn)分布式鎖
這篇文章主要介紹了如何操作Redis和zookeeper實現(xiàn)分布式鎖的相關(guān)資料,需要的朋友可以參考下2017-07-07關(guān)于Redis最常見的十道面試題總結(jié)大全
Redis作為一個高性能的內(nèi)存數(shù)據(jù)存儲系統(tǒng),具有快速讀寫、持久性、數(shù)據(jù)結(jié)構(gòu)多樣性等特點,廣泛應(yīng)用于各種應(yīng)用場景,這篇文章主要給大家介紹了關(guān)于Redis最常見的十道面試題總結(jié)的相關(guān)資料,需要的朋友可以參考下2024-07-07