文档

数据库代理注意事项

更新时间:

在使用RDS MySQL数据库代理前,请了解本文介绍的注意事项,以便您能够更加顺利地使用数据库代理服务。

  • 通用版代理免费。独享版代理、只读实例和主实例均独立收费,三者互不干扰。

  • 未开通数据库代理连接保持功能时,当主实例或只读实例变更配置时可能会出现实例切换。实例切换的影响请参见实例切换的影响

  • 在代理地址上新增只读实例,或者代理地址上的只读实例发生重启时,该代理地址上新连接和存量老连接的请求都会路由到新的只读实例或重启的只读实例。

  • 在代理地址上删除只读实例时,该只读实例上正在执行的语句会报错。如果需要在不影响使用的情况下下线单个只读实例,需要将代理版本升级至2.8.41及以上,并确保代理的读写属性设置为读写。详细操作请参见升级数据库代理内核小版本设置读写属性和读权重

  • 数据库代理地址暂不支持压缩协议。

  • RDS MySQL 高可用系列的主实例与只读实例的参数max_prepared_stmt_count需要一致。

  • 数据库代理的连接模型是1:N(即您的一个业务连接到达代理后,代理会连接到主实例和所有配置的只读实例),数据库代理本身并没有最大连接数的限制,连接数的限制主要由后端数据库中计算节点的规格决定。未开启事务级连接池时,每条由客户端发起的连接都需要在后端主节点和所有只读节点上各创建一个对应的连接。建议开通数据库代理后,主实例和只读实例的连接数规格尽量一致,否则业务的连接数会受限于最小规格的实例连接数限制。

  • 使用代理连接地址时,如果没有启用事务拆分,事务请求都会路由到主实例。

  • 使用代理连接地址进行读写分离时,不保证非事务读的一致性,业务上有读一致性需求可以封装到事务中,或者使用Hint语法

  • 使用代理连接地址时,show processlist会将所有节点的结果合并后返回。

  • 由于默认开启设置连接池功能,show processlist可能会显示闲置的用户连接。

  • 如果执行了Multi-Statements或存储过程,当前连接的后续请求会全部路由到主节点,需断开当前连接并重新连接才能恢复读写分离。

  • 如果使用MySQL命令行进行连接并使用Hint语句,需要在命令中增加-c选项,否则Hint会被MySQL命令行工具过滤。更多Hint语法说明,请参见使用Hint语法

  • 主实例被锁定期间,代理不会被释放,可继续提供读服务,但无法提供写服务。

  • 主实例若被释放,数据库代理自动跟随主实例释放,释放后独享型代理不再产生费用。

  • 由于代理目前不支持切换VPC和VSwitch,对主实例修改VPC时,代理的VPC并不会随之改变,代理还是能够与主实例保持连通,但无法使用修改后的VPC访问代理连接地址。

  • 在使用高权限账号单独配置账号的host范围时,代理支持配置为10.1.2.%格式的网段。

  • 数据库代理的IP白名单和RDS主实例的IP白名单保持一致。RDS主实例的IP白名单更新,数据库代理的IP白名单也会同步更新。

说明

暂不兼容将代理的网段配置为10.1.2.0/24