1. 程式人生 > >Redis學習(九)redis主從架構宕機問題解決

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)的功能。