故障转移如何工作
故障转移把服务从失败的主节点移到冗余备节点。过程听起来简单,却包含几个独立问题:检测主节点不健康、决定谁有权提升备节点、重定向流量、确认新主节点能服务请求。每一步都可能失败。健康检查若无法区分“慢”和“死”,会触发不必要的切换;没有法定人数的提升会制造两个主节点。
检测与法定人数
检测需要多个信号并能容忍瞬时错误。一次健康检查失败不应切换数据库。分布式系统还需要防止脑裂:多数派法定人数、租约或外部仲裁者。自动故障转移因快速而吸引人,却可能把网络分区放大成两个可写副本。手动切换较慢但允许判断;许多团队对有状态系统采用自动检测加人工批准。
状态与数据
无状态故障转移主要是路由。有状态故障转移必须处理复制延迟和丢失写入。要定义恢复点目标,持续监控延迟,并决定新主节点是否可以在追平前接受写入。基于 DNS 的切换会增加 TTL 延迟和客户端缓存;连接排空可避免中断活动请求。
演练、回切与局限
按计划测试切换,包括检测、提升、流量转移以及空档期的应用行为。测量实际恢复时间是否达标。例如,备用节点预热缓存需要四分钟,可能满足数据库目标却违反用户侧目标。要记录每一步耗时。流量转移并不代表结束:回切需要受控计划、数据核对,以及确认旧主节点健康并已追平。跳过回切会让系统长期运行在降级的备用节点上。故障转移处理的是组件丢失,而不是相关故障或数据损坏;收到同一坏迁移的副本会和主节点一样快失败。