首页 > 数据库 >java批量执行atax同步MySQL表时出现卡住问题处理

java批量执行atax同步MySQL表时出现卡住问题处理

时间:2023-10-16 18:33:29浏览次数:45  
标签:java sun xxx 表时 atax ssl mysql security

中断问题和datax中自带的MySQL jar包版本有关,更换后即可。

背景:有个需求需要把服务器上的mysql业务库数据同步到另一台服务器上,我选择了datax来做批量同步操作。

现象:java批量执行的代码写好后,在自己电脑(win10)执行没问题,换了一台电脑(也是windows server 2019),报以下错误:

// 执行以下java命令(批量同步数据)
java -cp C:\xxx\data_sync\datasync-1.0-SNAPSHOT.jar com.xxx.Main C:\xxx\data_sync\tables.txt "sap"
// 打印以下日志后不再输出其他任何日志
2023-10-16 16:45:51.317 [job-0] INFO OriginalConfPretreatmentUtil - table:[table_001] all columns:[
id,type,name,visible,ext,gmt_create,gmt_modified
].

于是把java中执行datax的指令(python命令)提出来单独执行,可以执行成功,但会打印以下异常(该异常不影响执行成功)

Mon Oct 16 16:45:51 GMT+08:00 2023 WARN: Establishing SSL connection without server's identity verification is not recommended.
According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set.
For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'.
You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server
certificate verification.

 WARN: Caught while disconnecting...

EXCEPTION STACK TRACE:

** BEGIN NESTED EXCEPTION **

javax.net.ssl.SSLException
MESSAGE: closing inbound before receiving peer's close_notify

STACKTRACE:

javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify
        at sun.security.ssl.Alert.createSSLException(Alert.java:133)
        at sun.security.ssl.Alert.createSSLException(Alert.java:117)
        at sun.security.ssl.TransportContext.fatal(TransportContext.java:340)
        at sun.security.ssl.TransportContext.fatal(TransportContext.java:296)
        at sun.security.ssl.TransportContext.fatal(TransportContext.java:287)
        at sun.security.ssl.SSLSocketImpl.shutdownInput(SSLSocketImpl.java:737)
        at sun.security.ssl.SSLSocketImpl.shutdownInput(SSLSocketImpl.java:716)
        at com.mysql.jdbc.MysqlIO.quit(MysqlIO.java:2241)

解决方案:根据这些异常信息,有两种解决方案:

1.连接数据库的Jdbc URL后面添加useSSL=false,如jdbc:mysql://xxx.xxx.xxx.xxx:3306/erp?useUnicode=true&characterEncoding=UTF-8&useSSL=false
我的是需要SSL加密连接的,已经配置了useSSL=true,所以这个方案不合适我的场景。

2.连接数据库的驱动版本可能有问题,需要更换驱动版本。
我把datax\plugin\reader\mysqlreader\libs和datax\plugin\writer\mysqlwriter\libs中mysql驱动jar,从mysql-connector-java-5.1.39.jar更换成mysql-connector-java-5.1.47.jar,不行,然后更换成mysql-connector-java-5.1.48.jar,问题解决,不再卡住。

 

标签:java,sun,xxx,表时,atax,ssl,mysql,security
From: https://www.cnblogs.com/atai/p/17768068.html

相关文章

  • 详解Java HashMap
    HashMap介绍HashMap遍历方式HashMap的遍历,大体上可分为4类,而每种类型下又有不同的实现方式,总共的遍历方式可分为7种:迭代器遍历:使用迭代器对EntrySet遍历;使用迭代器对KeySet遍历;foreach遍历:使用foreach对EntrySet遍历;使用foreach对KeySet遍历;lambda表达式遍历;stre......
  • java程序的运行流程(jdk,jre,jvm的关系)
    资料来源于第8课:https://www.bilibili.com/video/BV1o841187iP?p=8&spm_id_from=pageDriver&vd_source=c3a656550cf5d38944e8878bb7026cbc1.我们手写的java 代码为.java后缀文件储存在src当中。2.经过jdk中的bin中的javac.exe文件编译出.class文件的字节码。3.字节码储存在ou......
  • java中接口的实现方式
    目录Java8接口初始化的几种场景通过接口实现类的方式实现1.定义接口2.接口实现3.测试方法通过匿名内部类的来实现接口实现3.测试方法通过方法的引用1.实现通过箭头函数Lambda表达式的方式1.定义接口2.接口实现3.测试方法将接口作为方法参数1.定义一个方法2.调用方法并......
  • Java 中的异常处理
    在Java中,异常是中断程序正常流程的事件。当发生意外情况时,会引发异常。如果没有正确的处理,这些异常可能会使您的程序崩溃。Java提供了强大的异常处理机制,确保您的代码能够优雅地处理意外情况。异常可能由多种因素引起,例如:用户输入错误硬件故障网络连接错误数据库错误编程......
  • Java拾贝第三天——面向对象2
    继承性面向对象三大特性:封装性,继承性,多态性。继承的作用是避免出现大幅度的相同代码,提高代码的复用性。//现有一个Person类,拥有name,age属性classPerson{privateStringname;privateintage;//构造方法和setter,getter现在有一个Student类,它和Person类的属性......
  • Java Assert断言使用
    目录断言所谓的assertion,是jdk1.4后加入的新功能。作用它主要使用在代码开发和测试时期,用于对某些关键数据的判断,如果这个关键数据不是你程序所预期的数据,程序就提出警告或退出。后续当软件正式发布后,可以取消断言部分的代码。java中使用assert作为断言的一个关......
  • java web
    0.了解maven1.了解http协议2.了解tmcat的作用3.了解请求响应4.了解分层解耦5.了解servlet原理Maven为java世界引入了一个新的依赖管理系统jar包管理jar包升级时修改配置文件即可......
  • Java设计模式
    七大设计原则开闭原则:是指一个软件实体如类、模块和函数应该对扩展开放,对修改关闭依赖倒置原则:是指设计代码结构时,高层模块不应该依赖底层模块,二者都应该依赖其抽象而不依赖于具体。单一职责原则:是指一个Class/Interface/Method只负责一项职责。接口隔离原则:是指用多个专......
  • Java常见集合类学习笔记
    List1.ArrayListVectorLinkedList区别​ ArrayList和Vector底层实现基本相同,都是基于数组实现的,只是Vector的方法用synchronized修饰;所以ArrayList是线程不安全的,Vector是线程安全的。​ LinkedList底层基于双向链表实现,方法没有用synchronized修饰,线程不安全。2.数组和......
  • Java大文件上传详解及实例代码
    前言:上周遇到这样一个问题,客户上传高清视频(1G以上)的时候上传失败。一开始以为是session过期或者文件大小受系统限制,导致的错误。查看了系统的配置文件没有看到文件大小限制,web.xml中seesiontimeout是30,我把它改成了120。但还是不行,有时候10分钟就崩了。同事说,可能是客户这里服......