详解 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. 所有从节点断开连接时释放缓冲区;
相关推荐
weixin_460443564 分钟前
Java+Linux私有化训考平台:服务、数据库与终端部署结构解析
java·linux·数据库·私有化部署·企业培训考试系统·企业考试系统
编程火箭车1 小时前
MySQL 拥抱 AI:向量、RAG、AutoML 全进了数据库
数据库·mysql·ai编程·向量数据库·rag·automl·mysql9
用户8662978480081 小时前
KingbaseES 中文乱码、排序不对?区域和字符集的问题,一次说清
数据库
aruo1 小时前
回退旧镜像之前,先确认数据库还能兼容
数据库
张洛闻Eren2 小时前
Ansible【第三课】:管理变量和事实
数据库·oracle
weixin_382395232 小时前
0-500 人工厂的生产 PMC 系统怎么做?基于 Tauri + SQLite 的性能架构实践与 5000 物料压测实录
数据库·架构·sqlite
l1t3 小时前
DeepSeek总结的 DuckDB 2.0 文档新内容
服务器·网络·数据库
IvorySQL3 小时前
PostgreSQL 日报| PG19 主备切换挂起修复(10 月 17 日)
数据库·postgresql
roman_日积跬步-终至千里3 小时前
【数据Agent论文·查询与语义|11】EntSQL:给了业务文档,模型为何还是写不对SQL?
数据库·人工智能·sql·数据分析
2601_962885723 小时前
如何用 Python 算最大回撤和回撤恢复期?
java·数据库·python