Redis 主从复制风暴故障解析

0    44    1

Tags:

👉 本文共约1542个字,系统预计阅读时间或需6分钟。

一、主从复制简介

Redis 主从架构下,使用默认的异步复制模式来同步数据,其特点是低延迟和高性能。当 Redis master 下有多个 slave 节点,且 slave 节点无法进行部分重同步时, slave 会请求进行全量数据同步,此时 master 需要创建 RDB 快照快照发送给 slave ,从节点收到 RDB 快照开始解析与加载。

二、主从复制风暴

在复制重建的过程中,slave 节点加载 RDB 还未完成,却因为一些原因导致失败了,slave 节点此时又会再次发起全量同步 RDB 的请求,循环往复。当多个 slave 节点同时循环请求时,导致了复制风暴的出现。

三、问题现象

3.1 CPU

master 节点会异步生成 RDB 快照,数据量非常大时 fork 子进程非常耗时,同时 CPU 会飙升,且会影响业务正常响应。

3.2 磁盘

从 Redis 2.8.18 版本开始,支持无磁盘复制,异步生成的RDB快照将在子进程中直接发送 RDB 快照至 slave 节点,多个 slave 节点共享同一份快照。所以磁盘 IO 并不会出现异常。

3.3 内存与网络

由于 RDB 是在内存中创建与发送,当复制风暴发起时,master 节点创建RDB快照后会向多个 slave 节点进行发送,可能使 master 节点内存与网络带宽消耗严重,造成主节点的延迟变大,极端情况会发生主从节点之间连接断开,导致复制失败。slave 节点在失败重连后再次发起新一轮的全量复制请求,陷入恶性循环。

四、出现的场景

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部