读写分离是指通过一个读写分离的连接地址实现读写请求的自动转发。创建只读实例后,您可以开通读写分离功能,通过RDS的读写分离连接地址,写请求自动访问主实例,读请求按照读权重设置自动访问各个实例。
Proxy负载均衡基于负载的自动调度策略,实现多个只读节点间的负载均衡。
备注:目前支持的局点有华北、广州4、苏州、深圳。
功能限制
注意由于开启读写分离时,系统会自动删除已有的帐户rdsProxy,然后自动创建新的rdsProxy帐户,关闭读写分离时,系统也会自动删除已有的帐户rdsProxy。因此,建议您不要创建rdsProxy帐户,防止被系统误删除。
- 开启读写分离功能,需要RDS for MySQL为主备实例,并且主实例规格大于或等于4U8GB。
- 读写分离地址都是内网地址,只能通过内网连接。
- 开通读写分离时必须保证至少有一个只读实例,且主实例和只读实例必须处于同一Region。
- 开启读写分离功能后,删除RDS for MySQL主实例,会同步删除只读实例,并关闭读写分离功能。
- 开启读写分离功能后,主实例和只读实例均不允许修改数据库端口、安全组和内网地址,建议先修改完端口或内网地址后再启用读写分离。
- 读写分离功能不支持SSL加密。
- 读写分离功能不支持压缩协议。
- 读写分离不支持事务隔离级别READ-UNCOMMITTED。
- 如果执行了Multi-Statements,当前连接的后续请求会全部路由到主节点,需断开当前连接并重新连接才能恢复读写分离。
- 使用读写分离的连接地址时,事务请求都会路由到主实例,不保证非事务读的一致性,业务上有读一致性需求可以封装到事务中。
- 使用读写分离的连接地址时, LAST_INSERT_ID() 函数仅支持在事务中使用。
- 使用读写分离的连接地址时,show processlist命令的执行结果不具有一致性。
- 使用读写分离的连接地址时,不支持使用show errors和show warnings命令。
- 使用读写分离的连接地址时,不支持用户自定义变量,如SET @variable语句。
- 使用读写分离的连接地址时,如果存储过程(procedure)和函数(function)中依赖了用户变量,即@variable,则运行结果可能不正确。