系统同步数据方案(ETL的Kettle)

一、工具准备

Kettle下载。这个软件虽然是开源的,但是资源非常少,国内下载速度也慢。之前是先下载的8.1版本,今天下载的最新版本9.0。以下验证是在8.1版本上面验证的。

二、简单使用与可行性验证

  1. 转换

转换使用主要是验证了数据库表的输入、输出,实现数据转存。

 

设置变量

 

2.作业

设计了一个增量插入同步的作业,异常发送邮件。

 

三、详细设置

设计思路:

         在id角标记录表取上次已经同步到的id,从正式表筛选此id之后的数据输出到临时表,然后再由临时表同步到目标数据库的表,同步完成后在id角标记录表插入已经同步到的id记录。

这个根据id值增量插入同步的作业依赖3个转换,这里我就按照设计顺序,截取每个点的配置图让大家看明白。

         START

        

         建id角标标初始角标数据:

        

转换设置id角标到变量:

        

         它包含的转换配置截图:

        

        

删除转储临时表上次的转储数据:

 

正式通行数据到临时通行数据:

 

         它包含的转换的配置如下:

        

 

         如果字段不一致,就执行输入字段映射。

临时通行数据到目标通行数据:

         它包含的转换配置如下:

         字段不一致,可以自行输入字段映射。

插入数据同步id角标记录:

发送邮件:

         这里我设置了带附件,不过邮件里并没有发现带附件,有这块的需求可以进一步研究。

成功:

         这个节点没有任何配置

最后说下各节点之间的连线,光标放在线上点击右键有相关属性设置。线上的勾/叉也是可以点击的,分别表示条件真假。

四、测试效果

日志的级别很多,有一个非常详细,在测试自己写的这个作业的时候,可以看。

作业度量,每一个节点执行的结果也很清楚。

另外,作业链路上每一个执行通过的节点都会打钩,没有通过报错的就会是叉。

收到的邮件:

邮件配置,还是可以设置的很详细的,可以自己测试。

五、总结

  1. 使用kettle数据库增量同步可行
  2. 多表数据同步,需要多个作业运行,数据量大的情况,数据库的压力需要考虑
  3. 查看了门禁业务系统的数据表,表字段id是字符串,有数字也有uuid不适合做增量数据筛选,但是有更新时间字段,可以使用更新时间作为增量筛选条件。(现在大家明白为啥会要求表有更新时间字段,同时更新要设置时间值了吧?方便别人也方便自己)
  4. 同步出现异常的补偿机制需要制定,提前预估规避风险

    5、软件开源,新版本资料偏少,老版本功能不够,后期维护需要考虑(感觉维护成本比代码方式高)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章