一、需求背景
由于项目场景原因,需要将A库(MySQL)中的表a、表b、表c中的数据定时T+1
增量
的同步到B库(MySQL)。这里说明一下,不是数据库的主从备份,就是普通的数据同步。经过技术调研,发现Kettle挺合适的,原因如下:
- Kettle (数据抽取、清洗、转换、装载)是由java 编写,可以在 Window、Linux、Unix 上运行。支持多数据源, 多种中间件的专业ETL 工具;
- 可视化界面支持图形化GUI设计界面,组件多样性,支持组件拖拉拽,不用写额外的代码;
- Kettle的流程图本质上都是配置文件,如.ktr/.kjb文件。这种设计的好处就是,当我们把转换流程图画完之后,可以直接复制到另外一个环境中运行,如:在Windows电脑上画好流程图,复制到Liunx系统上运行。
- 免费、组件多、支持开源,一般处理T+1的数据同步是没有问题的。如果并发高、数据量大就建议使用Flink了。
二、使用方式
1. 安装包下载
官网地址:https://sourceforge.net/projects/pentaho/files/Data%20Integration/
2. 启动方式
Windows点击Spoon.bat启动
出现以下图片表示正在启动,如果一直没有反应,使用管理员身份运行
。
主界面如下:
三、连接MySQL数据库
1. 准备MySQL连接驱动jar包
由于Kettle自身是不带任何数据库驱动包的,所以这里我们需要先自己准备好驱动包,版本最好选择5.1.49。下载好jar包后,拷贝到lib目录下(Windows和Linux同理)。如果已经启动了Kettle,则需要关掉重新启动,否则驱动包不会被加载。
2. 创建数据源
依次点击:转换——>主对象树——>DB连接——>点击新建——>测试
同上操作,创建好两个数据源:源数据库、目标库;目标就是将源数据库中的表数据同步到目标库中去
3. 配置转换流程
① 加入输入节点:转换——>输入——>表输入
② 双击输入节点打开配置页,输入一下信息
这里因为我是定时T+1
增量
同步数据,所以我加了个同步条件WHERE gmt_create >= CURDATE()
表示该数据创建时间大于当天才会进行查询。
点击预览,正好有一条数据