主备切换

本文介绍云数据库 MongoDB 版主备切换相关问题。

为什么实例会发生主备切换?

云数据库MongoDB实例发生主备切换的常见原因如下:

  • 人工操作:您或者您授权的阿里云技术专家手动发起的主备切换。

  • 风险隐患:阿里云检测到实例存在潜在风险,此类风险可能会影响实例的正常使用。系统会自动下发主动运维任务来处理此类风险项,并在可维护时间段触发主备切换,替换掉存在风险的节点。

    您可以在历史事件中查询已处理的运维任务,也可以在计划内事件中管理待处理的运维任务。

  • 宿主机下线:云数据库MongoDB实例中节点所在的机器出现异常,可能会影响实例的正常使用。系统会将机器进行下线处理,并触发主备切换,替换掉存在风险的节点。

  • 实例异常:阿里云检测到实例发生故障,无法正常使用时,系统会立即触发主备切换,及时恢复实例,缩短故障影响时长。

宿主机下线或实例异常导致的主备切换会以站内信或邮件等形式通知到您,通知内容如下:

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

主备切换有什么影响?

影响:

  • 主备切换过程中,会出现1次闪断现象,持续时间约30秒。

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

业务部署建议:

  • 请提前为业务设计重连机制和异常处理能力,连接闪断后可自动重连,保障业务稳定运行。

  • 推荐生产环境的应用程序通过ConnectionStringURI SRVConnectionStringURI地址连接数据库。当某个节点出现故障时,不会因为主备切换而影响应用的读写操作,更多信息,请参见副本集实例连接说明分片集群实例连接说明

如何手动设置主备切换?

云数据库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节点),所以写入失败。

解决方案

  • 手动切换节点角色,将业务实际连接的单节点地址对应节点切换为主节点。

  • 推荐生产环境的应用程序通过ConnectionStringURI SRVConnectionStringURI地址连接数据库。当某个节点出现故障时,不会因为主备切换而影响应用的读写操作,更多信息,请参见副本集实例连接说明

  • 请为业务设计重连机制和异常处理能力,连接闪断后可自动重连,保障业务稳定运行。