高可用服务由Detection、Repair、Notice等模块组成,主要保障数据链路服务的可用性,以及负责处理数据库内部的异常。

Detection

Detection模块负责检测数据库引擎的主节点和备节点是否能正常提供服务。通过间隔为8~10秒的心跳信息,HA节点可以获得主节点的健康情况。结合备节点的健康情况和各HA节点的心跳信息,Detection模块可以排除网络抖动等异常引入的误判风险,在30秒内完成异常切换操作。

Repair

Repair模块负责维护数据库引擎的主节点和备节点之间的复制关系,以及修复主节点或者备节点在日常运行中出现的错误。例如:

  • 主备复制异常断开的自动修复
  • 主备节点表级别损坏的自动修复
  • 主备节点宕机的现场保存和自动修复

Notice

Notice模块负责将主备节点的状态变动通知到负载均衡或者Proxy,保证用户访问正确的节点。

例如:Detection模块发现主节点异常,并通知Repair模块进行修复。Repair模块尝试后无法修复主节点,通知Notice模块进行流量切换。Notice模块将切换请求转发至负载均衡或者Proxy,此时用户流量全部指向备节点。与此同时,Repair模块在另一台物理服务器上重建新的备节点,并将变动同步给Detection模块。Detection模块开始重新检测实例的健康状态。