第7章 高可用三部曲:复制哨兵集群


文档摘要

第7章 高可用三部曲:复制哨兵集群 章节摘要:本章跟着一次主库宕机走。复制让数据有副本,哨兵让故障有裁判,集群让容量与写入有水平扩展。三部曲层层递进,每一步解决上一步遗留的问题,理解这条问题链比背架构图重要。 一条主线 凌晨两点,主库所在宿主机断电。第一步,从库还活着但没人指挥——引出哨兵;第二步,哨兵把从库提成主库,服务恢复,但单机写容量天花板还在——引出集群。复盘这条事故链,正好把复制的数据流、哨兵的裁决算法、集群的槽位路由串成一条主线:副本是资产,裁决是大脑,分片是天花板破解器。 沿途站点 7.1 主从复制:全量 RDB 同步加增量命令流,以及复制积压缓冲的作用。 7.2 Sentinel 哨兵:多哨兵互监、法定人数裁决、故障转移的完整流程。 7.

第7章 高可用三部曲:复制哨兵集群

章节摘要:本章跟着一次主库宕机走。复制让数据有副本,哨兵让故障有裁判,集群让容量与写入有水平扩展。三部曲层层递进,每一步解决上一步遗留的问题,理解这条问题链比背架构图重要。

一条主线

凌晨两点,主库所在宿主机断电。第一步,从库还活着但没人指挥——引出哨兵;第二步,哨兵把从库提成主库,服务恢复,但单机写容量天花板还在——引出集群。复盘这条事故链,正好把复制的数据流、哨兵的裁决算法、集群的槽位路由串成一条主线:副本是资产,裁决是大脑,分片是天花板破解器

沿途站点

  • 7.1 主从复制:全量 RDB 同步加增量命令流,以及复制积压缓冲的作用。
  • 7.2 Sentinel 哨兵:多哨兵互监、法定人数裁决、故障转移的完整流程。
  • 7.3 Cluster 集群:16384 个槽的分片定位、Gossip 总线与部署运维要点。

三个方案的演进关系:

拐点与结论

两个必须点破的真相。其一,复制是异步的:主库不等从库确认就回客户端,故障切换瞬间可能丢最后一批写入——这解释了第 6 章末尾"Redis 到不了零丢失"的另一半原因。其二,集群的分片单位是槽不是键:16384 个槽把键空间切块分配到节点,多键操作必须同槽,这是所有"集群模式下命令报错"问题的总根源。

本章知识点清单

  • 画出全量同步的完整时序:握手、fork 快照、传输、追增量,并说出缓冲积压的作用
  • 用主从偏移量差值判断复制健康,解释"部分重同步"的成立条件
  • 说出主观下线与客观下线的区别、quorum 与 majority 各管哪一步
  • 列出哨兵选新主的排序规则与切换期间的业务表现(秒级写中断)
  • 用 CRC16 取模心算一个键的槽位思路,解释 hash tag 与数据倾斜的关系
  • 说出集群容错的算术:过半主库存活才能服务,三主只容一台故障

三个方案的能力与代价对照,选型时按行核对:

维度 主从复制 哨兵 集群
解决什么 数据有副本、读可扩展 主库故障自动切换 容量与写入水平扩展
自动故障转移 有,秒级 有,按槽位
写容量上限 单主 单主 随主节点数扩展
客户端复杂度 要支持哨兵寻址 要支持槽位路由
主要代价 异步复制丢窗口 切换期间写中断 多键操作受槽约束

演进不是"越靠右越好":读多写少的业务停在主从加哨兵就够,为不存在的写入瓶颈上集群,反而先撞上多键命令的槽约束。按需求停在第够用的那一档,是本章想教的真实判断力。

动手实验的主线是同一条事故链的逐步修复:先搭一主一从看复制、再断主库体会"没人指挥"的僵局、然后加哨兵看自动切换掐表计时、最后压测单主写上限引出集群。每一环都是上一环留下的具体痛点,架构选择不再是名词,而是一次次被问题逼出来的答案。

做实验时给自己留一份"切换时间线"记录:从故障注入到哨兵定性、从定性到新主可写、从新主可写到客户端全部恢复,三段各自耗时。这三个数字是给业务方谈可用性承诺的全部依据,也是对比"要不要上集群"时最硬的论据。

读完你应该

  1. 描述全量同步与部分重同步的触发条件与数据流
  2. 说出哨兵的法定人数、判定下线的两个阶段
  3. 用 CRC16 取模推算任意键属于哪个槽、落在哪个节点
  4. 部署一套三主三从集群并完成扩缩容
  5. 明确异步复制的丢失窗口,为强一致数据选对组件

下一章的接力

架构稳了,最后一章回到日常:监控哪些指标、怎么排查慢与阻塞、安全怎么加固,并用三个实战案例把全书的结构知识兑换成业务方案。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U