3. 主从切换架构概述

主从复制与切换是保障数据库、缓存及中间件高可用性的核心手段。本章从基本原理出发,梳理触发条件与切换模式,为后续 Error Budget 变更窗口下的部署实战奠定架构基础。

3.1 主从架构的基本原理

主从架构通过将数据写入集中到单一主节点,再异步或半同步复制到多个从节点,实现读写分离与故障转移。其核心组件与数据流如下:

核心组件:
  • 主节点(Primary/Master):接受写请求,记录变更日志(Binlog / WAL / Oplog)。
  • 从节点(Replica/Slave):拉取主节点日志,重放变更,保持数据最终一致。
  • 复制通道(Replication Channel):基于 TCP 的长连接,传输日志或行级变更。
  • 心跳/探活(Heartbeat):主从之间定期交换状态,检测节点存活。
主从复制基本架构 主节点 (Primary) 接受写请求 · 记录变更日志 从节点 1 异步/半同步复制 从节点 2 异步/半同步复制 从节点 3 异步/半同步复制 复制延迟 = 从节点重放落后主节点的时间差,是触发切换的关键指标 常见复制方式:异步复制、半同步复制、组复制(Group Replication)

3.2 主从切换的触发条件

触发主从切换的条件可分为故障类与计划类两大类。在 Error Budget 变更窗口场景中,计划类切换是主要关注点。

触发类型 具体条件 典型场景 对 Error Budget 的影响
故障类 主节点宕机、网络分区、磁盘满、内核 panic 硬件故障、云实例意外终止 消耗 Error Budget(不可用时间计入 SLO)
计划类 内核升级、硬件替换、配置变更、版本升级 变更窗口内的主从轮换 可提前规划,尽量不消耗 Error Budget
退化类 复制延迟超过阈值、主节点性能严重劣化 慢查询导致复制堆积、IO 打满 视切换耗时决定是否计入不可用
关键原则:计划类切换应通过优雅排空连接、预加热从节点、灰度流量验证等手段,将切换对用户的影响降至最低,从而避免消耗 Error Budget。

3.3 主从切换的常见模式

根据切换决策主体和执行方式,主从切换分为手动切换与自动切换两种模式。现代生产环境通常采用“自动检测 + 人工确认”的混合策略。

3.3.1 手动切换

  • 执行方式:运维人员通过 CLI 或管理平台执行 switchover 命令。
  • 适用场景:计划内变更、灰度验证、故障演练。
  • 优点:可控性强,可提前检查复制状态、延迟、连接数。
  • 缺点:依赖人工响应,MTTR 较长(通常 5~15 分钟)。

3.3.2 自动切换

  • 执行方式:由集群管理组件(如 Orchestrator、Patroni、MHA、Sentinel)自动探测故障并触发切换。
  • 适用场景:突发故障、非工作时间、大规模集群。
  • 优点:MTTR 短(通常 30~120 秒),减少人为失误。
  • 缺点:可能引发脑裂、误切换;需要完善的 fencing 机制。
手动切换 vs 自动切换流程对比 手动切换 1. 人工检查复制状态与延迟 2. 执行 switchover 命令 3. 验证新主节点写入正常 4. 更新 DNS / 连接串 / 负载均衡 自动切换 1. 监控探测主节点心跳超时 2. 选主算法选出新主节点 3. 触发 fencing 隔离旧主 4. 通知注册中心 / 负载均衡器 混合策略:自动探测 + 人工确认(先暂停切换,待人工审批后再执行)

3.4 切换模式选型建议

评估维度 手动切换 自动切换 混合策略
MTTR 5~15 分钟 30~120 秒 1~5 分钟
脑裂风险 低(人工确认) 中(需 fencing) 低(人工确认 fencing)
变更窗口适配 适合计划内变更 适合故障自愈 适合 Error Budget 敏感场景
运维成本 高(需 7×24 值班) 低(自动化) 中(需搭建审批流)
实践建议:在 Error Budget 变更窗口项目中,推荐采用“自动探测 + 人工确认”的混合策略。日常变更使用手动切换以精确控制窗口消耗;突发故障时自动切换兜底,但通过 Webhook 通知值班人员确认,避免误切换导致 Error Budget 意外消耗。