Kettle实现数据库的增量同步

Kettle实现数据库的增量同步

参考视频地址

本操作基于kettle 9.1.0.0-324版本实现

业务背景

​ 当前需要实现把生产环境数据库同步到测试环境中来,当生产环境新增数据时,uat会自动获取新增的数据(第一次为全量同步)

实现效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IZghw6ga-1670925467599)(Kettle.assets/image-20221213164943527.png)]

实现步骤

1. 准备表数据

​ 新建一个Excel文件,在其中加入以下内容

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lkeZBLgz-1670925467600)(Kettle.assets/image-20221213165712187.png)]

字段说明

字段说明
TAR_TB目标数据库标表(需要同步的数据库标)
SOURCE_TB数据源表(数据来源的表格)
PRIMARY_KEY当前表主键(可有可无)
SYN_TB_NAME同步数据表(用来保存数据库增量同步记录的表)
TIME_FLAG数据库必须包含的字段,也就是当前记录插入或者更新的时间

2. 新建作业

文件——》新建——》作业

分别加入Start、转换、作业、成功四个节点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X3bBml3T-1670925467601)(Kettle.assets/image-20221213170805116.png)]在这里插入图片描述

2.1 获取Excel表格中的数据
2.1.1 新建一个转换

文件——》新建——》转换

加入Excel输入以及设置变量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L7UxfpnI-1670925467602)(Kettle.assets/image-20221213170850955.png)]

2.1.2 在输入里面加入Excel输入

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jxrXnctE-1670925467603)(Kettle.assets/image-20221213171034974.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7HhfhlGC-1670925467604)(Kettle.assets/image-20221213171215917.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wxLMUFR0-1670925467605)(Kettle.assets/image-20221213171250308.png)]

2.1.3 关联Get Data From Excel节点

​ 双击Get Data From Excel节点,然后选择刚才配置的Excel读取转换

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qZHk25Ku-1670925467605)(Kettle.assets/image-20221213171554351.png)]

2.2 配置Synchronize Data节点内容
2.2.1 新建作业

文件——》新建——》作业

加入 Start、转换、转换、JavaScript、转换*2、SQL、成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IpRNnaYC-1670925467606)(Kettle.assets/image-20221213172350883.png)]

2.2.2 配置Get Variable Of Tables

文件——》新建——》转换

加入从结果获取记录、设置变量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HQRq2aQL-1670925467608)(Kettle.assets/image-20221213173425321.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NBglh1h4-1670925467608)(Kettle.assets/image-20221213173550445.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dKG4UmOw-1670925467609)(Kettle.assets/image-20221213173655894.png)]

2.2.3 关联配置的转换,步骤同2.1.3
2.2.4 配置Get Last Synchronize Date节点

文件——》新建——》转换

加入表输入、设置变量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FqGFV4C5-1670925467610)(Kettle.assets/image-20221213174007090.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cnMhxLdD-1670925467610)(Kettle.assets/image-20221213174242574.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5ZnM6AGV-1670925467610)(Kettle.assets/image-20221213174311647.png)]

增量同步记录数据库表SQL

DROP TABLE IF EXISTS `dis_service_syn_records`;
CREATE TABLE `dis_service_syn_records`  (
  `id` bigint(100) NOT NULL AUTO_INCREMENT,
  `syn_table_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '同步表名',
  `last_syn_date` datetime NULL DEFAULT NULL COMMENT '上一次同步日期',
  `error` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '错误日志记录',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '自服务单据数据同步表' ROW_FORMAT = Dynamic;
2.2.5 关联配置的转换,步骤同2.1.3
2.2.6 判断之前是否有同步记录

​ Judge Full Or Incremental节点为一个JavaScript脚本(相关知识点可以自行了解),逻辑思路很简单,就是根据同步表名去查询增量同步记录表中是否含有相对应的记录,有的话就增量,没有的话就将数据全部同步即可

脚本——》JavaScript

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VIEzSYuh-1670925467611)(Kettle.assets/image-20221213174609558.png)]

2.2.7 同步全部

Full lnsertion节点

文件——》新建——》转换

加入表输入、表输出

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qLJfUrvV-1670925467611)(Kettle.assets/image-20221213175124744.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WVsuf8cg-1670925467612)(Kettle.assets/image-20221213175224970.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-agjfjqMM-1670925467612)(Kettle.assets/image-20221213175310854.png)]

2.2.8 同步新增部分

Incremental lnsertion节点

文件——》新建——》转换

加入表输入、表输出

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SA7xUxnF-1670925467613)(Kettle.assets/image-20221213175355781.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gGncSpWZ-1670925467613)(Kettle.assets/image-20221213175526354.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Iq1YcOrL-1670925467614)(Kettle.assets/image-20221213175310854.png)]

2.2.9 同步增量记录表

Logging节点

脚本——》SQL

直接插入更新的数据即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ljUJZcZ3-1670925467614)(Kettle.assets/image-20221213175644087.png)]

点击执行即可

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值