百度任命羅戎為首席財務官,向李彥巨集彙報
阿新 • • 發佈:2021-11-01
Redis 主從複製
主從複製的概念
就是將一臺 redis 伺服器的資料,複製到其他的 redis 伺服器,前者為主節點(master/leader),後者稱為從節點(slave/follower),資料的複製是單向的,只能從主節點到從節點,一般 master 以寫為主,slave 以讀為主。
Redis 全量同步和增量同步
Redis 主從複製可以根據是否是全量分為全量同步和增量同步
-
全量同步
Redis全量複製一般發生在 Slave 初始化階段,這時 Slave 需要將 Master 上的所有資料都複製一份
具體步驟如下:
- 從伺服器連線主伺服器,傳送 SYNC 同步命令;
- 主伺服器接收到 SYNC 命名後,開始執行 BGSAVE 命令生成 RDB 檔案並使用緩衝區記錄此後執行的所有寫命令;
- 主伺服器 BGSAVE 執行完後,向所有從伺服器傳送 RDB 快照檔案,並在傳送期間繼續記錄被執行的寫命令;
- 從伺服器收到 RDB 快照檔案後丟棄所有舊資料,記憶體載入收到的 RDB 快照檔案;
- 主伺服器將 RDB 快照檔案傳送完畢後,開始向從伺服器傳送緩衝區中的寫命令;
- 從伺服器完成對 RDB 快照檔案的載入,開始接收命令請求,並執行來自主伺服器緩衝區的寫命令
完成上面幾個步驟後就完成了從伺服器資料初始化的所有操作,從伺服器此時可以接收來自使用者的讀請求。
-
增量同步
Redis 增量同步是指 Slave 初始化後開始正常工作時主伺服器發生的寫操作同步到從伺服器的過程。
增量複製的過程主要是主伺服器每執行一個寫命令就會向從伺服器傳送相同的寫命令,從伺服器接收並執行收到的寫命令。
Redis主從複製策略
Redis 主從伺服器剛剛連線的時候,會進行全量同步;全同步結束後,再進行增量同步。當然,如果有需要,slave 在任何時候都可以發起全量同步。
主從複製的作用
資料冗餘:主從複製實現了資料的熱備份,是持久化之外的一種資料冗餘方式
故障恢復:當主節點出現問題時,可以由從節點提供服務,實現快速的故障恢復,實際上是一種服務的冗餘
負載均衡:在主從複製的基礎上,配合讀寫分離,可以由主節點提供寫功能,由從節點提供讀功能,分擔伺服器負載,尤其是在寫少讀多的場景下,通過多個從節點分擔讀負載,可以大大提高 Redis 伺服器的併發量
高可用(HA)基石:主從複製還是哨兵和叢集能夠實施的基礎