环境准备
安装Java和Python
下载安装maven:
wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
解压安装:
tar -zxvf apache-maven-3.3.9-bin.tar.gz
配置环境变量
使用vim编辑/etc/profile文件
命令:vim /etc/profile(提示:vim使用方法)
在/etc/profile文件末尾增加以下配置:
M2_HOME=/opt/tyrone/maven (注意这里是maven的安装路径)
export PATH=${M2_HOME}/bin:${PATH}
重载/etc/profile这个文件
source /etc/profile
检验maven是否安装成功
mvn -v
安装datax
下载地址:https://github.com/alibaba/DataX/blob/master/userGuid.md
上传安装包:使用xshell的sftp文件传输进行文件传输
解压:tar -zxvf datax.tar.gz -C /opt/datax/
自检:进入bin目录,开始自检:python datax.py …/job/job.json
查看日志,输出日志没有报错即是安装成功
配置job
{
"job": {
"content": [
{
"reader": {
"name": "rdbmsreader",
"parameter": {
"username": "root",
"password": "123456",
"column": [
"column1",
"column2",
"column3"
],
"connection": [
{
"jdbcUrl": [
"jdbc:db2://xx.xx.xx.xxx:50000/databaseName"
],
"table": ["DB2ADMIN.tablename"]
}
],
"where": "1=1"
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"username": "username",
"password": "password",
"writeMode": "insert",
"connection": [
{
"jdbcUrl": "jdbc:mysql://xx.xx.xx.xx:32368/databasename",
"table": [
"jl003079.tablename"
]
}
],
"column": [
"column1",
"column2",
"column3"
]
}
}
}
],
"setting": {
"speed": {
"byte":10485760
},
"errorLimit": {
"record": 0,
"percentage": 0.02
}
}
}
}
reader:用于抽取数据的配置
writer:用于插入数据的配置
name:取决于配置的数据库,如上例db2的reader对应的值就是rdbmsreader,mysql的writer对应的就是mysqlwriter
username:数据库用户名
password:数据库密码
writeMode:写入形式,insert是插入,如果有主键冲突则放弃插入并报错
update模式,如果有主键冲突,则覆盖已有数据
jdbcUrl:数据库连接串
table:目标表
column:查询和插入的字段
setting:可以配置上传速度和容忍报错数目(即超过多少条就退出)
同步配置写在.json文件中,一般将配置文件放在datax目录下的job文件夹中
datax的使用
进入datax的bin目录中,使用命令python datax.py …/job/xxx.json,等待同步完成
关于定时任务
datax自身不支持定时任务,需要使用Linux的crontab配合完成,
使用命令crontab -e打开crontab定时任务编辑器,可输入如下指令来完成定时任务配置:
30 8 * * * python datax.py ../job/xxx.json
意思是每天8点30分,执行数据抽取
* * * * *从左至右分别代表:分 时 天 月 星期几
举例:每五分钟执行一次,*/5 * * * *
每月5号执行一次,* * 5 * *
每个星期一执行一次,* * * * 1
编辑完成后,按Esc键,:wq 保存退出即可生效