redis(四):redis主從複製

主從複製:主節點負責寫數據,從節點負責讀數據,主節點定期把數據同步到從節點保證數據的一致性

一、爲什麼要有主從複製

上小節介紹了redis的持久化,保證了即使redis服務重啓也不會丟失數據,因爲redis服務重啓後會將硬盤上持久化的數據恢復到內存中。但是當redis服務器的硬盤損壞了,這種情況可能會導致數據丟失,因此就有了redis的主從複製機制,該機制能夠避免這種單點故障,如下圖:
在這裏插入圖片描述

說明:
1、主redis中的數據有兩個副本(replication),即從redis1和從redis2,即使一臺redis服務器宕機,其它兩臺redis服務也可以繼續提供服務。
2、主redis中的數據和從redis上的數據保持實時同步,當主redis寫入數據時通過主從複製機制會複製到兩個從redis服務上。
3、只能有一個主redis,可以有多個從redis。
4、主從複製不會阻塞master,在同步數據時,master 可以繼續處理client 請求。
5、一個redis可以即是主又是從,如下圖:
在這裏插入圖片描述

二、主從的具體配置

前提:一主,二從
只需配置兩個從服務器的redis即可,主redis無需配置。

  • 修改從服務器上的redis.conf文件
# slaveof <masterip> <masterport>
slaveof 192.168.1.182 6379   

此配置說明目前從redis對應的主redis的IP是192.168.1.182,端口是6379。

三、實現原理

Redis的主從同步,分爲全量同步增量同步

  • 只有從機第一次連接上主機是全量同步。
  • 斷線重連有可能觸發全量同步也有可能是增量同步(master判斷runid是否一致)。
  • 除此之外的情況都是增量同步
    在這裏插入圖片描述
1、全量同步

Redis的全量同步過程主要分三個階段:

  • 同步快照階段:Master創建併發送快照給Slave,Slave載入並解析快照。Master同時將此階段所產生的新的寫命令存儲到緩衝區。
  • 同步寫緩衝階段:Master向Slave同步存儲在緩衝區的寫操作命令。
  • 同步增量階段:Master向Slave同步寫操作命令。
    在這裏插入圖片描述
2、增量同步

Redis增量同步主要指Slave完成初始化後開始正常工作時,Master發生的寫操作同步到Slave的過程。
通常情況下,Master每執行一個寫命令就會向Slave發送相同的寫命令,然後Slave接收並執行。

四、主從複製缺點

1)主從複製,若主節點出現問題,則不能提供服務,需要人工修改配置將從變主
2)主從複製主節點的寫能力單機,能力有限
3)單機節點的存儲能力也有限

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