首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Redis-主从同步原理

Redis-主从同步原理

作者头像
运维小路
发布2026-01-26 12:56:33
发布2026-01-26 12:56:33
990
举报
文章被收录于专栏:运维小路运维小路

作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。

MySQL

PostgreSQL

MongoDB

Redis(本章节)

Etcd

Redis作为一个内存数据库,所以通过主从方式来保持数据库的高可用是很有必要的,今天这个小节就来介绍主从原理。

1. 核心原理

主从复制基于以下机制实现:

  • 数据同步:从节点通过复制主节点的数据副本,实现数据冗余和高可用。
  • 异步复制:默认采用异步方式,主节点在写入数据后立即响应客户端,同时将写命令传播给从节点。
  • 全量同步 + 增量同步:根据从节点的状态,选择全量或增量方式同步数据。

2. 工作流程

(1)建立连接
  1. 从节点执行 SLAVEOF <master_ip> <master_port> 或配置 slaveof 指令,向主节点发起连接请求。
  2. 从节点与主节点建立 Socket 连接,用于数据传输。
(2)数据同步阶段

Redis 根据从节点的复制偏移量(Replication Offset)决定同步方式:

a) 全量同步(Full Resynchronization)

触发条件

  • 从节点首次连接主节点。
  • 从节点的复制偏移量不在主节点的复制积压缓冲区(Replication Backlog)中。

流程

  1. 从节点发送 PSYNC 命令请求同步。
  2. 主节点执行 BGSAVE 生成 RDB 快照,同时缓存期间的写命令到复制缓冲区。
  3. 主节点将 RDB 文件发送给从节点,从节点清空旧数据并加载 RDB。
  4. 主节点发送缓冲区的写命令,从节点执行这些命令以保持数据一致。
b) 增量同步(Partial Resynchronization)

触发条件

  • 从节点与主节点网络短暂中断后重连。
  • 从节点的复制偏移量仍存在于主节点的复制积压缓冲区中。

流程

  1. 从节点发送 PSYNC 命令,并携带上次复制的偏移量。
  2. 主节点比对偏移量,将积压缓冲区中缺失的写命令发送给从节点。
  3. 从节点执行这些命令,追上主节点数据。

3. 核心概念

(1)复制偏移量(Replication Offset)
  • 主从节点各自维护一个偏移量,记录已复制的数据字节数。
  • 每次主节点传播 N 字节数据时,偏移量增加 N;从节点接收后也更新自身偏移量。
  • 通过对比偏移量判断数据一致性。
(2)复制积压缓冲区(Replication Backlog)
  • 主节点维护的一个固定大小的循环缓冲区(默认 1MB)。
  • 保存最近传播的写命令,用于增量同步。
  • 若从节点偏移量仍在缓冲区内,则进行增量同步;否则触发全量同步。
(3)服务器运行 ID(Run ID)
  • 每个 Redis 节点启动时生成唯一 Run ID。
  • 从节点记录主节点的 Run ID,用于判断主节点是否变更(如重启后 Run ID 改变会触发全量同步)。

4. 命令传播阶段

  • 完成初始同步后,主节点持续将写命令异步发送给从节点。
  • 从节点接收并执行相同命令,保持数据实时同步。

5. 主从拓扑结构

  1. 一主一从:简单备份或读写分离。
  2. 一主多从:读请求负载均衡(从节点可处理读请求)。
  3. 树状结构:从节点可进一步作为其他节点的主节点,减轻主节点压力。

6. 重要配置参数

代码语言:javascript
复制
# 主节点配置
repl-backlog-size 1mb    # 复制积压缓冲区大小
repl-backlog-ttl 3600    # 缓冲区保留时间(秒)
min-slaves-to-write 1    # 至少 N 个从节点在线才接受写操作
min-slaves-max-lag 10    # 从节点延迟不超过 N 秒

# 从节点配置
slave-read-only yes      # 从节点只读(默认)
repl-diskless-sync no    # 是否使用无盘复制(网络传输 RDB)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MongoDB
    • 1. 核心原理
    • 2. 工作流程
      • (1)建立连接
      • (2)数据同步阶段
    • 3. 核心概念
      • (1)复制偏移量(Replication Offset)
      • (2)复制积压缓冲区(Replication Backlog)
      • (3)服务器运行 ID(Run ID)
    • 4. 命令传播阶段
    • 5. 主从拓扑结构
    • 6. 重要配置参数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档