当前位置:   article > 正文

DataX | 在Liunx上安装和使用_查看datax版本

查看datax版本

一、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.如果上一步的环境不存在则参考下面的博客进行环境安装:

4.下载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;
  • 1
  • 2
  • 3
  • 4
  • 5

运行成功后在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"]
                            }
                        ]
                    }
                }
            }
        ]
    }
}
  • 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
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • “writeMode”: “insert”:表示数据是新增,可改为update,但是表中要有唯一主键
  • preSql:预先执行的sql,在其他操作之前执行

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

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

注意点

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

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

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


相关文章


欢迎关注公众号:慌途L
后面会慢慢将文章迁移至公众号,也是方便在没有电脑的情况下可以进行翻阅,更新的话会两边同时更新,大家不用担心!
在这里插入图片描述


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/823140
推荐阅读
相关标签
  

闽ICP备14008679号