天天看點

Redis 主從複制1. 主從複制模式

Redis主從複制,就是主節點資料更新後根據配置和政策,自動同步到從節點的 Master/Slaver 機制,Master以寫為主,Slave以讀為主。

1. 主從複制模式

1. 作用

1. 資料備援,實作了資料的熱備份。

2. 負載均衡,讀寫分離,性能擴充。

3. 容災快速恢複。

4. 主從複制是Rdis哨兵和叢集模式的基礎。

2. 配置

配從不配主原則。

主從複制完全是在從節點進行配置和操作,不需要對主節點進行操作。

1. 從節點相關配置

# 1. 配置 include 主節點配置檔案,共用不需要修改的内容
include /opt/apps/redis-5.0.7/conf/redis.conf

# 2. 開啟Redis服務背景啟動
daemonize yes

# 3. 指定從節點Redis的pid
pidfile /var/run/redis_6380.pid

# 4. 指定從節點端口名
port 6380

# 5. 指定log檔案名
logfile ""

# 6. 指定 db 檔案名
dbfilename dump_6380.rdb

# 7. 關閉 appendonly,或者換名字
appendonly yes
appendfilename "appendonly.aof"

# 其他
# 8. 主從連接配接逾時時間
repl-timeout 60

# 9. 全量複制時,是否無盤複制,即通過網絡socket
repl-diskless-sync n0

# 10. 全量複制時,開啟無盤複制前的等待時間,機關秒
repl-diskless-sync-delay 5

# 11. 全量複制時,主節點緩沖區大小
client-output-buffer-limit slave 256MB 64MB 60

# 12. 主從指令發送是否延遲
repl-disable-tcp-nodelay no

# 13. 與主節點建立連接配接時的密碼(如果主節點設定了密碼)
masterauth <master-password>

# 14. 主從逾時判斷時間
repl-ping-slave-period 10

# 15. 複制堆積緩存區的大小
repl-backlog-size 1mb

# 16. 沒有從節點時,複制堆積緩沖區的保留時間
repl-backlog-ttl 3600

# 17. 從節點是否隻讀
slave-read-only yes
           

2. 三種連接配接方式

# 1. 從節點的配置檔案中添加: slaveof masterIp masterPort,(永久)
slaveof <ip> <port>

# 2. 啟動從節點時
redis-server --slaveof <ip> <port>

# 3. 用戶端指令,臨時的,重新開機從節點redis服務後失效
slaveof <ip> <port>
           

3. 取消從節點

# 斷開後從節點資料不會删除,但不會再同步主節點資料
slaveof no one
           

4. 用戶端中顯示主從資訊

info replication
           

注意 

1. 從節點是從頭開始複制主伺服器資料。

2. 設定後主節點可以讀寫,從節點隻能讀。

3. 主節點當機後從節點會處理等待狀态。

4. 主節點重新開機後,從節點(沒有重新開機服務或永久設定)自動連接配接繼續成為從節點。

5. 其中一台從節點當機,重新開機後會自動同步所有資料。

5. 主從複制原理

1. 每次從節點啟動後,都會給主機發送psync指令。

2. 主節點立刻進行存盤操作,發送RDB檔案給從節點。

3. 從節點收到RDB檔案後,進行全盤加載。

4. 之後每次主節點的寫操作,都會立刻發送給從節點,從節點執行相同的指令。

3. 薪火相傳模式

上一個Slave可以是下一個Slave的Master,Slave同樣可以接收其他Slaves的連接配接和同步請求,該Slave作為了條中下一個的Master,可以有效減輕Master的寫壓力,去中心化降低風險。

# 設定方式同從節點一樣
slaveof <ip> <port>
           

注意 

中途變更轉向會清除之前的資料,重建立立拷貝最新的。

風險是一旦中間某個Slave當機,後面的Slave都沒法備份。

薪火相傳模式可以将從節點反客為主

當一個Master當機後,後面的Slave可以立刻升為Master,其後面的Slave不用做任何修改。

# 主節點當機後,取消某個從節點可以将該從節點變為主節點
slaveof no one
           

4. 哨兵模式

反客為主的自動版,能夠背景監控主節點是否故障,如果故障了根據投票數自動将從節點轉換為主節點。

條件:

1. 主從複制模式。

2. 設定哨兵。

配置哨兵

 sentinel.conf

cp /opt/apps/redis-5.0.7/sentinel.conf /opt/apps/redis-5.0.7/conf/sentinel.conf
           

配置内容 

port 26379
daemonize yes
pidfile /var/run/redis-sentinel.pid
logfile ""
dir /opt/apps/redis-redis-5.0.7/data/

# 主要設定:mymaster為監控對象起的伺服器名稱, 1 為至少有多少個哨兵同意遷移的數量
sentinel monitor mymaster 127.0.0.1 6379 1

sentinel down-after-milliseconds mymaster 30000

sentinel parallel-syncs mymaster 1

sentinel failover-timeout mymaster 180000

sentinel deny-scripts-reconfig yes
           

啟動哨兵

redis-sentinel /opt/apps/redis-5.0.7/conf/sentinel.conf
           

繼續閱讀