redis replication -> 主從架構 -> 讀寫分離 -> 水準擴容支撐讀高并發
Redis replication的核心機制
- Redis采用異步方式複制資料到slave節點,不過redis 2.8開始,slave node會周期性确認自己每次複制的資料量
- 一個master node可以配置多個slave node
- slave node也可以連接配接其他的slave node
- slave node做複制時,不會block master node的正常工作
- slave node在複制時,也不會block對自己的查詢操作,它會用舊的資料集來提供服務;但是複制完成時,需删除舊資料集,加載新資料集,此時就會暫停對外服務!
- slave node主要用來進行橫向擴容,做讀寫分離,擴容的slave node可以提高讀的吞吐量
master持久化對于主從架構的安全保障的意義
開啟master node的持久化
若采用了主從架構,那麼建議你務必開啟master node的持久化!
不建議用slave node作為master node的資料熱備,因為如果你關掉master的持久化,可能在master當機重新開機時資料是空的,然後可能一經過複制,salve node資料也丢了
master => RDB和AOF都關閉了 => 全部在記憶體中
master當機重新開機,是沒有本地資料可恢複的,然後就會直接認為自己的資料為空,master就會将空的資料集同步至slave,所有slave的資料全部清空,資料完全丢失!是以master節點,必須要使用持久化機制
master的各種備份方案
萬一本地的所有檔案丢失了,從備份中挑選一份rdb去恢複master,這樣才能確定master啟動時,是有資料的.
即使采用了後續的高可用機制,slave node可以自動接管master node,但也可能sentinal還沒有檢測到master failure,master node就自動重新開機了,還是可能導緻上面的所有slave node資料清空故障