详解 Redis repl_backlog_buffer(如何判断增量同步)

一、repl_backlog_buffer

复制积压缓冲区(Replication Backlog Buffer) 是一个环形内存区域(Ring Buffer),用于临时保存主节点最近写入的写命令,以支持从节点断线重连后的增量同步

1.1 三个复制偏移量

复制偏移量(offset)是一个 64 位无符号整数 ,是主节点为所有写入操作生成的全局连续递增的序列号 ,表示从主节点启动以来所有写命令的字节总量(按 Redis 协议格式序列化后的字节数)。

例如:主节点执行 SET key value,这条命令会被序列化成 Redis 协议格式(如 *3\r\n$3\r\nSET\r\n$3\r\nkey\r\n$5\r\nvalue\r\n),总字节数为 30 字节。此时,主节点的 master_repl_offset 会递增 30。

Redis 的设计目标是长期运行的高吞吐系统。假设每秒写入 100MB 数据:耗尽时间 ≈ 1.84e19 / (100 * 1e6) / 31536000 ≈ 5845 年

  1. master_repl_offset:主节点复制偏移量,表示主节点已写入的复制数据流的总字节数
    1. 主节点重启或故障切换后,新主节点的 master_repl_offset 会重置;
  2. slave_repl_offset:从节点的复制进度;
  3. backlog_first_byte_offset:repl_backlog_buffer 的起始偏移量
    1. slave_repl_offset >= backlog_first_byte_offset,则增量同步;否则需全量同步;

1.2 repl_backlog_buffer 清理时机

  1. 缓冲区写满时覆盖旧数据:按照 FIFO 的方式循环覆盖旧数据;
  2. 所有从节点断开连接时释放缓冲区;
相关推荐
麦聪聊数据37 分钟前
Web 原生架构如何重塑企业级数据库协作流?
数据库·sql·低代码·架构
未来之窗软件服务37 分钟前
数据库优化提速(四)新加坡房产系统开发数据库表结构—仙盟创梦IDE
数据库·数据库优化·计算机软考
时艰.1 小时前
Java 并发编程 — 并发容器 + CPU 缓存 + Disruptor
java·开发语言·缓存
Goat恶霸詹姆斯2 小时前
mysql常用语句
数据库·mysql·oracle
大模型玩家七七2 小时前
梯度累积真的省显存吗?它换走的是什么成本
java·javascript·数据库·人工智能·深度学习
曾经的三心草2 小时前
redis-9-哨兵
数据库·redis·bootstrap
明哥说编程3 小时前
Dataverse自定义表查询优化:D365集成大数据量提速实战【索引配置】
数据库·查询优化·dataverse·dataverse自定义表·索引配置·d365集成·大数据量提速
张小凡vip3 小时前
Kubernetes--k8s中部署redis数据库服务
redis·kubernetes
xiaowu0803 小时前
C# 拆解 “显式接口实现 + 子类强类型扩展” 的设计思想
数据库·oracle
讯方洋哥3 小时前
HarmonyOS App开发——关系型数据库应用App开发
数据库·harmonyos