DataX 첫 추출 데이터 기록 오류 처리 (원본 라 이브 러 리, 대상 라 이브 러 리 모두 연결 실패)

56779 단어 빅 데이터
데이터 환경
  • DataX 설치 환경: 가상 컴퓨터, CentOS 7
  • 원본 데이터베이스: 클 라 우 드 호스트, MySQL 8.0
  • 대상 데이터베이스: 로 컬, MySQL 8.0
  • 소프트웨어 환경
  • DataX 수요 환경 (dataX 홈 페이지 참조):
  • Maven 3.x
  • Java 1.8
  • python 2.7

  • DataX 설치 디 렉 터 리: /opt/module/dataX
  • 원본 라 이브 러 리 와 대상 라 이브 러 리 설정
  • DataX 홈 디 렉 터 리 로 전환
  • cd /opt/module/dataX
    
  • 프로필 템 플 릿 보기
  • python bin/datax.py -r mysqlreader -w mysqlwriter
    
    DataX (DATAX-OPENSOURCE-3.0), From Alibaba !
    Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.
    
    
    Please refer to the mysqlreader document:
         https://github.com/alibaba/DataX/blob/master/mysqlreader/doc/mysqlreader.md 
    
    Please refer to the mysqlwriter document:
         https://github.com/alibaba/DataX/blob/master/mysqlwriter/doc/mysqlwriter.md 
     
    Please save the following configuration as a json file and  use
         python {DATAX_HOME}/bin/datax.py {JSON_FILE_NAME}.json 
    to run the job.
    
    {
        "job": {
            "content": [
                {
                    "reader": {
                        "name": "mysqlreader", 
                        "parameter": {
                            "column": [], 
                            "connection": [
                                {
                                    "jdbcUrl": [], 
                                    "table": []
                                }
                            ], 
                            "password": "", 
                            "username": "", 
                            "where": ""
                        }
                    }, 
                    "writer": {
                        "name": "mysqlwriter", 
                        "parameter": {
                            "column": [], 
                            "connection": [
                                {
                                    "jdbcUrl": "", 
                                    "table": []
                                }
                            ], 
                            "password": "", 
                            "preSql": [], 
                            "session": [], 
                            "username": "", 
                            "writeMode": ""
                        }
                    }
                }
            ], 
            "setting": {
                "speed": {
                    "channel": ""
                }
            }
        }
    }
    
    
  • 프로필 만 들 기
  • 구체 적 인 설정 항목 설명 은 홈 페이지 참조https://github.com/alibaba/DataX
  • 위 제 이 슨 파일 을 파일 에 기록 합 니 다
  • vim job/mysql2mysql.json
    
  • 이상 json 데이터 부분 붙 여 넣 기
  • 프로필 수정
  • {
        "job": {
            "content": [
                {
                    "reader": {
                        "name": "mysqlreader", 
                        "parameter": {
                            "column": [
                                "etpsname",
                                "etpsno"
                            ],  
                            "connection": [
                                {   
                                    "jdbcUrl": [
                                        "jdbc:mysql://***.***.***.***:3306/bigdata?useUnicode=true&characterEncoding=utf8"
                                    ],  
                                    "table": [
                                        "etps_no"
                                    ]   
                                }   
                            ],  
                            "password": "  ", 
                            "username": "cigar", 
                            "where": "id <=1000 "
                        }   
                    },  
                    "writer": {
                        "name": "mysqlwriter", 
                        "parameter": {
                            "column": [
                                "etps_name",
                                "etps_no"
                            ],  
                            "connection": [
                                {   
                                    "jdbcUrl": "jdbc:mysql://192.168.0.102:3306/datax?useUnicode=true&characterEncoding=utf8", 
                                    "table": [
                                        "etps_no"
                                    ]   
                                }   
                            ],  
                            "password": "root", 
                            "preSql": [], 
                            "session": [], 
                            "username": "root", 
                            "writeMode": "insert"
                        }   
                    }   
                }   
            ],  
            "setting": {
                "speed": {
                    "channel": "1"
                 }
            }
        }
    }
    

    실행 및 디 버 깅
    첫 번 째 실행 (원본 라 이브 러 리 연결 실패)
    운행 하 다.
    python bin/datax.py job/mysql2mysql.json
    

    잘못 을 보고 하 다
    2020-03-09 15:40:00.703 [job-0] WARN  DBUtil - test connection of [jdbc:mysql://122.51.161.234:3306/bigdata?useUnicode=true&characterEncoding=utf8] failed, for Code:[DBUtilErrorCode-10], Description:[       .         、  、     、IP、Port    DBA     (      ).].  -         :com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server..
    2020-03-09 15:40:00.708 [job-0] ERROR RetryUtil - Exception when calling callable,   Msg:DataX          ,     :1)    ip/port/database/jdbc  ,    。2)    username/password  ,    。  DBA               。
    java.lang.Exception: DataX          ,     :1)    ip/port/database/jdbc  ,    。2)    username/password  ,    。  DBA               。
    	at com.alibaba.datax.plugin.rdbms.util.DBUtil$2.call(DBUtil.java:71) ~[plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.util.DBUtil$2.call(DBUtil.java:51) ~[plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.common.util.RetryUtil$Retry.call(RetryUtil.java:164) ~[datax-common-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.common.util.RetryUtil$Retry.doRetry(RetryUtil.java:111) ~[datax-common-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.common.util.RetryUtil.executeWithRetry(RetryUtil.java:30) [datax-common-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.util.DBUtil.chooseJdbcUrl(DBUtil.java:51) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.reader.util.OriginalConfPretreatmentUtil.dealJdbcAndTable(OriginalConfPretreatmentUtil.java:92) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.reader.util.OriginalConfPretreatmentUtil.simplifyConf(OriginalConfPretreatmentUtil.java:59) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.reader.util.OriginalConfPretreatmentUtil.doPretreatment(OriginalConfPretreatmentUtil.java:33) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.reader.CommonRdbmsReader$Job.init(CommonRdbmsReader.java:55) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.reader.mysqlreader.MysqlReader$Job.init(MysqlReader.java:37) [mysqlreader-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.core.job.JobContainer.initJobReader(JobContainer.java:673) [datax-core-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.core.job.JobContainer.init(JobContainer.java:303) [datax-core-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.core.job.JobContainer.start(JobContainer.java:113) [datax-core-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.core.Engine.start(Engine.java:92) [datax-core-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.core.Engine.entry(Engine.java:171) [datax-core-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.core.Engine.main(Engine.java:204) [datax-core-0.0.1-SNAPSHOT.jar:na]
    

    원인 분석
  • 키 워드 를 통 해 데이터 베 이 스 를 연결 하 는 데 실 패 했 음 을 알 수 있 습 니 다. 자바 코드 를 써 서 이 JDBC 연결 이 데이터 베 이 스 를 연결 할 수 있 는 지 확인 하 십시오. 코드 는 다음 과 같 습 니 다
  • public class ConnMysql {
    
        public static void main(String[] args) throws SQLException, ClassNotFoundException {
            connToMysql();
        }
    
    
        public static void connToMysql() throws ClassNotFoundException, SQLException {
            //     
            Class.forName("com.mysql.jdbc.Driver");
            //     
            Connection connection = DriverManager.getConnection("jdbc:mysql://***.***.***.***:3306/bigdata?useUnicode=true&characterEncoding=utf8", "cigar", "  ");
            //    SQL
            String sql = "select etpsname,etpsno from etps_no limit 100";
            Statement statement = connection.createStatement();
            //     
            ResultSet qu = statement.executeQuery(sql);
    
            //     
            while (qu.next()){
                String etpsName = qu.getString("etpsname");
                String etpsNo = qu.getString("etpsno");
                System.out.println(etpsName + " => " + etpsNo);
            }
            //     
            statement.close();
            connection.close();
        }
    }
    

    이 코드 는 연결 에 성공 하고 결 과 를 조회 할 수 있 으 며 JDBC 연결 에 문제 가 없 으 며 다른 곳 에서 오 류 를 찾 아야 한 다 는 뜻 입 니 다.
  • 관련 문 제 를 조회 합 니 다. DataX 의 MySQL 연결 드라이버 가 MySQL 8.0 을 지원 하지 않 을 수도 있다 는 블 로그 가 있 기 때문에 드라이버 를 버 전 업데이트
  • 를 시도 하 겠 습 니 다.
    문제 해결
    MySQL 드라이버 보기
    ll /opt/module/dataX/plugin/reader/mysqlreader/libs
    -rw-r--r--. 1 62265 users  518641 11  24 2017 commons-collections-3.0.jar
    -rw-r--r--. 1 62265 users  185140 11  24 2017 commons-io-2.4.jar
    -rw-r--r--. 1 62265 users  412739 11  24 2017 commons-lang3-3.3.2.jar
    -rw-r--r--. 1 62265 users 1599627 11  24 2017 commons-math3-3.1.1.jar
    -rw-r--r--. 1 62265 users   95053 11  24 2017 datax-common-0.0.1-SNAPSHOT.jar
    -rw-r--r--. 1 62265 users 1952759 11  24 2017 druid-1.0.15.jar
    -rw-r--r--. 1 62265 users  372746 11  24 2017 fastjson-1.1.46.sec01.jar
    -rw-r--r--. 1 62265 users  934783 11  24 2017 guava-r05.jar
    -rw-r--r--. 1 62265 users   45024 11  24 2017 hamcrest-core-1.3.jar
    -rw-r--r--. 1 62265 users  264600 11  24 2017 logback-classic-1.0.13.jar
    -rw-r--r--. 1 62265 users  418870 11  24 2017 logback-core-1.0.13.jar
    -rw-r--r--. 1 62265 users  960372 11  24 2017 mysql-connector-java-5.1.34.jar
    -rw-r--r--. 1 62265 users   95960 11  24 2017 plugin-rdbms-util-0.0.1-SNAPSHOT.jar
    -rw-r--r--. 1 62265 users   32119 11  24 2017 slf4j-api-1.7.10.jar
    
  • 가방 교체 mysql-connector-java-5.1.34.jar
  • ll /opt/module/dataX/plugin/reader/mysqlreader/libs
    -rw-r--r--. 1 62265 users  518641 11  24 2017 commons-collections-3.0.jar
    -rw-r--r--. 1 62265 users  185140 11  24 2017 commons-io-2.4.jar
    -rw-r--r--. 1 62265 users  412739 11  24 2017 commons-lang3-3.3.2.jar
    -rw-r--r--. 1 62265 users 1599627 11  24 2017 commons-math3-3.1.1.jar
    -rw-r--r--. 1 62265 users   95053 11  24 2017 datax-common-0.0.1-SNAPSHOT.jar
    -rw-r--r--. 1 62265 users 1952759 11  24 2017 druid-1.0.15.jar
    -rw-r--r--. 1 62265 users  372746 11  24 2017 fastjson-1.1.46.sec01.jar
    -rw-r--r--. 1 62265 users  934783 11  24 2017 guava-r05.jar
    -rw-r--r--. 1 62265 users   45024 11  24 2017 hamcrest-core-1.3.jar
    -rw-r--r--. 1 62265 users  264600 11  24 2017 logback-classic-1.0.13.jar
    -rw-r--r--. 1 62265 users  418870 11  24 2017 logback-core-1.0.13.jar
    -rw-r--r--. 1 62265 users  960372 11  24 2017 mysql-connector-java-5.1.34.jar.bak
    -rw-r--r--. 1 root  root  2321813 3    9 00:54 mysql-connector-java-8.0.17.jar
    -rw-r--r--. 1 62265 users   95960 11  24 2017 plugin-rdbms-util-0.0.1-SNAPSHOT.jar
    -rw-r--r--. 1 62265 users   32119 11  24 2017 slf4j-api-1.7.10.jar
    

    두 번 째 실행 (대상 라 이브 러 리 연결 실패)
    운행 하 다.
  • 명령 을 사용 하여 실행 시작
  • python bin/datax.py job/mysql2mysql.json
    

    잘못 을 보고 하 다
    2020-03-09 01:29:50.995 [job-0] ERROR RetryUtil - Exception when calling callable,   Msg:Code:[MYSQLErrCode-01], Description:[            ,              DBA           ].  -         :root        :java.sql.SQLException: Access denied for user 'root'@'DESKTOP-OEAO22T' (using password: YES)
    com.alibaba.datax.common.exception.DataXException: Code:[MYSQLErrCode-01], Description:[            ,              DBA           ].  -         :root        :java.sql.SQLException: Access denied for user 'root'@'DESKTOP-OEAO22T' (using password: YES)
    	at com.alibaba.datax.common.exception.DataXException.asDataXException(DataXException.java:26) ~[datax-common-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.util.RdbmsException.asConnException(RdbmsException.java:21) ~[plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.util.DBUtil.connect(DBUtil.java:394) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.util.DBUtil.connect(DBUtil.java:384) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.util.DBUtil.access$000(DBUtil.java:22) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.util.DBUtil$3.call(DBUtil.java:322) ~[plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.util.DBUtil$3.call(DBUtil.java:319) ~[plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.common.util.RetryUtil$Retry.call(RetryUtil.java:164) ~[datax-common-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.common.util.RetryUtil$Retry.doRetry(RetryUtil.java:111) ~[datax-common-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.common.util.RetryUtil.executeWithRetry(RetryUtil.java:30) [datax-common-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.util.DBUtil.getConnection(DBUtil.java:319) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.util.DBUtil.getConnection(DBUtil.java:303) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.util.JdbcConnectionFactory.getConnecttion(JdbcConnectionFactory.java:27) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.writer.util.OriginalConfPretreatmentUtil.dealColumnConf(OriginalConfPretreatmentUtil.java:105) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.writer.util.OriginalConfPretreatmentUtil.dealColumnConf(OriginalConfPretreatmentUtil.java:140) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.writer.util.OriginalConfPretreatmentUtil.doPretreatment(OriginalConfPretreatmentUtil.java:35) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.writer.CommonRdbmsWriter$Job.init(CommonRdbmsWriter.java:41) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.writer.mysqlwriter.MysqlWriter$Job.init(MysqlWriter.java:31) [mysqlwriter-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.core.job.JobContainer.initJobWriter(JobContainer.java:704) [datax-core-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.core.job.JobContainer.init(JobContainer.java:304) [datax-core-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.core.job.JobContainer.start(JobContainer.java:113) [datax-core-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.core.Engine.start(Engine.java:92) [datax-core-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.core.Engine.entry(Engine.java:171) [datax-core-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.core.Engine.main(Engine.java:204) [datax-core-0.0.1-SNAPSHOT.jar:na]
    

    원인 분석
    키워드 포 지 셔 닝 을 통 해 DataX 프로그램 이 기록 할 때 이 컴퓨터 에 연 결 된 MySQL 이 거부 되 었 다 는 것 은 네트워크 가 원활 하고 MySQL 의 권한 에 의 해 거부 되 었 음 을 나타 낸다.이전에 리 눅 스 환경 에서 사용 한 MySQL 8.0 을 연상 시 키 고 MySQL 8.0 버 전 은 권한 제어 가 엄격 합 니 다. 루트 사용 자 는 기본 적 인 상황 에서 로 컬 로그 인 만 허용 합 니 다.
    추측 을 검증 하 다
  • 로 컬 mysql 에 로그 인
  • mysql -uroot -proot
    
  • 라 이브 러 리 전환
  • mysql> use mysql;
    
  • 사용자 로그 인 호스트 보기
  • mysql> select user,host from user;
    +------------------+-----------+  
    | user             | host      |  
    +------------------+-----------+  
    | mysql.infoschema | localhost |  
    | mysql.session    | localhost |  
    | mysql.sys        | localhost |  
    | root             | localhost |  
    +------------------+-----------+  
    

    이 결과 루트 사용 자 는 localhost 에 만 로그 인 할 수 있 고 원 격 로그 인 을 허용 하지 않 아 DataX 가 기록 할 때 연결 에 실 패 했 습 니 다.
    해결 방안
  • 방안 1: 루트 사용자 의 원 격 로그 인 주 소 를 제한 하지 않 음 (% 는 로그 인 IP 를 제한 하지 않 음)
  • 으로 수정 합 니 다.
  • 프로젝트 2: 원 격 로그 인 에 사용 할 사용 자 를 만 듭 니 다 (새로 만 든 사용 자 는 기본적으로 로그 인 IP 를 제한 하지 않 습 니 다)
  • 프로젝트 2 선택
    문 제 를 해결 하 다
  • 사용자 만 들 기
  • mysql> create user zhangsan identified by '  ';
    
  • 로그 인 호스트 보기
  • mysql> select user,host from user;
    
    +------------------+-----------+
    | user             | host      |
    +------------------+-----------+
    | zhangsan         | %         |
    | mysql.infoschema | localhost |
    | mysql.session    | localhost |
    | mysql.sys        | localhost |
    | root             | localhost |
    +------------------+-----------+
    
  • 비밀번호 인증 방식 을 mysql 로 수정native_password, 원 격 로그 인 에 사용
  • mysql> alter user 'zhangsan'@'%' identified with mysql_native_password by '  ';
    
  • 새로 만 든 사용자 에 게 모든 권한 부여
  • mysql> grant all privileges on *.* to cigar@'%';
    

    설명: 이 곳 은 새로운 사용자 에 게 루트 사용자 에 해당 하 는 모든 권한 을 부여 합 니 다.안전 을 위해 서 는 기본 적 인 첨삭 검사 권한 만 부여 하면 된다.
  • 새로 만 든 사용자 이름과 비밀 번 호 를 my sql 2 my sql. json 설정 파일 에 수정 합 니 다 (이하 writer 부분 만 캡 처)
  • "writer": {
        "name": "mysqlwriter", 
        "parameter": {
            "column": [
                "etps_name",
                "etps_no"
            ],  
            "connection": [
                {   
                    "jdbcUrl": "jdbc:mysql://192.168.0.102:3306/datax?useUnicode=true&characterEncoding=utf8", 
                    "table": [
                        "etps_no"
                    ]   
                }   
            ],  
            "password": "  ", 
            "preSql": [
                "truncate table etps_no;"
            ],  
            "session": [], 
            "username": "zhangsan", 
            "writeMode": "insert"
        }   
    }   
    

    세 번 째 실행 (대상 라 이브 러 리 연결 실패)
    운행 하 다.
  • 명령 을 사용 하여 실행 시작
  • python bin/datax.py job/mysql2mysql.json
    

    잘못 을 보고 하 다
    com.alibaba.datax.common.exception.DataXException: Code:[DBUtilErrorCode-10], Description:[       .         、  、     、IP、Port    DBA     (      ).].  -         :java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
    	at com.alibaba.datax.common.exception.DataXException.asDataXException(DataXException.java:26) ~[datax-common-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.util.RdbmsException.asConnException(RdbmsException.java:23) ~[plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.util.DBUtil.connect(DBUtil.java:394) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.util.DBUtil.connect(DBUtil.java:384) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.util.DBUtil.access$000(DBUtil.java:22) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.util.DBUtil$3.call(DBUtil.java:322) ~[plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.util.DBUtil$3.call(DBUtil.java:319) ~[plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.common.util.RetryUtil$Retry.call(RetryUtil.java:164) ~[datax-common-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.common.util.RetryUtil$Retry.doRetry(RetryUtil.java:111) ~[datax-common-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.common.util.RetryUtil.executeWithRetry(RetryUtil.java:30) [datax-common-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.util.DBUtil.getConnection(DBUtil.java:319) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.util.DBUtil.getConnection(DBUtil.java:303) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.util.JdbcConnectionFactory.getConnecttion(JdbcConnectionFactory.java:27) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.writer.util.OriginalConfPretreatmentUtil.dealColumnConf(OriginalConfPretreatmentUtil.java:105) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.writer.util.OriginalConfPretreatmentUtil.dealColumnConf(OriginalConfPretreatmentUtil.java:140) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.writer.util.OriginalConfPretreatmentUtil.doPretreatment(OriginalConfPretreatmentUtil.java:35) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.rdbms.writer.CommonRdbmsWriter$Job.init(CommonRdbmsWriter.java:41) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.plugin.writer.mysqlwriter.MysqlWriter$Job.init(MysqlWriter.java:31) [mysqlwriter-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.core.job.JobContainer.initJobWriter(JobContainer.java:704) [datax-core-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.core.job.JobContainer.init(JobContainer.java:304) [datax-core-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.core.job.JobContainer.start(JobContainer.java:113) [datax-core-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.core.Engine.start(Engine.java:92) [datax-core-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.core.Engine.entry(Engine.java:171) [datax-core-0.0.1-SNAPSHOT.jar:na]
    	at com.alibaba.datax.core.Engine.main(Engine.java:204) [datax-core-0.0.1-SNAPSHOT.jar:na]
    

    원인 분석
    키워드 포 지 셔 닝 을 통 해 알 수 있 듯 이 시간 대 문제 일 수 있 습 니 다. 전에 비슷 한 문제 가 발생 했 기 때문에 jdbc 연결 매개 변수 에 시간 대 를 추가 하면 됩 니 다.
    문 제 를 해결 하 다
    writer jdbc 연결 편집
    "writer": {
        "name": "mysqlwriter", 
        "parameter": {
            "column": [
                "etps_name",
                "etps_no"
            ],  
            "connection": [
                {   
                    "jdbcUrl": "jdbc:mysql://192.168.0.102:3306/datax?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC", 
                    "table": [
                        "etps_no"
                    ]   
                }   
            ],  
            "password": "  ", 
            "preSql": [
                "truncate table etps_no;"
            ],  
            "session": [], 
            "username": "zhangsan", 
            "writeMode": "insert"
        }   
    }   
    

    네 번 째 실행 (성공)
    운행 하 다.
    명령 을 사용 하여 실행 을 시작 하 다
    python bin/datax.py job/mysql2mysql.json
    

    실행 결과
    2020-03-09 01:34:02.251 [job-0] INFO  JobContainer - 
                              : 2020-03-09 01:33:49
                              : 2020-03-09 01:34:02
                              :                 12s
                              :            1.76KB/s
                              :            100rec/s
                              :                1000
                              :                   0
    

    BinGo!드디어 성공!
    총결산
  • 소스 라 이브 러 리 연결 이 실패 한 것 은 MySQL 이 구동 하 는 버 전 문제
  • 때 문 입 니 다.
  • 대상 라 이브 러 리 연결 이 실패 한 것 은 루트 사용자 로 로그 인 했 기 때 문 입 니 다. 그러나 MySQL 8.0 은 루트 사용자 에 게 원 격 로그 인 을 금지 합 니 다
  • 대상 라 이브 러 리 연결 이 실패 한 것 은 시간 대가 대응 하지 않 기 때 문 입 니 다. 연결 이 필요 할 때 시간 대 를 지정 합 니 다
  • 의문
  • 로 컬 에서 자바 코드 를 사용 하여 JDBC 연결 을 테스트 할 때 MySQL 드라이버 버 전 은 mysql-connector-java-8.0.17.jar 연결 에 성공 하고 데 이 터 를 얻 을 수 있 습 니 다.
  • DataX 의 기본 MySQL 연결 드라이버 버 전 은 mysql-connector-java-5.1.6.jar, 데이터베이스 연결 실패
  • 왜 로 컬 저 버 전 은 연결 에 성 공 했 고 DataX 의 고 버 전 은 오히려 연결 에 실패 하여 8.0 버 전 으로 바 꿔 야 연결 에 성공 할 수 있 습 니까?큰 놈 이 아 는 게 있 으 니까 소통 좀 지도 해 줘.
  • 좋은 웹페이지 즐겨찾기