1. 程式人生 > ><Redis> 入門六 主從復制方式的集群

<Redis> 入門六 主從復制方式的集群

情況 其他 兩個 3.3 img style 成對 一份 inf

1.集群如何操作

  現在有三臺虛擬機,ip分別為100,105,106,將100作為master,其他兩臺作為slave

  技術分享圖片技術分享圖片

  1.vim redis.conf

  以前的版本是 slaveof <masterip> <masterport>

  技術分享圖片

  我使用的是redis 5.0.3

  所以是 replicaof <masterip><masterport> 分別代表主節點ip和主節點端口

  技術分享圖片

  2.修改兩個從節點,配置為如下,設置 eplicaof <masterip><masterport>masterauth 密碼

  技術分享圖片

  3.完成配置

2.檢查是否配置成功

  重啟三臺服務器,然後在從節點下輸入指令: info replication

  可以看到role是slave,以及主機ip、端口,狀態等信息,即代表配置成功。  

  技術分享圖片

  master發送命令

  技術分享圖片

  在slave端獲取

  技術分享圖片

  無法在從節點上進行寫的操作

  技術分享圖片

3.主從復制的原理

3.1 全量同步

  1.slave 第一次連接 或 重連 到 master 上以後,會向 master 發送 sync 的命令

  2.master收到 sync 命令,執行 bgsave 生成 rbd 快照,新的命令會寫進緩沖區

  3.master執行完bgsave後,將 rbd 文件發送給各slave節點

  4.slave接收到 rbd 文件,丟棄舊的 rbd 數據,執行新的rbd快照

  5.master發送完rbd快照後,將緩沖區數據發送到slave

  6.slave完成對rbd的載入後,執行master緩沖區的寫命令

  技術分享圖片

3.2 增量同步

  slave服務器完成初始化,工作正常,主服務器發生寫操作同步到從服務器

  增量同步主要是:主服務器每執行一條寫命令就會向從服務器發送相同的寫命令,從服務器接收並執行收到的命令

3.3 部分同步

  當master服務器斷線後,從服務器需要重新發送sync命令,這樣會消耗大量服務器 cpu、內存、磁盤,並且傳送rdb還會消耗網絡資源等

  在redis2.8版本後,部分同步 psync 來執行同步的命令。

  master在內存中給每個slave維護了一份同步日誌和同步標識。每個slave和master同步都會攜帶自己的同步標識和上次同步的最後位置

  當master斷線重連後,slave帶著自己的同步標識,和上次同步的最後位置去找master,如果slave的偏移量在master同步日誌中

  那麽slave從偏移量開始的位置繼續同步,無需進行全量同步。

3.4 同步策略

  第一次連接,進行全量同步,全量同步結束後,進行增量同步。

  如果斷開,嘗試部分同步,不行的話,依然采用全量同步。

3.5 部分命令

  通過replconf listening-port 6379

   sync去向主服務器發送同步命令,此時進入通過輸出模式,並不斷發送ping包

   技術分享圖片

  master寫入數據

  技術分享圖片

  slave 就會輸出從緩沖區來的數據

  技術分享圖片

  replica-server-stale-data yes  意味著必須完成 master 同步之後才能做接下來的操作。可以防止數據不一致的情況

  技術分享圖片

  缺點:主從復制時,當 master 宕機後,從服務器沒辦法進行動態選舉,從只能讀取就的數據。

<Redis> 入門六 主從復制方式的集群