使用RDS MySQL读写分离功能后查询语句被路由到主实例
更新时间:
概述
当您使用RDS MySQL读写分离功能时,遇到查询语句被路由到主实例,且主实例QPS比只读实例高的情况,请参见文本排查该问题。
详细信息
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
主实例本身负责写请求,且事务中的语句也会被路由到主实例,所以可能主实例QPS会比只读实例多。因此需要查看业务类型是读请求多还是写请求多,且是否使用了大量事务类操作,将SQL语句封装到事务。具体排查步骤如下所示:
- 开通RDS的SQL洞察功能,详情请参见SQL洞察,通过SQL洞察确认对应查询是否封装在事务中,事务的关键词如下所示。
set autocommit=0
set autocommit=1
begin
end
start transaction
commit - 使用SQL洞察排查时,先根据SQL执行时间使用SQL关键词查看对应SQL执行的线程ID,然后根据线程ID查看线程这段时间执行的SQL操作,查看对应的查询是否放到了事务语句中。
- 如果查询的文本大小超过64KB,那么无论这个SQL是否封装在事务中,也只路由到主实例。
- 检查读写分离是否配置了延迟超过一定时间,就不分配请求到只读实例的功能。如果配置了该功能,请在实际条件允许的情况下,取消该功能。
相关文档
更多读写分离介绍请参见如下文档:
适用于
- 云数据库RDS
文档内容是否对您有帮助?