Kettle增量同步数据
Kettle有几年没用过了,昨天刚好开发找我,说同步ORACLE几张表的数据到MySQL,ORACLE的数据有可能更新,可以通过时间字段,但是全量同步,当天上生产由于数据量大不一定来得及,需要提前想个方案,问我做还是他来做,说他没有找到什么好办法,那就我来吧。就在这一瞬间,我脑子里浮现出来几个方案:
1. 用python写个程序读取ORACLE,通过ID判断,来增量插入到MySQL
2. 用JAVA写个程序读取ORACLE,通过ID判断,来增量插入到MySQL
3. 通过SPARK批量读取ORACLE,通过ID判断,来增量插入到MySQL
4. 通过ORACLE spool到文件,然后在MySQL load inpath
5. 通过kettle增量插入并更新
以上1-4都是增量插入,那么更新的数据怎么来处理,我想了一个办法,通过盗用ogg抓取ORACLE日志存放到KAFKA,写一个spark streaming实时更新这些数据到MySQL。
第一个想法通常会第一个实现,因此我打开Pycharm,安装oracle, MySQL的module, 一直提示gcc++错误,装不了,于是百度,浪费了我半个小时也没搞定,于是放弃了,反正我方案多的是。思来想去,还是用kettle吧,ETL工具不用太麻烦。
我习惯性的把问题肢解成2个步骤:
1. 增量插入
2. 处理更新的数据
增量插入的思路很简单,假设同步test到test1
转换1(获取最大的ID):select max(id) as endid from test --->设置变量
转换2(获取最小的ID): select max(id) as startid from test1 ---->设置变量
转换3: 获取变量--->table input ---> table output
input的SQL:select * from test where id > ${startid} and id <= ${endid} ;
就是这么简单3步解决。整个JOB的连接顺序如下:
好了,以上搞定了增量同步插入,现在来处理更新的数据。
更新的数据处理实际是比较麻烦的,通过kettle来做的话,需要这么来处理。 从test表查询数据,从test1查询数据,然后进行比较,数据量大的话,这个比较实际上会很慢的。
看上面的合并记录的定义,比较2个数据流,然后我们可以通过时间戳的对比,如果发现不同,表示这个数据需要更新。通常不用考虑delete的问题,因为现在大部分不会直接删除数据,基本是通过设置行的状态,来表示数据可用还是不可用,实际也就只需要考虑update.
既然上面的效率不好,那么考虑使用我们5种方案来处理update的数据。
逻辑简单:ogg监控ORACLE日志,抓取相关表的日志到kafka,然后通过spark streaming或者storm处理数据,发现变更的字段直接拼接SQL,在mysql里面更新即可,做到实时。
Kettle增量同步数据相关推荐
- Mysql5.7使用DTS增量同步数据到MaxCompute
背景:一些客户反馈,增量同步数据到MaxCompute按照全天的数据做增量数据同步数据量太大,且不使用按天的增量同步数据,进行在MaxCompute上进行数据处理得出增量数据对于delete的相关数据 ...
- MySQL从零到一解读增量同步数据到elasticsearch canal adapter方式(binlog)实现
本文是作者在单机上面从零到一实现增量同步MySQL数据到elasticsearch canal adapter方式(binlog)实现. 实现步骤 (1)安装MySQL (2)开启MySQL binl ...
- 使用canal实现MySQL 8 增量同步数据到 ElasticSearch 7.15.2中 linux
文章目录 一.清空控制台 1. 清空控制台 2. 修改数据 3. 监控数据 4. 数据变化 5. 索引查询 6. 预期性能评估 7. 增量同步分析 二.验证方案 2.1. 把shop索引删除 2.2. ...
- Clickhouse单机部署以及从mysql增量同步数据
背景: 随着数据量的上升,OLAP一直是被讨论的话题,虽然druid,kylin能够解决OLAP问题,但是druid,kylin也是需要和hadoop全家桶一起用的,我也搞不定,那只能找我能搞定的技术 ...
- clickhouse + ProxySQL 单机部署及增量同步数据
背景: 随着数据量的上升,OLAP一直是被讨论的话题,虽然druid,kylin能够解决OLAP问题,但是druid,kylin也是需要和hadoop全家桶一起用的,异常的笨重.故引进clickhou ...
- clickhouse 同步mysql_ClickHouse单机部署以及从MySQL增量同步数据
背景: 随着数据量的上升,OLAP一直是被讨论的话题,虽然druid,kylin能够解决OLAP问题,但是druid,kylin也是需要和hadoop全家桶一起用的,异常的笨重,再说我也搞不定,那只能 ...
- 第02期:ClickHouse 单机部署以及从 MySQL 增量同步数据
本期作者:邓亚运 37 互娱高级 DBA,负责公司 MySQL,Redis,Hadoop,Clickhouse 集群的管理和维护. 背景 随着数据量的上升,OLAP 一直是被讨论的话题,虽然 drui ...
- 大数据Kettle实时同步数据的六种方案
数据同步:当数据源发生改变时,其他相关数据也跟着发展变化.根据需求不同可采取以下方案. 1.触发器 在数据库建立增删改的触发器.触发器将变更放到一张临时表里.oracle同步cdc 优点:实时同步 缺 ...
- 两个数据库字符集不一样,如何快速增量同步数据.
环境: DB-A 字符集:US7ASCII DB-B 字符集:ZHS16GBK 需求: 从DB-A中将一个表的中文数据通过JAVA定时任务同步到DB-B. DB-A库中表的信息如下: CREATE T ...
最新文章
- Java获取照片的Exif信息,并解析GPS
- 对讲机的那点事:带你玩转LD800数字车载台读、写频操作:一
- python爬虫完整实例-Python爬虫 实例
- 清理和删除svn信息
- 提交自己开发的MR作业到YARN上运行的步骤
- @SuppressWarnings(rawtypes) 是什么含义
- 苹果留给 iOS 开发者的时间不多了:30 天内必须更新旧版本
- 程序员只能吃“青春饭”?C 认证带你破局!
- hibernate4 could not initialize proxy - no Session
- DataGrid分页(1)
- chartControl控件常用属性总结
- Android Paint 详细讲解
- lol全队消息怎么发_英雄联盟如何发全部消息,LOL怎样发送消息给全部
- QT 信号toggled triggered区别
- 杂谈随想第002篇:博客访问量破万的想法
- 数据流分析之Reaching Definition Analysis
- 谷歌浏览器在线观看视频有声音但画面黑屏问题解决
- 浅入浅出Caffeine cache
- 到墨西哥的液体货物国际快递怎么邮寄
- 安全应用超市:购君所需,付君所用