Redis全量同步原因排查:如何解决复制积压与网络闪断问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1218个文字,预计阅读时间需要5分钟。
根本原因并非主从断开了,而是从节点重连时,由于主节点上的主节点的位置无法找到,导致没有对应的偏移量。这通常发生在缓冲区太小或网络中断时间过长,导致缓冲区无法覆盖中断窗口的情况。
现象很典型:日志里反复出现 Partial resynchronization not possible (no cached master),接着就是 Starting BGSAVE for SYNC,CPU 和带宽瞬间拉高,从节点长时间不可用。
- 主节点的
repl-backlog-size默认只有 1MB,对中等以上流量(比如每秒写入 50KB)撑不过 20 秒 - 一次持续 30 秒的网络抖动(如交换机瞬断、云厂商 VPC 路由收敛),就足以让积压缓冲区被新命令覆盖掉旧数据
- 从节点重启或配置变更后重连,如果没保存好自己的
run_id和offset,也会被当成“全新从节点”强制全量
怎么确认是 repl-backlog-size 不够
别猜,直接查主节点当前状态和配置。
本文共计1218个文字,预计阅读时间需要5分钟。
根本原因并非主从断开了,而是从节点重连时,由于主节点上的主节点的位置无法找到,导致没有对应的偏移量。这通常发生在缓冲区太小或网络中断时间过长,导致缓冲区无法覆盖中断窗口的情况。
现象很典型:日志里反复出现 Partial resynchronization not possible (no cached master),接着就是 Starting BGSAVE for SYNC,CPU 和带宽瞬间拉高,从节点长时间不可用。
- 主节点的
repl-backlog-size默认只有 1MB,对中等以上流量(比如每秒写入 50KB)撑不过 20 秒 - 一次持续 30 秒的网络抖动(如交换机瞬断、云厂商 VPC 路由收敛),就足以让积压缓冲区被新命令覆盖掉旧数据
- 从节点重启或配置变更后重连,如果没保存好自己的
run_id和offset,也会被当成“全新从节点”强制全量
怎么确认是 repl-backlog-size 不够
别猜,直接查主节点当前状态和配置。

