主从与哨兵

返回 Redis

部署演进

形态容量高可用适用
单机受内存限制开发、可丢缓存
主从读扩展手动切换读多写少
Sentinel读扩展自动 failover中小规模、不需水平分片
Cluster水平分片分片 + 副本Cluster

主从复制

  1. 从节点 PSYNC 连接主节点
  2. 全量:主节点 BGSAVE RDB → 发送 → 从节点加载
  3. 增量:主节点 replication buffer,从节点重放
  4. 断线:repl_backlog 尝试 partial resync
replicaof 192.168.1.1 6379
masterauth <password>
INFO replication
问题应对
复制延迟强一致读主;或容忍最终一致
全量同步风暴增大 repl-backlog-size;避免批量重启从库
写主后读从删缓存 + 延迟双删;或读主
从库误写replica-read-only yes
INFO replication
# master_repl_offset / slave_repl_offset 差值 ≈ 滞后

Sentinel(哨兵)

3 个以上 Sentinel:SDOWNODOWN → 选举 Leader → failover 提升从库。

sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000
sentinel parallel-syncs mymaster 1
问题说明
脑裂分区导致双主;旧主仍接受写
failover 窗口短暂不可用或需客户端发现新主
quorum判定 ODOWN 所需哨兵数,非选举法定人数

缓解脑裂min-replicas-to-write 1 + min-replicas-max-lag 10 — 从库不足时主库拒绝写。

客户端:Lettuce + SentinelRedisson 自动发现主节点。


相关