愛可生研發中心工程師,負責項目的需求與維護工作。其他身份:柯基鏟屎官。
*愛可生開源社區出品,原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。
一、主從複製簡介
二、主從複製風暴
三、問題現象
3.1 CPU:
3.2 磁盤:
3.3 內存與網絡:
四、出現的場景
-
單 master 節點(主機上只 有一臺redis實例)當機器發生故障導致網絡中斷或重啓恢復時。 -
多 m aster 節點在同一臺機 器上,當機器發生故障導致網絡中斷或重啓恢復時。 -
大量 slave 節點同時重啓恢復。 -
複製緩衝區過小,緩衝區的上限是由 client-output-buffer-limit 配置項決定的,當 slave 還在恢復 RDB 快照時,master 節點持續產生數據,緩衝區如果被寫滿了,會導致 slave 節點連接斷開,再次發起重建複製請求。發起全量複製->複製緩衝區溢出->連接中斷->重連->發起全量複製->複製緩衝區溢出->連接中斷->重連... -
網絡長時間中斷導致的連接異常:跨機房、跨雲、DNS 解析異常等導致的主從節點之間連接丟失。主從節點判斷超時(觸發了repl-timeout),且丟失的數據過多,超過了複製積壓緩衝區所能存儲的範圍。 -
數據量過大,生成 RDB 快照的 fork 子進程操作耗時過長,導致 slave 節點長時間收不到數據而觸發超時,此時 slave 節點會重連 master 節點,再次請求進行全量複製,再次超時,再次重連。
五、解決方案
5.1 降低存儲上限
5.2 複製緩衝區調整
5.3 部署方式調整
5.4 架構調整
減少 slave 節點個數。或調整 slave 架構層級,在 Redis 4.0 版本之後,sub-slave 訂閱 slave 時將會收到與 master 一樣的複製數據流。
本文關鍵字:#Redis主從複製# #Redis複製風暴#
文章推薦:
OceanBase Proxy 無法連接 OBserver 集羣
技術分享 | TiUP工具 - TiDB集羣滾動升級核心流程解析
技術分享 | Xtrabackup 不備份 binlog 怎麼保證一致性?
關於SQLE
SQLE 獲取
類型 | 地址 |
---|---|
版本庫 | https://github.com/actiontech/sqle |
文檔 | https://actiontech.github.io/sqle-docs-cn/ |
發佈信息 | https://github.com/actiontech/sqle/releases |
數據審覈插件開發文檔 | https://actiontech.github.io/sqle-docs-cn/3.modules/3.7_auditplugin/auditplugin_development.html |
本文分享自微信公衆號 - 愛可生開源社區(ActiontechOSS)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。