更新时间:2022-05-17 GMT+08:00
数据库代理使用规范建议

rdsProxy是数据库代理帐户,属于RDS数据库内置账号,建议您不要创建同名帐户,避免影响读写分离功能正常运行。
功能限制
- 开启读写分离功能后,删除RDS for MySQL主实例,会同步删除只读实例,并关闭读写分离功能。
- 读写分离不支持RDS for MySQL8.0的caching_sha2_password身份认证插件。
- 开启读写分离功能后,主实例和只读实例均不允许修改数据库端口、安全组和内网地址。
- 读写分离功能不支持SSL加密。
- 读写分离功能不支持压缩协议。
- 读写分离不支持事务隔离级别READ-UNCOMMITTED。
- 如果执行了Multi-Statements,当前连接的后续请求会全部路由到主节点,需断开当前连接并重新连接才能恢复读写分离。
- 使用读写分离的连接地址时,事务请求都会路由到主实例(可以使用事务拆分功能对事务中写之前的读请求进行拆分),不保证非事务读的一致性,业务上有读一致性需求可以封装到事务中。
- 使用读写分离的连接地址时,LAST_INSERT_ID()函数仅支持在事务中使用。
语法限制
读写分离请求路由原理:客户的前端请求会根据当前数据库节点权重的配置,随机路由到后端任一数据库节点。
因此,一些SQL语句多次执行的结果可能存在差异,部分语句列举如下:
- 使用读写分离的连接地址时,show processlist命令的执行结果不具有一致性。
- 使用读写分离的连接地址时,不支持kill query类型操作。
- 使用读写分离的连接地址时,不支持使用show errors和show warnings命令。
- 使用读写分离的连接地址时,不支持用户自定义变量,如SET @variable语句。
- 使用读写分离的连接地址时,如果存储过程(procedure)和函数(function)中依赖 了用户变量,即@variable,则运行结果可能不正确。
父主题: 数据库代理(读写分离)
