MongoDB实例发生主备切换后无法写入数据

问题描述

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

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

问题原因

云数据库MongoDB版采用高可用架构,云数据库MongoDB版支持节点健康状态监测,当监测到实例中的某个节点不可用,则会触发高可用切换,对节点进行切换操作(例如将Primary节点和Hidden节点进行互换),保障实例的高可用性。

  • 副本集实例提供多个节点供用户访问,当其中的某个节点发生故障后,系统会使用Secondary节点或隐藏节点替换故障节点继续提供服务,并对故障节点进行检查与修复。该过程对用户完全透明,可能会产生1次30秒内的连接闪断。
  • 分片集群实例的Shard节点和ConfigServer节点均采用三节点副本集架构。当其中的某个节点发生故障后,系统会使用隐藏节点替换故障节点继续提供服务,并对故障节点进行检查与修复。该过程对用户完全透明,可能会产生1次30秒内的连接闪断。

解决方案

如果您的业务通过Primary节点的地址连接,那么由于节点角色发生变化,将会对业务的读写操作造成影响,例如无法写入数据。建议您进行以下配置:

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

相关文档

适用于

  • 云数据库MongoDB
阿里云首页 云数据库 MongoDB 版 相关技术圈