本文介绍云数据库 MongoDB 版主备切换相关问题。
为什么实例会发生主备切换?
云数据库MongoDB实例发生主备切换的常见原因如下:
宿主机下线或实例异常导致的主备切换会以站内信或邮件等形式通知到您,通知内容如下:
【阿里云】尊敬的****:您的云数据库MongoDB实例:dds-bp****(名称:****)出现异常,高可用系统已经触发切换,确保实例稳定运行。请检查程序连接是否正常,建议设置自动重连机制以避免切换影响。
主备切换有什么影响?
影响:
主备切换过程中,会出现1次闪断现象,持续时间约30秒。
如果您的业务通过Primary节点的地址连接,那么由于节点角色发生变化,可能会对业务的读写操作造成影响,例如无法写入数据。
业务部署建议:
请提前为业务设计重连机制和异常处理能力,连接闪断后可自动重连,保障业务稳定运行。
推荐生产环境的应用程序通过ConnectionStringURI SRV或ConnectionStringURI地址连接数据库。当某个节点出现故障时,不会因为主备切换而影响应用的读写操作,更多信息,请参见副本集实例连接说明或分片集群实例连接说明。
如何手动设置主备切换?
云数据库MongoDB支持手动设置主备切换,方便您进行实时容灾演练,验证客户端程序的异常处理能力。如果实例部署在多可用区,您还可以根据业务的部署情况设置主备切换,满足应用就近连接的需求。
单节点实例因架构因素,不支持主备切换。
为什么副本集实例写入数据报错?
问题描述
写入数据至云数据库MongoDB副本集实例时,出现"errmsg": "not master", "code": 10107, "codeName": "NotMaster"
、"errmsg": "not master", "code": 10107, "codeName": "NotWritablePrimary"
或Time out after 30000ms while waiting for a server that matches writableServerSelector.
报错。
常见原因
副本集实例发生了主备切换,导致节点角色发生变化。如果您的业务通过主节点(Primary节点)的地址连接,主备切换后实际连接的节点角色变成了从节点(Secondary节点),所以写入失败。