全部产品
Search
文档中心

云数据库 MongoDB:副本集实例连接说明

更新时间:Nov 05, 2024

云数据库MongoDB副本集实例提供了主从节点和只读节点的单独连接地址,以及用于应用程序连接的高可用ConnectionStringURI和ReadOnly ConnectionStringURI地址。本文介绍副本集实例连接地址的获取方式及连接说明。

连接地址说明

如何选择连接地址

生产环境下,建议通过ConnectionStringURI地址连接实例以实现负载均衡和高可用。在具有只读节点的情况下,建议仅有读操作的应用程序通过ReadOnly ConnectionStringURI地址连接实例。由于主备切换可能导致节点角色变化,不建议通过单节点连接地址连接实例。

连接地址类型

地址类型

说明

ConnectionStringURI地址

ConnectionStringURI地址是实现负载均衡及高可用的地址,该地址包含实例所有节点的地址,连接该地址可以执行数据库的读写操作。

重要
  • 生产环境的应用程序建议通过ConnectionStringURI地址连接实例,不会因为主备切换而影响应用的读写操作。

  • 未设置readPreferencereadPreferenceTags参数时,会将读请求发送到主节点。

ConnectionstringURI SRV地址

SRV地址可以简化集群的维护和管理,您无需因为增删节点而修改连接地址,客户端可以无感知地与集群交互,简化了应用程序的设计和维护。

推荐生产环境的应用程序通过ConnectionStringURI连接数据库,客户端自动将请求发送到实例的多个节点上,实现负载均衡。当某个节点出现故障时,客户端能自动进行故障切换,将请求发送到状态正常的节点上。

重要
  • 默认情况下控制台不显示SRV地址,如需使用请单击数据库连接页面的申请私网SRV地址申请公网SRV地址

  • 申请公网SRV地址前,您需要先开通实例的公网地址。

  • SRV地址仅支持云盘版实例。

ReadOnly ConnectionStringURI地址

ReadOnly ConnectionStringURI地址只包含实例所有只读节点的地址,连接该地址会将读请求发送到只读节点。

说明
  • 在具有只读节点的情况下,建议仅有读操作的应用程序通过该地址连接实例。

  • 只有实例中已存在只读节点时,您才可以看到ReadOnly ConnectionStringURI地址。

  • 当实例中的某个只读节点出现故障时,读请求会自动切换到下一个只读节点,不会影响应用的读操作。如果所有的只读节点都出现了故障,继续使用该连接地址将会出现连接异常。

Primary地址

主节点的连接地址,连接该地址可以执行数据库的读写操作。

重要

不建议在生产环境的应用程序通过该地址连接实例。当实例触发主备切换后,主节点地址会发生变化,您需要连接新的主节点确保读写操作不受影响。

Secondary地址

从节点的连接地址,连接该地址仅能执行数据库的读操作。

重要

不建议在生产环境的应用程序通过该地址连接实例。当实例触发主备切换后,从节点可能会升级为主节点,主节点地址支持写操作,从而带来数据与权限的安全问题。

ReadOnly地址

只读节点的连接地址,连接该地址仅能执行数据库的读操作。

说明

该地址仅在实例中存在只读节点时显示。

连接地址格式说明

ConnectionStringURI地址

格式:

mongodb://<username>:<password>@<host1>:<port1>,<host2>:<port2>,...,<hostN>:<portN>/<database>?replicaSet=<replicaSet_value>[&authSource=<authenticationDatabase>][&readPreference=<readPreference_value>][&readPreferenceTags=<readonly_Tags>]

参数说明:

参数

说明

<username>

数据库账号的名称,默认为root。

<password>

数据库账号的密码。

<host>

主节点、从节点和只读节点的域名信息

<port>

主节点、从节点和只读节点的端口

<database>

要访问的数据库名称,默认为admin。

replicaSet=<replicaSet_value>

该参数可以将读请求发送到副本集实例的所有节点。<replicaSet_value>为实例高可用连接地址的唯一标识ID。

authSource=<authenticationDatabase>(可选)

该参数用于指定数据库账号所属的数据库。<authenticationDatabase>为鉴权数据库名称。如果不配置该参数,<database>会作为鉴权数据库。

readPreference=[primary | primaryPreferred | secondary | secondaryPreferred](可选)

该参数可以实现读写分离和负载均衡,能够将写请求发送到主节点,将读请求发送到参数指定节点,取值说明如下:

  • readPreference=primary:读请求仅发送到主节点。

  • readPreference=primaryPreferred:读请求优先发送到主节点。如果主节点故障,将读请求发送到从节点和只读节点。

  • readPreference=secondary:读请求仅发送到从节点和只读节点。如果从节点和只读节点都出现故障,读请求失败,不会发送到主节点。

  • readPreference=secondaryPreferred:读请求优先发送到从节点和只读节点。如果从节点和只读节点都出现故障,该参数将读请求发送到主节点。

说明

当读请求发送到从节点和只读节点时,可能会出现负载不均的情况,如果需要进一步指定节点,请设置参数readPreferenceTags。

readPreferenceTags=<readonly_Tags>(可选)

该参数可以将读请求优先发送到标签对应的节点。通常与参数readPreference一起使用,与primary模式不兼容。<readonly_Tags>为只读节点的标签键值对列表,支持的类型如下:

  • readPreferenceTags=role:electable:优先读从节点。

    说明

    该选项仅对云盘版实例生效。

  • readPreferenceTags=role:readonly:优先读只读节点。

MongoDB实例可以灵活使用readPreferencereadPreferenceTags参数,通过不同标签的组合,实现不同的场景需求:

读请求主节点响应策略

读请求发送的节点

参数组合方案

读请求失败情况下,读请求发送到主节点

优先读主节点

readPreference=primaryPreferred

优先读从节点和只读节点

readPreference=secondaryPreferred

优先读从节点

说明

如果从节点故障,读请求发送到主节点。

readPreference=secondaryPreferred&readPreferenceTags=role:electable

优先读只读节点

说明

如果只读节点故障,读请求发送到主节点。

readPreference=secondaryPreferred&readPreferenceTags=role:readonly

读请求失败情况下,读请求不发送到主节点

仅读从节点和只读节点

readPreference=secondary

仅读从节点

说明

如果从节点故障,读取操作失败。

readPreference=secondary&readPreferenceTags=role:electable

仅读只读节点

说明

如果只读节点故障,读取操作失败。

readPreference=secondary&readPreferenceTags=role:readonly

示例:

mongodb://root:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717,dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-6108****

ConnectionstringURI SRV地址

格式:

mongodb+srv://<username>:<password>@<srv-host>/<database>?<options>

参数说明:

参数

说明

mongodb+srv://

连接字符串的前缀,表示使用DNS SRV记录进行服务发现。

<username>

数据库账号的名称。

<password>

数据库账号的密码。

<srv-host>

主机名。

<database>

要访问的数据库名称,默认为admin。

<option>

其他可选参数。

说明

SVR连接的SSL选项默认值为true,如果您不需要使用SSL加密连接,需要在连接串上添加参数ssl=false。更多可选参数的介绍,请参见MongoDB官网文档

示例:

数据库账号为test,所属数据库为admin。

mongodb+srv://test:****@dds-bp19215393a0****-srv.mongodb.nosql.aliyuncs.com/admin?ssl=false

ReadOnly ConnectionStringURI地址

格式:

mongodb://<username>:<password>@<host1>:<port1>,<host2>:<port2>,...,<hostN>:<portN>/<database>?readPreference=secondary&readPreferenceTags=role:readonly&replicaSet=<replicaSet_value>[&authSource=<authenticationDatabase>]

参数说明:

参数

说明

<username>

数据库账号的名称,默认为root。

<password>

数据库账号的密码。

<host>

只读节点的域名信息

<port>

只读节点的端口

<database>

要访问的数据库名称,默认为admin。

readPreference=secondary&readPreferenceTags=role:readonly

该参数可以将读请求发送到只读节点。readPreferenceTags表示只读节点的标签键值对列表,固定取值为role:readonly。该参数不允许修改。

replicaSet=<replicaSet_value>

该参数可以将读请求发送到副本集实例的所有节点。<replicaSet_value>为实例高可用连接地址的唯一标识ID。

authSource=<authenticationDatabase>(可选)

该参数用于指定数据库账号所属的数据库。<authenticationDatabase>为鉴权数据库名称。如果不配置该参数,<database>会作为鉴权数据库。

示例:

mongodb://root:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/admin?readPreference=secondary&readPreferenceTags=role:readonly&replicaSet=mgset-6108****

Primary地址

格式:

<host>:<port>

参数说明:

参数

说明

<host>

主节点的域名信息

<port>

主节点的端口

示例:

dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717

Secondary地址

格式:

<host>:<port>

参数说明:

参数

说明

<host>

从节点的域名信息

<port>

从节点的端口

示例:

dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717

ReadOnly地址

格式:

<host>:<port>

参数说明:

参数

说明

<host>

只读节点的域名信息

<port>

只读节点的端口

示例:

dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717

连接地址网络类型

网络类型

说明

私网

  • 专有网络:专有网络是具备更高安全性和性能的一种隔离网络。云数据库MongoDB实例默认提供专有网络连接地址。

  • 经典网络:非隔离网络,仅依靠云服务的安全组或白名单策略进行防护。新购实例不再支持经典网络,请参见【通知】云数据库MongoDB新购买实例不再支持经典网络

公网

由于通过公网连接实例存在一定的安全风险,云数据库MongoDB实例默认未提供公网连接地址。如果您需要公网连接可手动申请,申请方法请参见(可选)申请公网连接地址

获取数据库连接地址

  1. 访问MongoDB副本集实例列表,在上方选择资源组和地域,然后单击目标实例ID。

  2. 在目标实例页面的左侧导航栏,单击数据库连接

登录MongoDB数据库

  1. 获取如下信息:

    • 数据库连接地址,获取方法请参见数据库连接地址

    • 数据库账号,初始账号为root。

      说明

      不建议在生产环境中直接使用root账号连接数据库。您可以创建用户并分配权限,详情请参见使用DMS管理MongoDB实例的账号

    • 数据库账号对应密码。如果没有设置或忘记密码,您可以设置或修改密码,具体方法请参见(可选)重置密码

    • 要访问的数据库。当数据库账号为root时,对应的数据库为admin。

  2. 登录数据库。您可以选择以下任意一种方法登录:

常见的连接场景

相关问题