今天安装了下datax,正好有一些心得,感觉可以记录下来,避免下一次在踩坑。

DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。

DataX本身作为数据同步框架,将不同数据源的同步抽象为从源头数据源读取数据的Reader插件,以及向目标端写入数据的Writer插件,理论上DataX框架可以支持任意数据源类型的数据同步工作。同时DataX插件体系作为一套生态系统, 每接入一套新数据源该新加入的数据源即可实现和现有的数据源互通。

简单点来说的话:就是数据的转移,可以从一个库快速转移到另一个库中,并且是离线的。

首先先说安装datax:

先去下载:

DataX下载地址

然后放入自己的服务器中,

tar -xvf datax.tar.gz(解压)

chmod -R 775 ./datax(给这个文件夹增加最高权限((读、写、执行))

python datax.py ../job/job.json(测试下安装成功没有)




datax使用hivereader插件_数据源


成功

datax使用hivereader插件_数据源_02

出现这个,蛋疼(内存不足)。。。。自己解决吧!


然后编写脚本就可以测试了。

模板: python datax.py -r {读的name} -w {写的name},会出现模板 然后你可以根据模板更改。

datax 脚本的例子:


{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "mysqlreader", 
                    "parameter": {
                        "column": ["id","role","create_time","update_time","version"], 
                        "connection": [
                            {
                                "jdbcUrl": ["jdbc:mysql://********:3306/test"], 
                                "table": ["tb_role"]
                            }
                        ], 
			"username": "root",
                        "password": "****" 
                        
                    }
                }, 
                "writer": {
                    "name": "mysqlwriter", 
                    "parameter": {
                        "column": ["id","role","create_time","update_time","version"],  
                        "connection": [
                            {
                                "jdbcUrl": ["jdbc:mysql://******:3306/test1"], 
                                "table": ["tb_role_test"]
                            }
                        ], 
			"username": "root",
                        "password": "****" 
                        
                    }
                }
            }
        ], 
        "setting": {
            "speed": {
                "channel": "1"
            }
        }
    }
}


其中我说几个比较重要的

name: 表示哪一个数据库的写或者读,在plugin文件夹下面


datax使用hivereader插件_datax使用hivereader插件_03


column:需要读的字段或写的字段

connection:连接的url,注意reader中的url是数组,writer中的url是String类型的,

table:表名

username:数据库的名字

password:数据库的密码 注意数据库的名字和密码不要写反了。

还有最后一个注意事项:

注意看你的数据库的版本,datax中默认的驱动是mysql-connector-java-5.1.34.jar,

如果你的版本是8.0的,记得新增加一个8.0的驱动

路径:/test/datax/plugin/writer/mysqlwriter/libs(这是我的路径,你的把test去掉就好了应该可以找到的)

如果不知何怎么查询版本的,select version();就可以查询了(还有其他的方法)。


datax使用hivereader插件_mysql_04

新增的8.0的驱动

运行:python datax.py ./mysql2mysql.json(路径和脚本名字 记得改。如果和上面出现的测试成功差不多,就说明成功了。)