目录
一、主从复制核心机制
1.1 复制流程三阶段
1.2 同步模式对比
二、主从配置实战指南
2.1 快速搭建主从集群
2.2 认证与安全配置
三、高级复制参数调优
3.1 关键配置参数
3.2 网络优化策略
四、主从状态监控与诊断
4.1 关键监控指标
4.2 延迟检测命令
五、故障场景与解决方案
5.1 常见故障处理
5.2 脑裂预防配置
六、生产环境最佳实践
6.1 读写分离架构
6.2 跨机房部署方案
七、版本演进与特性对比
7.1 Redis版本复制特性
八、主从集群监控看板
结语
一、主从复制核心机制
1.1 复制流程三阶段
1.2 同步模式对比
同步类型 | 触发条件 | 数据量 | 网络消耗 | 恢复时间(10GB数据) |
---|
全量同步 | 初次连接/复制ID不匹配 | 100% | 高 | 3-5分钟 |
部分同步 | 断线重连且offset有效 | <1% | 低 | <1秒 |
二、主从配置实战指南
2.1 快速搭建主从集群
# 主节点无需特殊配置
# 从节点配置(redis.conf)
replicaof 192.168.1.100 6379
masterauth yourpassword # 主节点密码
replica-read-only yes # 从节点只读
2.2 认证与安全配置
# 主节点设置密码
requirepass master123
# 从节点同步认证
redis-cli -h slave1 config set masterauth master123
三、高级复制参数调优
3.1 关键配置参数
# 主节点配置
repl-backlog-size 256mb # 积压缓冲区大小
repl-backlog-ttl 3600 # 缓冲区保留时间
min-replicas-to-write 2 # 最少从节点数
# 从节点配置
repl-ping-replica-period 10 # 心跳间隔
repl-timeout 60 # 同步超时时间
3.2 网络优化策略
# 启用无盘复制(Redis 6.0+)
repl-diskless-sync yes
repl-diskless-sync-delay 5
# 调整TCP内核参数
sysctl -w net.core.somaxconn=65535
sysctl -w net.ipv4.tcp_tw_reuse=1
四、主从状态监控与诊断
4.1 关键监控指标
# 查看复制状态
redis-cli info replication
# 输出示例
connected_slaves:2
master_repl_offset:39875612
slave0:ip=192.168.1.101,port=6379,state=online,offset=39875612,lag=0
slave1:ip=192.168.1.102,port=6379,state=online,offset=39875589,lag=1
4.2 延迟检测命令
# 测量主从延迟(单位:毫秒)
redis-cli --latency -h slave1
五、故障场景与解决方案
5.1 常见故障处理
故障现象 | 诊断命令 | 解决方案 |
---|
从节点显示state=wait_bgsave | info persistence | 增加repl-backlog-size |
主从数据不一致 | redis-compare 工具 | 触发全量同步 |
从节点无法连接主节点 | telnet master_ip 6379 | 检查防火墙/网络ACL |
主从复制延迟持续增长 | info replication | 优化网络带宽/升级硬件 |
5.2 脑裂预防配置
# 主节点配置
min-replicas-to-write 2 # 至少2个从节点在线
min-replicas-max-lag 10 # 最大允许延迟10秒
六、生产环境最佳实践
6.1 读写分离架构
6.2 跨机房部署方案
# 异地从节点配置
replicaof <master_ip> 6379
replica-announce-ip 公网IP
replica-announce-port 6379
七、版本演进与特性对比
7.1 Redis版本复制特性
版本 | 关键特性 | 断线恢复支持 |
---|
2.8- | 全量同步 | 需要完整RDB |
2.8+ | PSYNC部分同步 | 支持断点续传 |
4.0+ | PSYNC2优化 | 主从切换后仍可续传 |
6.0+ | 无盘复制/SSL加密复制 | 提升大数据量同步效率 |
八、主从集群监控看板
监控指标 | 健康阈值 | 告警触发条件 |
---|
主从延迟(lag) | <5秒 | >30秒持续1分钟 |
主节点内存使用率 | <70% | >85%持续5分钟 |
网络带宽使用率 | <50% | >80%持续3分钟 |
从节点连接状态 | 全部online | 任意从节点断开 |
结语
Redis主从复制的正确使用需要遵循以下原则:
- 容量规划:主节点内存保留30%缓冲空间
- 网络隔离:主从通信使用独立网络接口
- 版本统一:保持主从Redis大版本一致
- 监控完备:实时跟踪
master_link_status
和lag
指标