我在项目中使用mycat进行分表,分了20个表,然后发现偶尔会出现分批次insert数据丢失问题。
比如从日志发现一共17020条记录,分批每次1000条insert入库,最后只insert成功了13020条。看了java的日志和mycat的日志没有发现任何error。
而且我查看了mybatis 的debug日志 ,除了第5个批量Insert 1000条 打印的 2020-01-10 14:13:40.325 http-nio-9080-exec-3 DEBUG org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:159) - <== Updates: 1
其他地方都是正常打印的 Updates: 1000 2020-01-10 14:13:39.116 http-nio-9080-exec-3 DEBUG org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:159) - <== Updates: 1000
而且我查了数据发现前面4000条数据丢失了,也就是说打印 <== Updates: 1 之前的4次分批1000条insert都丢失了,java和mycat没有任何报错。
这个问题困扰了我很久,可以看我之前写的2个文章也是解决这个问题的,但是都没有完全解决,小概率还是会发生丢失数据问题。我猜测要么是mycat的问题或者就是spring 的事务没有配置正确。
https://www.cnblogs.com/xiaohanlin/p/11850508.html
https://www.cnblogs.com/xiaohanlin/p/114927