Redis學習(九)redis主從架構宕機問題解決
1 主機宕機
1、 設定埠6379是主機,埠6380是從機,全部都正常啟動
2、 驗證在6379寫入資料,在6380也能得到資料
3、 現在將6379主機停掉,模擬主機宕機
4、 由於主機宕機了,現在就要將6380從機設定為主機,使用slaveof no one命令,此時原來的從機變為
主機也用了寫的許可權
5、 要是原來6379經過修復後,能夠正常工作,先將6380主機資料進行儲存持久化,將rdb檔案,覆蓋原主機6379的rdb檔案,進行資料的統一。
6、 啟動原來的主機6379
7、 將6380再次設定為從機
8、 先驗證主機和從機資料是否一致
主機:
從機:
9、 在主機設定值,看能否同步到從機。
主機設定資料
從機得到資料
10、 測試從機是否還有寫許可權
作為從機之後,不再具有寫許可權了。
1.2 從機宕機
這個相對而言比較簡單,在Redis中從庫重新啟動後會自動加入到主從架構中,自動完成同步資料;
1.3 總結
如果在主從複製架構中出現宕機的情況,需要分情況看:
1、 從Redis宕機
a) 這個相對而言比較簡單,在Redis中從庫重新啟動後會自動加入到主從架構中,自動完成同步資料;
b) 問題? 如果從庫在斷開期間,主庫的變化不大,從庫再次啟動後,主庫依然會將所有的資料做RDB操作嗎?還是增量更新?(從庫有做持久化的前提下)
i. 不會的,因為在Redis2.8版本後就實現了,主從斷線後恢復的情況下實現增量複製。
2、 主Redis宕機
a) 這個相對而言就會複雜一些,需要以下2步才能完成
i. 第一步,在從資料庫中執行SLAVEOFNO ONE命令,斷開主從關係並且提升為主庫繼續服務;
ii. 第二步,將主庫重新啟動後,執行SLAVEOF命令,將其設定為其他庫的從庫,這時資料就能更新回來;
b) 這個手動完成恢復的過程其實是比較麻煩的並且容易出錯,有沒有好辦法解決呢?當前有的,Redis提供的哨兵(sentinel)的功能。