为什么高可用系统会触发主备切换

更新时间:
复制 MD 格式

MongoDB实例的运行过程中,当高可用系统监测到实例中的某个节点不可用,将触发节点切换操作并以短信或站内通知的形式通知用户。

收到的通知内容

【阿里云】尊敬的****:您的云数据库MongoDB实例:dds-bp****(名称:****)出现异常,高可用系统已经触发切换,确保实例稳定运行。请检查程序连接是否正常,建议设置自动重连机制以避免切换影响。

为什么会收到该通知

云数据库MongoDB版采用高可用架构:副本集实例中默认包含三个节点;分片集群实例中的每个Shard节点都包含三个节点。其中,Primary节点及Secondary节点对外提供访问地址,Hidden节点作为日常备节点保障高可用。 更多详情请参见副本集架构分片集群架构

常见原因如下:
  • 节点不可用:云数据库MongoDB版支持节点健康状态监测,当监测到实例中的某个节点不可用,则会触发高可用切换,对节点进行切换操作(例如将Primary节点和Secondary节点进行互换),保障实例的高可用性。
  • 节点所在的机器下线:云数据库MongoDB实例中节点所在的机器出现异常,为了避免影响业务将机器进行下线处理,则会触发高可用切换,对节点进行切换操作(例如将Primary节点和Secondary节点进行互换),保障实例的高可用性。

HA切换原因排查

资源负载过高(如CPU或内存打满)是导致节点不可用进而触发HA切换的常见原因之一。可通过以下步骤排查切换是否由资源负载引起:

  1. 登录MongoDB控制台,在实例列表中找到目标实例,单击实例ID进入详情页。

  2. 在左侧导航栏选择性能趋势

  3. DAS性能趋势页面,选择主备切换发生的时间段,重点查看以下指标:

    • CPU利用率:持续高位或突增可能导致节点响应超时。

    • 内存利用率:内存打满可能触发OOM,导致节点不可用。

    • 影响文档数量查询扫描索引与文档数量:数值异常增大通常反映存在低效查询,大量消耗系统资源。

    • Repl OpcountersOplog保留时长:反映主备复制状态,异常时可能存在复制延迟。

  4. CPU或内存指标异常,可在左侧导航栏选择监控信息,选择对应节点和时间范围查看历史监控趋势。

  5. 对比指标异常时段与切换通知时间:若CPU使用率在切换前出现突增且随后监控数据中断,可初步判断为资源负载过高导致节点不可用并触发了HA切换。

说明

DAS性能趋势(原杜康-Telescope性能诊断)已在控制台升级更名。指标变化可能受多种因素影响,单一指标异常不能作为切换原因的直接结论,建议结合业务实际情况综合判断。

关于CPU使用率异常的详细排查方法,请参见排查MongoDB CPU使用率高的问题

主备切换的影响

  • 将造成130秒内的连接闪断。
  • 如果您的业务通过Primary节点的地址连接,那么由于节点角色发生变化,将会对业务的读写操作造成影响,例如无法写入数据。

业务部署建议

  • 为业务设计重连机制,连接闪断后可自动重连,保障业务稳定运行。
  • 推荐生产环境的应用程序通过ConnectionStringURI地址连接数据库。当某个节点出现故障时,不会因为主备切换而影响应用的读写操作,详情请参见副本集实例连接说明分片集群实例连接说明