Kettle实现数据库的增量同步

本文介绍如何使用Kettle实现数据库的增量同步,包括全量同步和增量同步的配置过程。适用于需要将生产环境数据同步到测试环境的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)]

点击执行即可

### 回答1: Kettle 数据库同步是一种数据传输和更新机制,通过将一个数据库数据同步到另一个数据库中,以实现数据的一致性和完整性。Kettle是一个开源的ETL(Extract, Transform, Load)工具,可以对数据进行提取、转换和加载,广泛应用于数据集成和数据仓库领域。 Kettle 数据库同步的过程包括以下几个步骤。首先,需要配置源数据库和目标数据库的连接信息,包括数据库服务器地址、端口号、数据库名称、用户名和密码等。然后,通过Kettle提供的图形化界面,选择需要同步的表或数据,并设置同步的频率和方式。可以选择全量同步增量同步,全量同步将源数据库中的所有数据复制到目标数据库中,而增量同步同步数据库中新增或修改的数据。 在Kettle中,可以使用多种方式进行数据库同步操作。其中一个常用的方式是使用Kettle的转换任务(Transformation)来实现数据库同步。转换任务是由一系列步骤组成的工作流程,可以对数据进行提取、转换和装载。在转换任务中,可以使用Kettle提供的输入、输出和转换步骤,通过连接源数据库和目标数据库实现数据的传输和更新。可以使用输入步骤从源数据库读取数据,并通过转换步骤对数据进行清洗和转换,最后使用输出步骤将数据写入目标数据库中。 Kettle数据库同步具有以下优点。首先,它是一种灵活、可扩展和可定制的数据同步方式,可以根据具体需求进行配置和调整。其次,Kettle提供了一套丰富的转换步骤和功能,可以对数据进行复杂的处理和转换,满足不同的应用场景。此外,Kettle还支持多种数据库和文件格式,可以方便地进行不同数据库之间的数据传输和同步操作。 总之,Kettle数据库同步是一种实现数据一致性和完整性的重要工具,通过配置和使用Kettle工具,可以实现灵活、可定制的数据库同步操作,满足各种数据集成和数据仓库的需求。 ### 回答2: Kettle 数据库同步是指通过使用 Kettle 工具来实现两个或多个数据库之间数据的同步操作。Kettle 是一种强大的 ETL(抽取、转换和加载)工具,可以帮助用户在不同的数据库之间传输和转换数据,使数据保持同步和一致。 Kettle 数据库同步的步骤如下:首先,用户需要在 Kettle 工具中创建两个数据源,分别代表源数据库和目标数据库。然后用户可以使用 Kettle 的转换和任务功能来设计数据同步的流程。 在流程设计中,用户可以使用转换步骤中的输入步骤和输出步骤来读取源数据库中的数据并写入到目标数据库中。用户可以通过选择合适的表和字段来定义数据的筛选和转换规则。例如,可以通过使用过滤器、排序器和映射器来处理数据的条件、排序和格式等问题。此外,用户还可以使用插入、更新和删除步骤来实现数据的插入、更新和删除操作。 一旦定义了数据同步的流程,用户可以通过运行 Kettle 转换或任务来执行同步操作。Kettle 将根据流程中的定义,自动从源数据库读取数据并将其写入到目标数据库中。在同步过程中,Kettle 还会提供详细的日志信息和错误处理功能,以便用户可以及时发现和解决数据同步中可能出现的问题。 总结来说,Kettle 数据库同步是一种基于 Kettle 工具的数据传输和转换操作。它可以帮助用户在不同的数据库之间实现数据的同步和一致性,使得数据在不同数据库间保持更新和相互关联。 ### 回答3: kettle数据库同步是指通过kettle工具来实现不同数据库之间数据的同步和传输。kettle是一款开源的ETL(Extract-Transform-Load)工具,可以用于数据的抽取、转换和加载。它支持多种数据库,如Oracle、MySQL、SQL Server等。 数据库同步通常包括两个步骤:数据的抽取和数据的加载。 在数据抽取阶段,kettle可以连接到源数据库,并选择要抽取的数据表或视图。用户可以定义抽取数据的条件、筛选字段和数据转换规则等。kettle提供了多种抽取方式,如全量抽取、增量抽取和增量抽取+日志方式。用户可以根据具体需求选择适合的抽取方式。 在数据加载阶段,kettle可以连接到目标数据库,并选择要加载数据的目标表。用户可以定义数据的加载方式,如全量加载、增量加载和追加加载等。kettle还提供了数据清洗和转换功能,可以对抽取的数据进行处理,如数据清洗、字段转换、数据合并等。用户可以根据需要进行相应的数据处理。 kettle还支持数据同步的调度功能,用户可以定义定时任务,设置数据同步的频率和时间,实现自动化的数据同步过程。 总之,kettle数据库同步是一种方便、灵活的数据同步工具,可以实现不同数据库之间的数据同步和传输。通过kettle的抽取、转换和加载功能,可以满足不同需求的数据同步任务,并提供定时调度功能,实现自动化的数据同步过程。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值