<!doctype html>7.Redis複製的原理與優化html
Redis複製的原理與優化
什麼是主從複製
-
單機有什麼問題node
- 機器故障
- 容量瓶頸
- QPS瓶頸
-
主從複製的做用redis
- 數據副本
- 寬展讀性能
-
總結網絡
- 一個master能夠有多個slave
- 一個slave只能有一個master
- 數據流向是單向的,master到slave
複製的配置
命令配置
xxxxxxxxxx
* 命令配置複製
* slaveof 命令 在從節點執行
* 取消複製
* slaveof no one 在從節點執行 清除全部的從節點數據
配置文件 從節點配置
xxxxxxxxxx
* slaveof ip prot
* slave-read-only yes
比較
方式 | 命令 | 配置 |
---|---|---|
優勢 | 無需重啓 | 贊成配置 |
缺點 | 不便於管理 | 須要重啓 |
全量複製和部分複製
全量複製
-
run_id運維
-
master_repl_offset:1865 偏移量 主從偏移量同步更新性能
-
全量複製開銷優化
- bgsave時間
- RDB網絡傳輸信息
- 從節點清空數據時間
- 從節點加載RDB時間
- 可能在AOF重寫時間
部分複製 redis2.8以後
故障處理
-
總故障轉移spa
-
slave宕機code
- 一主兩從
-
master宕機htm
- slaveof no one
- slaveof new master
-
主從複製故障轉移問題
- sentinel
開發運維常見問題
-
讀寫分離:讀分攤到從節點
-
複製數據延遲
-
讀到過時數據 - redis 3.2已經解決
-
刪除過時數據 從節點沒法刪除數據
- 懶惰策略 讀到過時數據再判斷刪除
- 定時刪除
-
-
從節點故障 優化主節點
-
-
主從配置不一致
- maxmemory不一致:丟失數據
- 例如數據結果優化參數(hash-max-ziplist-entries):內存不一致
-
規避全量複製
-
第一次全量複製
- 第一次不可避免
- 小主節點,低峯
-
節點運行ID不匹配
- 主節點重啓(運行ID變化) 4.0 psyncto
- 故障轉移 例如哨兵 或集羣
-
複製積壓緩衝區不足
- 網絡中斷,部分複製沒法知足
- 增大複製緩衝區配置rel_backlog_size 網絡 「加強」
-
-
規避複製風暴
-
單節點複製風暴
-
問題:主節點重啓,全部的從節點全量複製 風暴 cpu 內存 網絡
-
解決:更換複製拓撲
-
master - slave - slave-1-a
-
- slave-2-b
-
-
-
單機器複製風暴
- 機器宕機後 大量複製
- 主節點分散多機器
-