文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

使用Kettle定时从数据库A同步数据到数据库B

2023-08-24 15:47

关注

由于项目场景原因,需要将A库(MySQL)中的表a、表b、表c中的数据定时T+1 增量的同步到B库(MySQL)。这里说明一下,不是数据库的主从备份,就是普通的数据同步。经过技术调研,发现Kettle挺合适的,原因如下:

  1. Kettle (数据抽取、清洗、转换、装载)是由java 编写,可以在 Window、Linux、Unix 上运行。支持多数据源, 多种中间件的专业ETL 工具;
  2. 可视化界面支持图形化GUI设计界面,组件多样性,支持组件拖拉拽,不用写额外的代码;
  3. Kettle的流程图本质上都是配置文件,如.ktr/.kjb文件。这种设计的好处就是,当我们把转换流程图画完之后,可以直接复制到另外一个环境中运行,如:在Windows电脑上画好流程图,复制到Liunx系统上运行
  4. 免费、组件多、支持开源,一般处理T+1的数据同步是没有问题的。如果并发高、实时性高、数据量大就建议使用Flink了。

1. 安装包下载

官网地址:https://sourceforge.net/projects/pentaho/files/Data%20Integration/

2. 启动方式

Windows点击Spoon.bat启动

出现以下图片表示正在启动,如果一直没有反应,使用管理员身份运行

主界面如下:

1. 准备MySQL连接驱动jar包

由于Kettle自身是不带任何数据库驱动包的,所以这里我们需要先自己准备好驱动包,版本最好选择5.1.49。下载好jar包后,拷贝到lib目录下(Windows和Linux同理)。如果已经启动了Kettle,则需要关掉重新启动,否则驱动包不会被加载。

2. 创建数据源

依次点击:转换——>主对象树——>DB连接——>点击新建——>测试

同上操作,创建好两个数据源:源数据库、目标库;目标就是将源数据库中的表数据同步到目标库中去

3. 配置转换流程

① 加入输入节点:转换——>输入——>表输入

② 双击输入节点打开配置页,输入一下信息

这里因为我是定时T+1 增量同步数据,所以我加了个同步条件WHERE gmt_create >= CURDATE() 表示该数据创建时间大于当天才会进行查询。

点击预览,正好有一条数据

③加入转换节点:转换——>插入/更新——>按住shift建立连接

④ 双击插入/更新节点,打开配置页

⑤ 点击运行测试

在Linux上,ktr文件使用Kettle的pan.sh脚本运行,命令大致如下:
sh /home/admin/kettle/data-integration/pan.sh -file=/home/admin/kettle/ktr/table_transfer.ktr -norep

为了实现定时执行这个脚本,我打算用Linux自带的corntab功能设置定时。

首先我编写了一个shell脚本,命名为cornSql.sh,用于保存ktr的执行命令,内容如下:

#!/bin/bash export KETTLE_HOME=/home/admin/kettle/data-integrationexport JAVA_HOME=/usr/java/jdk1.8.0_131export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jarexport PATH=$PATH:${JAVA_HOME}/bin:${KETTLE_HOME}export JRE_HOME=${JAVA_HOME}/jreTIME=$(date "+%Y%m%d")sh /home/admin/kettle/data-integration/pan.sh -file=/home/admin/kettle/ktr/table_transfer.ktr -norep >>/home/admin/kettle/log/transfer-"$TIME".log

其次,将ktr脚本拷贝到指定目录下,也就是/home/admin/kettle/ktr目录下,输入crontab -e命令打开指令界面,输入0 1 * * * /home/admin/kettle/cornSql.sh指令,这句话的意思是每天凌晨1点定时执行cornSql.sh脚本

为了检查定时配置是否生效,这里可以使用 crontab -l -u root命令,如果刚才的定时指令有打印出来,则证明配置生效。

最后,第二天检查一下执行日志文件有没有生成,在/home/admin/kettle/log目录下,这里我把每天执行的日期打印出来了,如下图:

来源地址:https://blog.csdn.net/weixin_33005117/article/details/129998959

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯