Redis哨兵主備切換的數據丟失問題及解決
更新時間:2024年12月10日 09:40:03 作者:流光的咸魚
主備切換過程中可能會導致數據丟失,異步復制和腦裂是兩種主要原因,異步復制可能導致部分數據未復制到slave而master宕機,腦裂則可能導致多個master存在,舊master恢復后數據被清空,從而丟失數據
導致數據丟失的兩種情況
主備切換的過程,可能會導致數據丟失:
異步復制導致的數據丟失
因為 master->slave 的復制是異步的,所以可能有部分數據還沒復制到 slave ,master 就宕機了,此時這部分數據就丟失了。

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

總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
redis實現(xiàn)的四種常見限流策略
因為在網站運行期間可能會因為突然的訪問量導致業(yè)務異常、也有可能遭受別人惡意攻,所以我們對網站要進行限流,本文主要介紹了redis四種常見限流策略,感興趣的可以了解一下
2021-06-06
jwt+redis實現(xiàn)登錄認證的示例代碼
在登錄業(yè)務代碼中,當用戶登錄成功時,生成一個登錄憑證存儲到redis中,本文主要介紹了jwt+redis實現(xiàn)登錄認證的示例代碼,具有一定的參考價值,感興趣的可以了解一下
2024-03-03
Redis分布式可重入鎖實現(xiàn)方案
在單進程環(huán)境下,要保證一個代碼塊的同步執(zhí)行,直接用synchronized 關鍵字或ReetrantLock 即可,在分布式環(huán)境下,要保證多個節(jié)點的線程對代碼塊的同步訪問,就必須要用到分布式鎖方案,本文介紹一下基于 Redis實現(xiàn)的分布式鎖方案,感興趣的朋友一起看看吧
2024-02-02
利用yum安裝Redis的方法詳解
Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫,并提供多種語言的API。從2010年3月15日起,Redis的開發(fā)工作由VMware主持。這篇文章主要介紹的是利用yum安裝Redis的方法,有需要的朋友們可以參考借鑒,下面來一起看看吧
2016-11-11
基于 Redis 的 JWT令牌失效處理方案(實現(xiàn)步驟)
當用戶登錄狀態(tài)到登出狀態(tài)時,對應的JWT的令牌需要設置為失效狀態(tài),這時可以使用基于Redis 的黑名單方案來實現(xiàn)JWT令牌失效,本文給大家分享基于 Redis 的 JWT令牌失效處理方案,感興趣的朋友一起看看吧
2024-03-03
redis數據一致性之延時雙刪策略詳解
在使用redis時,需要保持redis和數據庫數據的一致性,最流行的解決方案之一就是延時雙刪策略,今天我們就來詳細刨析一下,需要的朋友可以參考下
2023-09-09
Redis分布式鎖解決秒殺超賣問題
本文主要介紹了Redis分布式鎖解決秒殺超賣問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
2022-07-07
關于Redis最常見的十道面試題總結大全
Redis作為一個高性能的內存數據存儲系統(tǒng),具有快速讀寫、持久性、數據結構多樣性等特點,廣泛應用于各種應用場景,這篇文章主要給大家介紹了關于Redis最常見的十道面試題總結的相關資料,需要的朋友可以參考下
2024-07-07