MongoDB实例发生主备切换后无法写入数据
问题描述
在MongoDB实例的运行过程中,当高可用系统监测到实例中的某个节点不可用,将触发节点切换操作,并以短信或站内通知的形式通知用户,通知如下:
【阿里云】尊敬的******:您的云数据库MongoDB实例:dds-bpxxxxxxxx(名称:xxxxxx)出现异常,高可用系统已经触发切换,确保实例稳定运行。请检查程序连接是否正常,建议设置自动重连机制以避免切换影响。
问题原因
云数据库MongoDB版采用高可用架构,云数据库MongoDB版支持节点健康状态监测,当监测到实例中的某个节点不可用,则会触发高可用切换,对节点进行切换操作(例如将Primary节点和Hidden节点进行互换),保障实例的高可用性。
- 副本集实例提供多个节点供用户访问,当其中的某个节点发生故障后,系统会使用Secondary节点或隐藏节点替换故障节点继续提供服务,并对故障节点进行检查与修复。该过程对用户完全透明,可能会产生1次30秒内的连接闪断。
- 分片集群实例的Shard节点和ConfigServer节点均采用三节点副本集架构。当其中的某个节点发生故障后,系统会使用隐藏节点替换故障节点继续提供服务,并对故障节点进行检查与修复。该过程对用户完全透明,可能会产生1次30秒内的连接闪断。
解决方案
如果您的业务通过Primary节点的地址连接,那么由于节点角色发生变化,将会对业务的读写操作造成影响,例如无法写入数据。建议您进行以下配置:
- 当发生主备切换时,将造成1次30秒内的连接闪断。建议您为业务设计重连机制,连接闪断后可自动重连,保障业务稳定运行。
- 推荐生产环境的应用程序通过ConnectionStringURI地址连接数据库。当某个节点出现故障时,不会因为主备切换而影响应用的读写操作,详情请参见副本集实例连接说明或分片集群实例连接说明。
相关文档
适用于
- 云数据库MongoDB