本文介绍使用RDS MySQL独享代理时的注意事项。
- 当主实例或只读实例变更配置时可能会出现连接闪断。
- 使用代理连接地址时,如果没有启用事务拆分,事务请求都会路由到主实例。
- 使用代理连接地址进行读写分离时,不保证非事务读的一致性,业务上有读一致性需求可以封装到事务中,或者使用Hint语法。
- 使用代理连接地址时,
show processlist
会将所有节点的结果合并后返回。 - 如果执行了Multi-Statements或存储过程,当前连接的后续请求会全部路由到主节点,需断开当前连接并重新连接才能恢复读写分离。
- 独享代理的连接模型是1:N(即您的一个业务连接到达代理后,代理会连接到主实例和所有配置的只读实例),独享代理本身并没有最大连接数的限制,连接数的限制主要由后端数据库中计算节点的规格决定。未开启事务级连接池时,每条由客户端发起的连接都需要在后端主节点和所有只读节点上各创建一个对应的连接。建议开通独享代理后,主实例和只读实例的连接数规格尽量一致,否则业务的连接数会受限于最小规格的实例连接数限制。
- 开启独享代理后,新增只读实例或只读实例重启,只有新的连接的请求才会路由到新的只读实例或重启的只读实例,老的连接请求不会路由过去。
- 主实例与只读实例的参数max_prepared_stmt_count需要一致。
- 如果使用MySQL命令行进行连接并使用Hint语句,需要在命令中增加
-c
选项,否则Hint会被MySQL命令行工具过滤。更多Hint语法说明,请参见使用Hint语法。