美文网首页
datax datax-web 同步 mysql 数据(单机部署

datax datax-web 同步 mysql 数据(单机部署

作者: 田丰w | 来源:发表于2021-09-27 22:40 被阅读0次

    版本说明
    datax 3.0
    datax-web 2.1.2
    mysql MySQL8 MariaDB10

    datax 部署

    1. 准备环境: linux, java8, python3
      需要 java 和 jps
      sudo update-alternatives --install /usr/bin/java java /usr/lib/jdk/jdk/bin/java 300
      sudo update-alternatives --install /usr/bin/jps jps /usr/lib/jdk/jdk/bin/jps 300

    其中, /usr/lib/jdk/jdk/ 是 jdk 的安装位置

    1. 下载,官方github给出了编译后的jar压缩包地址 datax.tar.gz
      源码编译打包使用 maven 命令 mvn -U clean package assembly:assembly -Dmaven.test.skip=true
      结果在 target 里, 和下载的 一样是 datax.tar.gz

    2. 解压到自己希望的位置上 tar -zxvf datax3.tar.gz

    3. (可选) 替换 python3 适用的脚本. 把 bin 下的三个文件替换为 datax-web 提供的 python3 版本

    4. 测试 datax 命令行. 在 datax 目录下
      python3 bin/datax.py job/job.json
      有如下输出即表示成功(当然这只是从memery读,写到console的这一种)

    2021-09-27 18:37:26.012 [job-0] INFO  JobContainer - 
    任务启动时刻                    : 2021-09-27 18:37:15
    任务结束时刻                    : 2021-09-27 18:37:26
    任务总计耗时                    :                 10s
    任务平均流量                    :          253.91KB/s
    记录写入速度                    :          10000rec/s
    读出记录总数                    :              100000
    读写失败总数                    :                   0
    
    1. 替换 mysql 驱动为 8.x. 见后文注意

    datax-web 部署

    1. 下载源码 git@github.com:WeiYe-Jing/datax-web.git

    2. 编译打包 mvn clean install (百度网盘的下载速度还不如clone编译的快呢)

    3. 解压到希望的位置 tar -zxvf datax-web-2.1.2.tar.gz

    4. 执行 ./bin/install.sh
      按照提示初始话 datax-web 自己的配置数据库

    5. 配置datax (我这里忽略了email 的配置)
      vim modules/datax-executor/bin/env.properties

    ## PYTHON脚本执行位置
    #PYTHON_PATH=/home/hadoop/install/datax/bin/datax.py
    PYTHON_PATH=/home/aaa/bin/datax3/bin/datax.py
    

    如果使用 python3, 把要使用的 python 放到 PATH 的前面(注意 PATH 里要能找到 python 命令, python3不行,尽管在datax里#! 指定了 python3)
    vim modules/datax-executor/bin/datax-executor.sh

    PATH=/opt/minconda/mypyenv/bin:$PATH
    

    修改了环境变量需要重启服务

    1. 替换 mysql 驱动为 8.x. 见后文注意

    datax-web 使用

    1. 启动 web 服务
      启动服务 ./bin/start-all.sh
      停止服务 ./bin/stop-all.sh
      jps 查看服务, 如果存在下面两个进程,即成功运行
      DataXAdminApplication
      DataXExecutorApplication

    2. 访问 web 服务
      访问(注意后面的路径/index.html 不能丢,这里没有默认重定向)
      http://ip:9527/index.html
      默认用户名 admin 密码 123456
      登录后在 "用户管理" 里修改密码

    3. 执行数据同步,依次进行如下操作
      创建项目
      添加数据源
      创建任务模板
      任务构建(有坑,见后文)
      任务管理里启动任务
      日志管理里查看执行日志

    datax 命令行使用

    执行一次数据同步
    python3 bin/datax.py job/stream2stream.json

    查看 job 配置模板
    python3 bin/datax.py -r mysqlreader -w mysqlwriter
    其中, -r 参数指定使用的 reader, -w 参数指定使用的 writer. 有哪些 reader writer 可以查看 plugin 目录.

    注意

    • jdbcUrl 需要参数 serverTimezone=Asia/Shanghai, 否则会有类似下面的报错报错:
    Code:[DBUtilErrorCode-10], Description:[连接数据库失败. 请检查您的 账号、密码、数据库名称、IP、Port或者向 DBA 寻求帮助(注意网络环境).]. - 具体错误信息为:...
    
    2021-09-27 01:14:32 [AnalysisStatistics.analysisStatisticsLog-53] 2021-09-27 01:14:32.737 [job-0] ERROR RetryUtil - Exception when calling callable, 异常Msg:Code:[DBUtilErrorCode-10], Description:[连接数据库失败. 请检查您的 账号、密码、数据库名称、IP、Port或者向 DBA 寻求帮助(注意网络环境).].  -  具体错误信息为:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
    2021-09-27 01:14:32 [AnalysisStatistics.analysisStatisticsLog-53] com.alibaba.datax.common.exception.DataXException: Code:[DBUtilErrorCode-10], Description:[连接数据库失败. 请检查您的 账号、密码、数据库名称、IP、Port或者向 DBA 寻求帮助(注意网络环境).].  -  具体错误信息为:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
    2021-09-27 01:14:32 [AnalysisStatistics.analysisStatisticsLog-53]   at com.alibaba.datax.common.exception.DataXException.asDataXException(DataXException.java:26) ~[datax-common-0.0.1-SNAPSHOT.jar:na]
    
    • mysql8需要更换jdbcDriver mysql-connector, 注意有三处
      1. datax里 plugin/reader/mysqlreader/libs 的 mysql-connector-java-5.1.34.jar
      2. datax里 plugin/writer/mysqlwriter/libs 的 mysql-connector-java-5.1.34.jar
      3. datax-web里 modules/datax-admin/lib 的 mysql-connector-java-5.1.47.jar
    cp mysql-connector-java-8.0.22.jar ~/bin/datax3/plugin/reader/mysqlreader/libs
    cp mysql-connector-java-8.0.22.jar ~/bin/datax3/plugin/writer/mysqlwriter/libs
    cp mysql-connector-java-8.0.22.jar ~/bin/datax-web-2.1.2/modules/datax-admin/lib
    
    • jdbc驱动类: com.mysql.cj.jdbc.Driver

    • job 配置里 setting 不能有 byte 参数.(见后文)

    • job 配置 json 里的 writer 里, "writeMode": "update" 可以覆盖更新.

    job 配置示例(json里不支持注释,这里的注释只做说明用)

    {
      "job": {
        "setting": {
          "speed": {
            "channel": 3
            // 下面这个参数不能有了
            // , "byte": 1048576
          },
          "errorLimit": {
            "record": 0,
            "percentage": 0.02
          }
        },
        "content": [
          {
            "reader": {
              "name": "mysqlreader",
              "parameter": {
                "username": "xxx加密的",
                "password": "yyy加密的",
                "column": [
                  "`id`",
                  // 省略
                ],
                "splitPk": "",
                "connection": [
                  {
                    "table": [
                      "tab_name_from"
                    ],
                    "jdbcUrl": [
                      "jdbc:mysql://<ip or domain>:<port>/db_name?serverTimezone=Asia/Shanghai"
                    ]
                  }
                ]
              }
            },
            "writer": {
              "name": "mysqlwriter",
              "parameter": {
                "username": "aaa加密的",
                "password": "bbb加密的",
                // 对于 mysql, writeMode 为 update 时会执行覆盖更新
                "writeMode": "update",
                "column": [
                  "`id`",
                  // 省略
                ],
                "connection": [
                  {
                    "table": [
                      "tab_name_to"
                    ],
                    "jdbcUrl": "jdbc:mysql://<ip or domain>:<port>/db_name?serverTimezone=Asia/Shanghai"
                  }
                ]
              }
            }
          }
        ]
      }
    }
    

    相关文章

      网友评论

          本文标题:datax datax-web 同步 mysql 数据(单机部署

          本文链接:https://www.haomeiwen.com/subject/kmxknltx.html