🔄 主从复制原理深度解析

MySQL 与 Redis 数据同步机制对比

🐬 MySQL
⚡ Redis

MySQL 主从复制架构

🖥️
Master 主库
写操作 + 读操作
Binlog 传输
📋
Slave 从库
只读操作

📊 复制流程详解

1
主库记录
Master 将写操作记录到 Binary Log
2
Dump 线程
Dump Thread 读取 Binlog 发送给 Slave
3
IO 线程
Slave IO Thread 接收并写入 Relay Log
4
SQL 线程
SQL Thread 重放 Relay Log 执行

🔧 三种复制模式

异步复制
Master 不等待 Slave 确认,性能最高但可能丢数据
🔄
半同步复制
至少一个 Slave 确认后才返回,平衡性能与可靠性
🔒
全同步复制
所有 Slave 确认后才返回,最安全但性能最低

🎮 交互式演示:数据同步过程

🖥️
Master 主库
id: 1, name: 'Alice'
id: 2, name: 'Bob'
📋
Slave 从库
id: 1, name: 'Alice'
id: 2, name: 'Bob'
[系统] MySQL 主从复制演示已就绪...

📝 核心配置示例

# Master 配置 (my.cnf)
[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-format = ROW
sync-binlog = 1
innodb_flush_log_at_trx_commit = 1

# Slave 配置 (my.cnf)
[mysqld]
server-id = 2
relay-log = mysql-relay-bin
read-only = ON

-- 在 Slave 上执行
CHANGE MASTER TO
  MASTER_HOST = 'master_host',
  MASTER_USER = 'replica',
  MASTER_PASSWORD = 'password',
  MASTER_LOG_FILE = 'mysql-bin.000001',
  MASTER_LOG_POS = 154;
START SLAVE;

✨ 核心特性

📊
Binlog 格式
支持 STATEMENT、ROW、MIXED 三种格式,ROW 格式最精确
🔄
GTID 复制
全局事务标识符,简化故障切换和主从切换操作
并行复制
MySQL 5.7+ 支持基于组提交的并行复制,提升性能
🔍
延迟监控
Seconds_Behind_Master 字段实时监控复制延迟

Redis 主从复制架构

Master 主节点
读写操作
RDB + AOF 传输
📋
Slave 从节点
只读操作

📊 复制流程详解

1
建立连接
Slave 发送 SYNC/PSYNC 命令
2
全量同步
Master 生成 RDB 文件并传输
3
缓冲命令
Master 将新命令写入复制缓冲区
4
增量同步
Slave 加载 RDB 后接收缓冲命令

🔧 PSYNC 2.0 部分重同步

📦
全量同步
首次连接或偏移量超出范围时,传输完整 RDB 文件
部分重同步
断线重连后,仅传输丢失的命令,高效快速

🎮 交互式演示:Redis 数据同步

Master 主节点
user:1 → "Alice"
counter → 100
📋
Slave 从节点
user:1 → "Alice"
counter → 100
[系统] Redis 主从复制演示已就绪...

📝 核心配置示例

# Master 配置 (redis.conf)
bind 0.0.0.0
port 6379
requirepass "masterpassword"

# 开启持久化(推荐)
save 900 1
save 300 10
appendonly yes
appendfsync everysec

# Slave 配置 (redis.conf)
bind 0.0.0.0
port 6380
replicaof 127.0.0.1 6379
masterauth "masterpassword"
replica-read-only yes

# 或动态配置
REPLICAOF 127.0.0.1 6379
CONFIG SET masterauth "masterpassword"

✨ 核心特性

🔄
PSYNC 机制
Redis 2.8+ 引入的部分重同步,避免频繁全量复制
💾
复制积压缓冲区
固定大小的 FIFO 队列,存储最近传播的写命令
🔗
级联复制
从节点可以作为其他从节点的主节点,构建复制链
无磁盘复制
Redis 2.8.18+ 支持直接通过网络发送 RDB,无需磁盘

📊 MySQL vs Redis 主从复制对比

特性 MySQL Redis
复制粒度 逻辑日志(SQL 语句或行变更) 物理数据(RDB 快照 + 命令流)
同步方式 异步/半同步/全同步可选 异步复制(从节点定期确认)
断线恢复 基于 GTID 或位置点恢复 PSYNC 部分重同步机制
复制延迟 Seconds_Behind_Master 监控 INFO replication 查看 offset 差值
拓扑结构 一主多从、主主复制 一主多从、级联复制(树形)
数据一致性 最终一致性,可配置强一致性 最终一致性,异步复制
适用场景 读写分离、数据备份、高可用 读写分离、数据冗余、故障恢复