REDIS主從複製

 

Redis主從複製原理

前言:

MySQL主從複製的原因一樣,Redis雖然讀取寫入的速度都特別快,但是也會產生讀壓力特別大的情況。爲了分擔讀壓力,Redis支持主從複製,Redis的主從結構可以採用一主多從或者級聯結構,Redis主從複製可以根據是否是全量分爲全量同步和增量同步。下圖爲級聯結構。

 

 

 

1 全量同步

  Redis全量複製一般發生在Slave初始化階段,這時Slave需要將Master上的所有數據都複製一份。具體步驟如下: 

  1)從服務器連接主服務器,發送SYNC命令; 

  2)主服務器接收到SYNC命名後,開始執行BGSAVE命令生成RDB文件並使用緩衝區記錄此後執行的所有寫命令; 

  3)主服務器BGSAVE執行完後,向所有從服務器發送快照文件,並在發送期間繼續記錄被執行的寫命令; 

  4)從服務器收到快照文件後丟棄所有舊數據,載入收到的快照; 

  5)主服務器快照發送完畢後開始向從服務器發送緩衝區中的寫命令; 

  6)從服務器完成對快照的載入,開始接收命令請求,並執行來自主服務器緩衝區的寫命令; 

 

 

 

完成上面幾個步驟後就完成了從服務器數據初始化的所有操作,從服務器此時可以接收來自用戶的讀請求。

2 增量同步

  Redis增量複製是指Slave初始化後開始正常工作時主服務器發生的寫操作同步到從服務器的過程。 

增量複製的過程主要是主服務器每執行一個寫命令就會向從服務器發送相同的寫命令,從服務器接收並執行收到的寫命令。

 

3 Redis主從同步策略

  主從剛剛連接的時候,進行全量同步;全同步結束後,進行增量同步。當然,如果有需要,slave 在任何時候都可以發起全量同步。redis 策略是,無論如何,首先會嘗試進行增量同步,如不成功,要求從機進行全量同步。

 

4 注意點

如果多個Slave斷線了,需要重啓的時候,因爲只要Slave啓動,就會發送sync請求和主機全量同步,當多個同時出現的時候,可能會導致Master IO劇增宕機。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章