全部产品
云市场

云数据库MySQL版只读实例出现线程阻塞问题

问题描述

使用RDS实例时,只读实例出现阻塞问题,严重影响了业务。

 

问题原因

当主实例执行复杂SQL语句后,将BINLOG日志传给只读实例,只读实例根据日志内容执行相同操作来同步主实例数据,因此执行复杂SQL语句可能会导致在部分只读实例上产生临时阻塞,必须等待所有BINLOG日志内容都被执行完毕才会完成同步。

 

解决方案

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

参考如下步骤,将只读实例的权重修改为0,使读请求暂时不发往该只读实例。

提示:只有开通了读写分离功能才可以设置读权重。

  1. 当发现无法同步的只读实例时,可以登录只读实例,执行如下SQL语句,查看线程占用情况,确定存在阻塞问题。
    show processlist;
  2. 登录RDS管理控制台
  3. 在页面左上角,选择实例所在地域。
  4. 找到目标实例,单击实例ID。
  5. 在左侧导航栏中单击 数据库代理然后单击右侧 设置读写分离
  6. 在设置读写分离框中单击 自定义,将出现问题的只读实例权重设置为0,然后单击 确定 即可。
    提示读权重为0,表示读请求不会再发往该实例,则该实例不会对业务产生较大影响。
  7. 在复杂SQL语句执行完毕,并且确定该只读实例已经同步数据后,再将权重修改正常。

 

适用于

  • 云数据库 RDS MySQL 版

注:仅适用于MySQL 5.6/5.7/8.0高可用版或三节点企业版(原金融版)。

 

如果您的问题仍未解决,您可以在阿里云社区免费咨询,或提交工单联系阿里云技术支持。