您当前的位置: 首页 >  慌途L

DataX | 在Liunx上安装和使用

慌途L 发布时间:2020-10-25 20:06:00 ,浏览量:3

一、DataX3.0 概述和核心优势

参考官网,这里就不多做介绍:DataX3.0介绍.

DataX快速开始说明:快速开始文档.

二、Liunx 上安装DataX 1.查看当前linux是什么系统版本:
  • 查看系统的名称,命令:uname
  • 查看具体的系统版本,命令:cat /etc/redhat-release
2.查看是否具备jdkpython环境:
  • 查看jdk版本,命令:java -version
  • 查看python的版本,命令(大写V):python -V

注意:

  • JDK(1.6以上,1.8即可)

  • Python(一般2.7都可以)一定要为python2,因为后面执行datax.py的时候,里面的python的print会执行不了,导致运行不成功,会提示你print语法要加括号,python2中加不加都行 python3中必须要加,否则报语法错

3.如果上一步的环境不存在则参考下面的博客进行环境安装:
  • 安装java环境,参考博客(不用按照步骤去卸载,直接看安装步骤即可):https://blog.csdn.net/love3765/article/details/88783126.

  • 安装python环境,参考博客(安装步骤全部执行即可):https://www.cnblogs.com/Jomini/p/10507077.html.

4.下载DataX:
  • 下载DataX安装包百度云链接:https://pan.baidu.com/s/13FeDSkO52dUv_bJqjXoe2w. 提取码:alac

  • 下载DataX安装包(如果上一步目录不存在,找到网址下的Quick Start标题即有下载地址):https://github.com/alibaba/DataX.

5.解压DataX

下载后使用文件传输工具传输到linux上的opt目录下 解压命令: cd /opt tar -zxvf datax.tar.gz -C /opt/

6.DataX自检

解压成功后,进入bin目录,开始自检,命令: cd datax/bin python datax.py /opt/datax/job/job.json

查看日志,完成自检!

三、使用DataX 1.新建两个mysql库:datax、datax2,分别使用运行以下建表sql:
CREATE TABLE `datax_test` (
  `id` int(10) NOT NULL COMMENT '主键ID',
  `name` varchar(255) DEFAULT NULL COMMENT '名称',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

运行成功后在datax2中新增几条测试数据,datax中不新增。

2.建立新的job作业json文件,如下(复制即可用):

job_mysql2mysql.json:

{
    "job": {
		"setting": {
            "speed": {
                "channel": 1
            },
			"errorLimit": {
                "record": 0,
                "percentage": 0.02
            }
        },
        "content": [
            {
                "reader": {
                    "name": "mysqlreader", 
                    "parameter": {
                        "column": [
							"`id`",
                            "`name`"
						], 
                        "connection": [
                            {
                                "jdbcUrl": ["jdbc:mysql://localhost:3306/datax2"], 
                                "table": ["datax_test"]
                            }
                        ], 
						"username": "root",
                        "password": "******"
                    }
                }, 
                "writer": {
                    "name": "mysqlwriter", 
                    "parameter": {
						"writeMode": "insert",
                        "username": "root",
                        "password": "******",
                        "column": [
                            "`id`",
							"`name`"
                        ],
                        "session": [
                        	"set session sql_mode='ANSI'"
                        ],
                        "preSql": [
                            "delete from datax_test"
                        ], 
                        "connection": [
                            {
                                "jdbcUrl": "jdbc:mysql://localhost:3306/datax", 
                                "table": ["datax_test"]
                            }
                        ]
                    }
                }
            }
        ]
    }
}
  • “writeMode”: “insert”:表示数据是新增,可改为update,但是表中要有唯一主键
  • preSql:预先执行的sql,在其他操作之前执行

以上的json是新增时使用,有个preSql(预执行sql),看情况使用

3.将job_mysql2mysql.json文件放入/opt/datax/目录下,执行以下命令运行,即可将读库中的表数据写入写库的表中:
python datax.py /opt/datax/job/job_mysql2mysql.json
注意点:

大家可以看到JSON文件中的column中写了详细的参数,而不用*号,以及字段用`符号包起来。

先说第一点,详细的字段方便在以后的定时增量同步起到很大的避免错误的作用,如果读库和写库的表结构一样,在读库(reader)中的表增加了一个字段,而写库(writer)并没有这个字段,执行脚本时会报错,所有不用*号,并且新增和修改字段都要双方同步。

第二点,为什么用`符号将字段包起来,博主已踩坑,大家不要跳坑了。因为日常开发中一个数据库是很多开发人员维护的,难免会出现MySQL关键字为字段名的情况,DataX执行时发现某个字段是MySQL关键字则会直接报错,所以每个字段最好包起来。

相关文章
  • DataX | MySQL多表全量同步和多表定时增量同步.
  • DataX踩坑1 | 连接数据库失败. 请检查您的 账号、密码、数据库名称、IP、Port.
  • DataX踩坑2 | 定时任务crontab不执行或报错:/bin/sh: java: command not found.
  • Shell 脚本参数传递时有 \r 换行符问题.
关注
打赏
1688896170
查看更多评论

慌途L

暂无认证

  • 3浏览

    0关注

    118博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.1110s