• datax同步数据简介


    概述

    业务中经常会用到数据全量同步和增量同步,用sqlDump只能全量同步,而且数据量大的时候很慢。

    阿里的datax目前是一款不错的同步工具

    环境要求:
    jdk:1.8+
    python:2.7
    maven:3.0+

    3.0python跑不起来
    ps:开源版的dataxmysql驱动还是用的5.1.x的,如果用的mysql已经是高版本了,需要换下驱动.换驱动的时候记得readwriter都要换一下。

    在这里插入图片描述

    demo

    直接跟着dataxquick start开始敲就完事
    https://github.com/alibaba/DataX/blob/master/userGuid.md
    我是直接下载的工具包,然后直接查看readwrite模板,直接按照模板copy一个.json的文件

    python datax.py -r {YOUR_READER} -w {YOUR_WRITER}
    
    • 1

    文件deom如下

    {
        "job": {
            "content": [
                {
                    "reader": {
                        "name": "mysqlreader", 
                        "parameter": {
                            "username": "xxx",
                            "password": "xxx",
                            "where": "",
                            "connection": [
                                {
    				"querySql": [
    				    "select * from sys_oper_log;"
    				],
                                    "jdbcUrl": [
                                        "jdbc:mysql://127.0.0.1:33306/ruoyi_5?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true"
                                    ]
                                }
                            ]
                        }
                    }, 
                    "writer": {
                        "name": "mysqlwriter", 
                        "parameter": {
                            "column": ["*"], 
                            "connection": [
                                {
                                    "jdbcUrl": "jdbc:mysql://127.0.0.1:33306/datax_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true",
                                    "table": ["sys_oper_log"]
                                }
                            ], 
                            "password": "xxx",
                            "preSql": [
                                
                            ], 
                            "session": [
                               "set session sql_mode='ANSI'" 
                            ], 
                            "username": "xxx", 
                            "writeMode": "insert"
                        }
                    }
                }
            ], 
            "setting": {
                "speed": {
                    "channel": "5"
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52

    直接运行

    python2.7 datax.py test.json
    
    • 1

    在这里插入图片描述

    datax_web下载启动

    上面的datax一个麻烦的地方就是一个同步操作就需要命令新建一个json文件,操作一多就有点麻烦;
    所以一个web管理界面统一入口,就显得必要了,当然也是直接拿现成了;

    https://github.com/WeiYe-Jing/datax-web

    这是需要的环境和中间件,可以提前部署一下
    在这里插入图片描述

    #下载
    git clone https://github.com/WeiYe-Jing/datax-web.git
    #编译--编译后在build目录下生成文件
    mvn clean install
    #解压
    tar -zxvf datax-web-2.1.2.tar.gz
    
    #到自己的db里初始化一下sql
    /bin/db/datax-web.sql
    #指定自己的db---修改datax-admin/conf/bootstrap.properties的文件中的数据库配置
    vi ./modules/datax-admin/conf/bootstrap.properties
    
    #如果有多个jdk版本,需要到这2个module下的环境变量文件中指定下java_home
    vi modules/datax-admin/bin/env.properties
    vi modules/datax-executor/bin/env.properties
    
    #启动
    ./bin/start-all.sh
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    一波成功
    在这里插入图片描述

    datax_web使用

    先说明一下我的环境
    ubuntu20.04
    默认的python版本是python3
    mysql8.0
    java有多个版本,给datax_web使用的是java8(我这里部署的时候官方文档指定用的就是8

    这里先介绍几个注意点;
    1-mysql我这边用的是8,默认的mysql驱动用的是5,高版本的需要自己另外下个驱动,然后丢到modules下的datax-admin依赖中去,
    /home/ubuntu/datax_web/datax-web-2.1.2/modules/datax-admin/lib

    2-python版本,我这里ubuntu默认是python3,但是脚本默认datax默认使用的是python2.7,所以这里可以在下载的datax_web文件的doc目录下找到datax/bin/下对应的三个py文件,替换下就行

    流程大概是这样的:

    1. 创建项目
    2. 添加数据源(源db和目标db)
    3. 任务构建

    新建项目
    在这里插入图片描述

    添加数据源
    在这里插入图片描述
    新建定时任务
    和xxljob差不多,直接新建即可
    在这里插入图片描述

    任务构建
    直接点点点再下一步就ok了,最后按照提示关联下定时任务,即可
    在这里插入图片描述

  • 相关阅读:
    代码随想录-022-202.快乐数
    MCE | 衰老“走过”的信号途径
    五种多目标优化算法(MOJS、MOGWO、NSWOA、MOPSO、NSGA2)性能对比(提供MATLAB代码)
    折磨人的算法题咋解?阿里内部强推超全Java算法学习指南,已被彻底征服,早知道可以少掉我多少头发了
    【Vue基础七】--- 组件和模块概念
    NSSCTF web刷题记录4
    第三章:Python中的序列(上)
    【如何使用Medooze 实现多方视频会议】
    Linux 安装 kubemini
    论文答辩那些事
  • 原文地址:https://blog.csdn.net/weixin_43944305/article/details/133617114