mycat引起的insert后马上select不到数据的故障分析

Posted xiaohanlin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mycat引起的insert后马上select不到数据的故障分析相关的知识,希望对你有一定的参考价值。

由于有2个task表t_task和e_task,代码中Insert了t_task后马上select t_task然后把结果Insert到e_task,结果发现经常e_task会没有任何数据。

原因分析:使用mycat后读写分离,select语句会去从库读取t_task,这个时候很可能从库还没有把主库的t_task同步到e_task,导致查询不出来t_task所以e_task也没有插入。

所以对于这种毫秒级的insert后马上查询,可以用如下的语句保证select语句走mycat的主库,解决这个bug

<select id="selectOneTaskByCode" resultMap="BaseResultMap">
/*#mycat:db_type=master*/ select * from t_task where task_code=#{taskCode}
</select>

以上是关于mycat引起的insert后马上select不到数据的故障分析的主要内容,如果未能解决你的问题,请参考以下文章

MyCat不支持的SQL语句类型

mybatis执行insert后马上能获取自增主键的语句写法

MySQL MyCAT 读写分离实战

Mysql读写分离(Mycat版)

MyCat教程mysql主从复制实现

mysql mycat 1.6.6.1-release 批量 insert 数据丢失问题(续)