在MongoDB实例的运行过程中,当高可用系统监测到实例中的某个节点不可用,将触发节点切换操作并以短信或站内通知的形式通知用户。
收到的通知内容
【阿里云】尊敬的****:您的云数据库MongoDB实例:dds-bp****(名称:****)出现异常,高可用系统已经触发切换,确保实例稳定运行。请检查程序连接是否正常,建议设置自动重连机制以避免切换影响。
为什么会收到该通知
云数据库MongoDB版采用高可用架构:副本集实例中默认包含三个节点;分片集群实例中的每个Shard节点都包含三个节点。其中,Primary节点及Secondary节点对外提供访问地址,Hidden节点作为日常备节点保障高可用。 更多详情请参见副本集架构或分片集群架构。
- 节点不可用:云数据库MongoDB版支持节点健康状态监测,当监测到实例中的某个节点不可用,则会触发高可用切换,对节点进行切换操作(例如将Primary节点和Secondary节点进行互换),保障实例的高可用性。
- 节点所在的机器下线:云数据库MongoDB实例中节点所在的机器出现异常,为了避免影响业务将机器进行下线处理,则会触发高可用切换,对节点进行切换操作(例如将Primary节点和Secondary节点进行互换),保障实例的高可用性。
HA切换原因排查
资源负载过高(如CPU或内存打满)是导致节点不可用进而触发HA切换的常见原因之一。可通过以下步骤排查切换是否由资源负载引起:
登录MongoDB控制台,在实例列表中找到目标实例,单击实例ID进入详情页。
在左侧导航栏选择性能趋势。
在DAS性能趋势页面,选择主备切换发生的时间段,重点查看以下指标:
CPU利用率:持续高位或突增可能导致节点响应超时。
内存利用率:内存打满可能触发OOM,导致节点不可用。
影响文档数量和查询扫描索引与文档数量:数值异常增大通常反映存在低效查询,大量消耗系统资源。
Repl Opcounters和Oplog保留时长:反映主备复制状态,异常时可能存在复制延迟。
若CPU或内存指标异常,可在左侧导航栏选择监控信息,选择对应节点和时间范围查看历史监控趋势。
对比指标异常时段与切换通知时间:若CPU使用率在切换前出现突增且随后监控数据中断,可初步判断为资源负载过高导致节点不可用并触发了HA切换。
DAS性能趋势(原杜康-Telescope性能诊断)已在控制台升级更名。指标变化可能受多种因素影响,单一指标异常不能作为切换原因的直接结论,建议结合业务实际情况综合判断。
关于CPU使用率异常的详细排查方法,请参见排查MongoDB CPU使用率高的问题。
主备切换的影响
- 将造成1次30秒内的连接闪断。
- 如果您的业务通过Primary节点的地址连接,那么由于节点角色发生变化,将会对业务的读写操作造成影响,例如无法写入数据。
业务部署建议
- 为业务设计重连机制,连接闪断后可自动重连,保障业务稳定运行。
- 推荐生产环境的应用程序通过ConnectionStringURI地址连接数据库。当某个节点出现故障时,不会因为主备切换而影响应用的读写操作,详情请参见副本集实例连接说明或分片集群实例连接说明。