在使用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白名单也会同步更新。
在高延迟网络环境下通过代理地址订阅Binlog(Binlog Dump)时,Binlog Dump的网络传输吞吐容易成为性能瓶颈,可能导致下游复制延迟堆积问题。建议通过配置直连数据库节点(在应用程序或服务中直接设置数据库连接信息)的方式拉取Binlog。
迁移可用区可能会导致就近访问失效:
迁移可用区后,默认可就近访问新可用区,原可用区的就近访问失效。若修改了代理连接地址的目标可用区,使其与默认可用区不一致,则对应可用区的就近访问失效。示例场景如下:
场景
原代理信息
目标代理信息
代理实例当前可用区
代理地址
就近访问
代理实例目标可用区
代理地址默认可用区
代理地址目标可用区
就近访问
场景1:
可用区A + 可用区B
迁移至可用区A + 可用区C
可用区A
代理地址a
可用区A
可用区A
可用区A
可用区A
可用区A
可用区C
失效
可用区B
代理地址b
可用区B
可用区C
可用区C
可用区C
可用区C
可用区D
失效
场景2:
可用区A + 可用区B
迁移至可用区C + 可用区D
可用区A
代理地址a
可用区A
可用区C
可用区C
可用区C
可用区C
可用区E
失效
可用区B
代理地址b
可用区B
可用区D
可用区D
可用区D
可用区D
可用区E
失效
就近访问功能仅支持独享型代理的部署形式1,若已开启就近访问功能,当要变更为通用型代理或其它部署形式,需要先关闭就近访问功能,才可以变更配置。如何关闭就近访问功能,请参见设置就近访问。关于代理部署架构的信息,请参见代理部署架构。
暂不兼容将代理的网段配置为10.1.2.0/24
。