Mycat 1.6.5 分片导入时报2013代码解决方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mycat 1.6.5 分片导入时报2013代码解决方法相关的知识,希望对你有一定的参考价值。
1.基本信息,mysql 5.7.22 节点: datanode1, datanode2, datanode3
mycat 1.6.5.
2.故障现象: 导入千万级测试数据的时候报2013,2006,或者3009连接中断
ERROR 2013 (HY000) at line 176 in file: ‘/soft/TEST_1KW.sql‘: Lost connection to MySQL server during query
ERROR 2006 (HY000) at line 177 in file: ‘/soft/TEST_1KW.sql‘: MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 142
Current database: mycatdb
-
查看vim log4j2.xml, Mycat log配置情况, 配置改为2500M, 日志级别已经改为 debug
<Policies>
<OnStartupTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="2500 MB"/>
<TimeBasedTriggeringPolicy/>
</Policies>
</RollingFile>
</Appenders>
<Loggers><asyncRoot level="debug" includeLocation="true"> <!--<AppenderRef ref="Console" />--> <AppenderRef ref="RollingFile"/>
3.使用for循环监控日志大小. 日志很快达到251M,
for i in {0..10000};do ls -lh;sleep 1;clear;done
4.mysql挂掉后, 查看导入数据量, 发现只导入了80W数据.
MySQL [mycatdb]> select count(*) from test_ber;
+--------+
| COUNT0 |
+--------+
| 826916 |
+--------+
1 row in set (0.17 sec)
======================================================
-
(期间也做了大量测试, 一一排除其他配置, java,内存等原因)直接说解决方法,
结论: 虽然在日志中写了level=debug, 但是没有生效, 由于日志满了导致mycat挂了. 所以我写了个for循环, 监控日志大小, 并每秒清理一下logs(在mycat logs目录运行):for i in {0..10000};do ls -lh;sleep 1;clear;echo "" > mycat.log;done
方法: 使用for循环
重启myat, 查看mycat监听.
登录mycat, 重新导入数据:
数据正在导入:
查看log大小情况 由于一直被清理, 所以日志很小, 并没有占满:
导入完成: 无报错
查看数据量: 1KW数据, 数据完整.
感谢大家关注.
以上是关于Mycat 1.6.5 分片导入时报2013代码解决方法的主要内容,如果未能解决你的问题,请参考以下文章
Mycat和Sharding-jdbc的区别Mycat分片joinMycat分页中的坑Mycat注解