验证RDS读写分离是否正确分发只读请求

目前RDS-Mysql支持开通读写分离,然后应用使用读写分离的地址提交请求的时候,就能够将符合条件的读请求分发到只读实例上执行,从而分担主实例上读请求的压力。

但是在使用过程中,并不是所有的读都会分发到只读实例实例上执行,比方说处于事务中的读。(详细请参考:https://help.aliyun.com/document_detail/96073.html?spm=a2c4g.11174283.6.628.32b94c22UhkIsT

验证RDS读写分离是否正确分发只读请求

在处理问题的过程中,经常会有用户反映,为什么我只读实例上的CPU压力特别低,并且业务中的一些读请求都没有在上面运行,针对这种情况,可能就是因为在应用中有开启事务,然后读请求就被发送到主实例上执行了。

对于这种情况的排查,我建议使用下面的方法进行操作:

  1. 首先在主实例还有只读实例上开启一下sql审计。
  2. 配置分离的权重:主实例为0,只读实例为100。
  3. 然后通过mysql命令行这种方式连接读写分离的地址,提交一个简单的读请求(没有包含在事务里面)。
  4. 最后在主实例和只读实例的sql审计日志中查看,看到底是在哪里执行的之前的select操作。

如果发现了这样的方式提交读请求还是到主实例上执行的话,那么请联系阿里云进行排查(发生的机率太小);一般如果是因为开启了事务造成的话,在审计日志中也是能够看到的。

上一篇:Java面试零碎知识点


下一篇:本地Mysql和RDS搭建主从环境