DataX数据迁移
访问DataX Web管理页面:
http://ip:9527/index.html
用户名:admin,密码:123456
本文中示例将SqlServer数据增量同步到MySql中。
- 增量同步
- 同步时,MySql中的新字段设置默认值
1. 查看执行器是否注册成功
DataX 和DataX Web环境部署完成后,在执行器管理中,可以看到自动注册成功一个datax执行器。
2. 新增数据源
我们需要实现sqlserver同步数据到mysql,需要配置两个数据源。
3. 新建项目
任务是以项目维度管理,在新增任务时,需要配置项目名称。所以我们先新建一个项目。
4. 新建任务模板
创建一个任务模板,每30s执行一次任务。
5. 任务构建
通过任务构建的配置生成datax可以识别的json配置。
-
构建reader
时间增量: update_time >=REPLACE(${lastTime},'%', ' ') and update_time < REPLACE(${currentTime},'%', ' ')
注意:
- 有where条件时,sql语句可以不写,默认是select *
- 根据时间增量时,lastTime和currentTime是两个变量,名称可以自定义,在后面的配置中注意匹配就可以
- 我在配置时,使用REPLACE(${lastTime},‘%’, ’ ') ,将时间中的%替换成空格。是因为我的sqlserver表中update_time字段是datetime类型,格式为yyyy-MM-dd HH:mm:ss,但是在执行任务时,通过查看日志发现,查询的sql中,变量的时间是yyyy-MM-dd%HH:mm:ss这种格式,导致查询报错。所以我使用了REPLACE函数替换%,此处具体配置要看自己的环境。
-
构建writer
-
选择需要映射的字段
-
构建
配置完成后,点击下一步,此时进入任务管理页面,我们可以看到构建好的一个任务。
6. 修改任务
由于我们需要增量同步,并且要对status配置默认值,之前的构建过程中,并没有传入时间参数的位置,也没有配置默认参数的位置。所以我们需要对任务进行修改。
-
在任务管理中点击编辑
-
配置时间自增
- 辅助参数选择时间自增
- 增量开始时间即第一次执行的起始时间,自定义设置
- 增量时间格式选择匹配数据库中的时间格式
- 增量时间字段 -DlastTime=‘%s’ -DcurrentTime=‘%s’
- -D是datax参数的标识符,必须这么写
- -D后面的lastTime和currentTime是传入where条件的参数名,可自定义名称。和我们之前配置sql的变量名匹配上就行。
- %s是用来替换变量的占位符
- -DlastTime=‘%s’和-DcurrentTime=’%s’中间有一个空格,并且必须是一个空格
-
配置status默认值
我们之前提到,reader和writer的字段必须一一对应,但是之前的配置中,writer比reader多一个status字段,我们需要配置默认参数。
修改自动生成的json配置,在reader的column中增加一个一个字段,“‘启用’ as status”,意思为:给status字段默认赋值为启用,由于是字符串类型,所以启用也需要加引号。
-
至此,修改完成,保存后,启动任务。