天天看點

redis主從複制一. 配置二 原理三 搭建

一. 配置

1.建立複制

配置複制的方式三種:

  1. 在配置檔案中加入slaveof{masterHost}{masterPort}随Redis啟動生效。
  2. 在redis-server啟動指令後加入--slaveof{masterHost}{masterPort}生效
  3. 直接使用指令: slaveof{masterHost}{masterPort}生效。

2.斷開複制

在從節點執行slaveof no one來斷開與主節點複制關系;

斷開複制主要流程:

1) 斷開與主節點複制關系。

2) 從節點晉升為主節點。

從節點斷開複制後并不會抛棄原有資料, 隻是無法再擷取主節點上的資料變化。

3.切主操作

通過執行slaveof{newMasterIp} {newMasterPort}指令還可以實作切主操作, 切主是指把目前從節點對主節點的複制切換到另一個主節點。

切主操作流程如下:

1) 斷開與舊主節點複制關系。

2) 與新主節點建立複制關系。

3) 删除從節點目前所有資料。

4) 對新主節點進行複制操作

切主後從節點會清空之前所有的資料;

4. 安全性

主節點會通過設定requirepass參數進行密碼驗證, 這時所有的用戶端通路必須使用auth指令實行校驗。

這時從節點與需要配置masterauth參數與主節點密碼保持一緻, 這樣從節點才可以正确地連接配接到主節點并發起複制流程。

5 . 隻讀

由于複制隻能從主節點到從節點, 對于從節點的任何修改主節點都無法感覺, 修改從節點會造成主從資料不一緻。 是以建議線上不要修改從節點的隻讀模式;

 從節點可以使用slave-read-only=yes配置為隻讀模式。

6. 傳輸延遲

主從節點一般部署在不同機器上, 複制時的網絡延遲就成為需要考慮的問題, Redis為我們提供了repl-disable-tcp-nodelay參數用于控制是否關閉TCP_NODELAY, 預設關閉;

  • 當關閉時, 主節點産生的指令資料無論大小都會及時地發送給從節點, 這樣主從之間延遲會變小, 但增加了網絡帶寬的消耗。 适用于主從之間的網絡環境良好的場景, 如同機架或同機房部署。
  • 當開啟時, 主節點會合并較小的TCP資料包進而節省帶寬。 預設發送時間間隔取決于Linux的核心, 一般預設為40毫秒。 這種配置節省了帶寬但增大主從之間的延遲。 适用于主從網絡環境複雜或帶寬緊張的場景, 如跨機房部署。

二 原理

1.複制過程

複制過程大緻分為6個過程:

redis主從複制一. 配置二 原理三 搭建

三 搭建

目标:搭建一個主節點,兩個從節點的 主從複制結構;拓撲結構如圖所示:

redis主從複制一. 配置二 原理三 搭建

1.啟動主節點

配置主節點:

port 6379
dir "/usr/local/redis/redis-6379/data"
daemonize yes
           

啟動:

redis-server redis-6379.conf
           

2. 啟動兩個從節點

配置6480從節點:

#redis-6480.conf:

port 6480
daemonize yes
logfile "6380.log"
dbfilename "dump-6480.rdb"
dir "/opt/soft/redis/data/"
slaveof 127.0.0.1 6379

#redis-6481.conf:

port 6481
daemonize yes
logfile "6481.log"
dbfilename "dump-6481.rdb"
dir "/opt/soft/redis/data/"
slaveof 127.0.0.1 6379
           

啟動:

redis-server redis-6480.conf
redis-server redis-6481.conf
           

3 搭建完成,驗證

連上6379端口伺服器,執行info指令檢視;成功傳回從節點資訊

redis主從複制一. 配置二 原理三 搭建

繼續閱讀