vlambda博客
学习文章列表

mycat的问题终于解决了


耗时了三天吧,终于解决了读写分离环境出现的一个问题。


表面现象是在批量插入的时候报错了,看日志文件,是MySQL驱动包里的代码报错了。



打了断点后,能看到报错的时候返回的一个数组字段是空的,导致报错的。


但问题肯定不在这,项目直连主库的时候是可以执行成功的,这连了中间件,就会报错。


这还了得?盘它!


虽然确定了是mycat的问题,但是因为实在是太难排查了,所以还是看了好大会儿的业务代码。



mycat官网还有一篇介绍了很多个mycat开发的文章,里面的QQ我都加了一遍,就一个同意了,问了他,也没回我。上面十几个邮箱,我都发邮件了,发了两次,现在了还没收到回信。


找以前编译MySQL8源码时在博客园认识的一个DBA问了,人家说用自己自研的,再一问,在百度工作……


留下了羡慕的泪水……


mycat源码也下下来了,也看了网上的介绍,查询统一会走哪个方法,返回数据统一走哪个方法,也在mycat服务器上装了arthas,监控代码也有数据,但是,看不出来问题在哪里。


中间看了业务代码,把批量插入改为之前的代码,结果试了几次都成功了。


之前的批量插入

insert into table (field) values (),(),();

后来统一给改了,支持多语句执行,适用所有的数据库

insert into table(field) values();insert into table(field) values();


当然数据库jdbc连接参数要加一个allowMultiQueries=true


反馈给领导后,领导觉得还是找找mycat的问题吧。


我真是,当初就不该来看这个问题,本来没我事的,好奇心太重。


看了几天了,真是头疼,心想这不是真要读mycat源码吧,虽然也是Java写的,but,不想看啊。


昨天,就在昨天,终于解决了这个问题。


解决方法嘛,升级。


从1.6.5升级到了1.6.7.6。


完了,就这么简单。


下班走人。