全部产品
  • 首页 > 
  • 云数据库MySQL版只读实例出现线程阻塞问题

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

KB: 94669

 · 

更新时间:2020-12-15 15:18

问题描述

使用RDS实例只读实例时,只读实例出现线程阻塞问题,该问题会影响业务使用。

问题原因

当主实例执行复杂SQL语句后,会将Binlog日志传给只读实例,只读实例会根据日志内容执行相应操作来同步主实例数据,且必须等待所有Binlog日志内容都同步到只读实例才算完成同步,因此执行复杂SQL语句可能会导致部分只读实例出现临时阻塞问题。

解决方案

阿里云提醒您:

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

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

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

  1. 登录异常只读实例,执行以下SQL语句,查看线程占用情况,确定存在阻塞问题。
    show processlist;
  2. 登录RDS管理控制台,单击实例列表
  3. 在页面左上角,选择实例所在地域。
  4. 找到目标实例,单击实例ID。
  5. 依次单击数据库代理>读写分离,然后单击读写分离基本信息右侧区域的设置读写分离

  6. 在设置读写分离框中单击自定义,将出现问题的只读实例权重设置为0,若只有一个只读实例,还需要将主实例设置为100,然后单击确定即可。若有多个只读实例,请根据实际情况调整权重。
    提示:读权重为0,表示读请求不会再发往该实例,则该实例不会对业务产生较大影响。

  7. 在复杂SQL语句执行完毕,并且确定该只读实例已经同步数据后,再将权重修改正常。

适用于

  • 云数据库RDS MySQL版

说明:本文适用于以下版本且开启了读写分离功能的实例。

  • MySQL 8.0三节点企业版
  • MySQL 8.0高可用版
  • MySQL 5.7三节点企业版
  • MySQL 5.7高可用版
  • MySQL 5.6