DataX | 在Liunx上安装和使用

一、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;

运行成功后在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关键字则会直接报错,所以每个字段最好包起来。


相关文章


おすすめ

転載: blog.csdn.net/qq_25112523/article/details/109276687