开发者社区 问答 正文

sql指定了FORCESLAVE为什么还会在主服务器执行呢

[font="]这样一条语句
[font="]

[font="]/*FORCE_SLAVE*/ select count(order_id) from order_info WHERE status = 1 and id = 3 and sign = 0 and type = 0;
[font="]

[font="]

[font="]期望是在只读数据库执行的, 但是看日志都在主数据库执行了?
[font="]

求助啊.............

展开
收起
monroe0608 2018-11-05 11:06:52 3891 分享 版权
2 条回答
写回答
取消 提交回答
  • 专注于数据库领域技术
    Resql指定了FORCESLAVE为什么还会在主服务器执行呢
    1、要验证下是否使用的是读写分离地址
    2、要验证下真正发送的请求(是否带了 /*FORCE_SLAVE*/ hint),建议在 ECS 客户端抓包
    3、要看一下是否请求是否被封装在事务中了,事务中的请求会被直接路由到主实例。
    4、要看一下当时只读实例是否存在超过配置阈值的复制延迟。
    2019-01-24 18:14:53
    赞同 展开评论
  • Resql指定了FORCESLAVE为什么还会在主服务器执行呢
    链接用的是读写分离的地址, 也没有问题
    权重主服务器0, 只读是200

    不指定SLAVE 和 MAST的很多select语句也都在主服务器上执行
    2018-11-05 11:39:29
    赞同 展开评论