当前位置: 代码迷 >> 综合 >> DataX | 在Liunx上安装和使用
  详细解决方案

DataX | 在Liunx上安装和使用

热度:23   发布时间:2024-03-08 05:42:43.0

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

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

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


二、Liunx 上安装DataX

1.查看当前linux是什么系统版本:
  • 查看系统的名称,命令:uname
  • 查看具体的系统版本,命令:cat /etc/redhat-release

2.查看是否具备jdkpython环境:
  • 查看jdk版本,命令:java -version
  • 查看python的版本,命令: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安装包(直接下载):http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz.

  • 下载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 …/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踩坑:连接数据库失败. 请检查您的 账号、密码、数据库名称、IP、Port.