系统同步数据方案(ETL的Kettle)
一、工具准备
Kettle下载。这个软件虽然是开源的,但是资源非常少,国内下载速度也慢。之前是先下载的8.1版本,今天下载的最新版本9.0。以下验证是在8.1版本上面验证的。
二、简单使用与可行性验证
- 转换
转换使用主要是验证了数据库表的输入、输出,实现数据转存。
设置变量
2.作业
设计了一个增量插入同步的作业,异常发送邮件。
三、详细设置
设计思路:
在id角标记录表取上次已经同步到的id,从正式表筛选此id之后的数据输出到临时表,然后再由临时表同步到目标数据库的表,同步完成后在id角标记录表插入已经同步到的id记录。
这个根据id值增量插入同步的作业依赖3个转换,这里我就按照设计顺序,截取每个点的配置图让大家看明白。
START:
建id角标标初始角标数据:
转换设置id角标到变量:
它包含的转换配置截图:
删除转储临时表上次的转储数据:
正式通行数据到临时通行数据:
它包含的转换的配置如下:
如果字段不一致,就执行输入字段映射。
临时通行数据到目标通行数据:
它包含的转换配置如下:
字段不一致,可以自行输入字段映射。
插入数据同步id角标记录:
发送邮件:
这里我设置了带附件,不过邮件里并没有发现带附件,有这块的需求可以进一步研究。
成功:
这个节点没有任何配置
最后说下各节点之间的连线,光标放在线上点击右键有相关属性设置。线上的勾/叉也是可以点击的,分别表示条件真假。
四、测试效果
日志的级别很多,有一个非常详细,在测试自己写的这个作业的时候,可以看。
作业度量,每一个节点执行的结果也很清楚。
另外,作业链路上每一个执行通过的节点都会打钩,没有通过报错的就会是叉。
收到的邮件:
邮件配置,还是可以设置的很详细的,可以自己测试。
五、总结
- 使用kettle数据库增量同步可行
- 多表数据同步,需要多个作业运行,数据量大的情况,数据库的压力需要考虑
- 查看了门禁业务系统的数据表,表字段id是字符串,有数字也有uuid不适合做增量数据筛选,但是有更新时间字段,可以使用更新时间作为增量筛选条件。(现在大家明白为啥会要求表有更新时间字段,同时更新要设置时间值了吧?方便别人也方便自己)
- 同步出现异常的补偿机制需要制定,提前预估规避风险
5、软件开源,新版本资料偏少,老版本功能不够,后期维护需要考虑(感觉维护成本比代码方式高)