​​利用kettle实现oracle到mysql数据库增量同步方案(转)!

​​利用kettle实现oracle到mysql数据库增量同步方案(转)!

近期涉及一个BI项目初期阶段,构建数据仓库时遇到不少问题,主要问题,来源已下几个方面:

     1 不同业务数据放在不同类型的数据库(oracle和mysql的,excel等等)。

     2 源端数据库种类不同,表结构创建语句与设计不一,导致不好同步问题。

     3 源端数据库只提供只读状态,无法对源端做起停和写操作。

     4 源数据库中没有定义和更新时间字段无法做到增量同步。

     于是纠结与选什么类型的同步方案。

   其实方案很多,比如oracle中sqldevelop中的sqlload,也尝试使用mysql的mysqldump,python,OGG,可以说只有实践才知道各有缺点。

详细请看https://www.cnblogs.com/andy6/p/6959028.html。就知道  为什么选择kettle当做选择方案?

下面具体介绍如何使用kettle实现oracle到mysql增量同步,也是做一个总结。

1 选择服务(cpu,磁盘空间,内存尽量好点,安装 Ubuntu,下载安装kettle软件,安装mysql。kettle安装和mysql安装很简单,  注意的是安装完kettle需要的lib打oracle和mysql的jar包。否则无法远程连接数据库。配置主机网卡,保证网络通畅。

2 打开kettle,新建事务,增加控件文本文件输入,复制记录到结果:文件输入打开其实就是你需要同步的文本文件,文本文件中的内容就是你需要同步的表名称。这里需要把表名称赋值给一个字段值。

006fRELkly4gozpy0ylrej30r509s3zp

006fRELkly4gozpy0w5mpj309e06st8z

006fRELkly4gozpy0wdvlj30rj032jrz

3 获取到结果后,我们需求把结果赋值给一个变量。做好分开事务编写。并定义变量名称。适用于整个循环。

006fRELkly4gozpy0ue1lj30em07et9b

006fRELkly4gozpy0v5efj30mp0820tg

4 新建事务,创建各个数据库链接,创建表输入和表输出。注意表输入和表输出变量的运用和提交次数。

(我这里是因为中间数据仓库用的mysql,因为每张表几乎没有时间字段,如果有编辑时间字段,建议新增变量,以时间作为增量同步的时间戳,所以在oracle端为每张表创建了增量物化视图。每张表增量同步的只同步生产业务表的不等于自身增量物化视图的数据,以表的伪列rowid作为增量的唯一标示和判断是否是增量的条件。每张表同步完后,会定制任务重新立即刷新增量物化视图,这样循环,就会做到增量同步的效果,又不会有数据缺损,之前也做过全量数据同步,时间是增量同步的几十倍,可见数据量大了,只有利用增量同步效果才是最佳。)

1 创建数据库链接

006fRELkly4gozpy0vgn6j30pc0eytb4

2 创建表输入输出。

006fRELkly4gozpy0vnycj30ux0a9wgi

006fRELkly4gozpy0vlxrj312408mmy5

4 在oracle端创建增量物化视图,这里需要先创建物化视图日志,在创建增量物化视图,mysql端类似oracle的表结构。mysql

端创建相同的表结构时会遇到很多问题。(1 同步数据产生乱码问题, mysql数据库链接出增加utf8

006fRELkly4gozpy0x45tj30os07xwfh

2 批量创建表语句这里使用了网上给的fnc_table_to_mysql函数,批量生产mysql端的建表语句,但是结构差强人意,需要自己调整才能在mysql端创建,问题有oraclenumber在mysql端往往不能定义int,必须是bigint 长度问题。varchar问题等,遇到具体问题,需要查看kettle的报错日志解决。)

5 数据库链接建好之后,在mysql端创建相同表结构后,接下来常见job.我这里job都是运用之前创建好的事务,最后一个是刷新物化增量物化视图用的, 意思就是向mysql每次同步完增量数据后,继续刷新oracle增量物化视图,这样才不会产生时间差数据未同步问题。

006fRELkly4gozpy0wjd7j311e0amabo

6 新建job,制定自动化任务。把第一个事务和后面创建的job进行组合成一个自动化流程,这里注意无法一个jOB实现所有功能,因为有个变量循环问题。可以定义每10分中刷新一次,或者每天刷新一次。这里看具体需求。

006fRELkly4gozpy0xk8aj30rv084t9i

006fRELkly4gozpy0we0qj30jh0b83zc

7 mysql到mysql的数据同步。

建议federated引擎表。可以远程实时访问数据。这里具体操作不做陈述。类似与oracle dblink,但是有很大的不同。

006fRELkly4gozpy0zrtej314o063t9g

8 这样数据仓库搭建完毕,既能实时访问远程只读mysql对其性能无影响,又能访问oracle,并在自己的数据库构建数据仓库模型。

006fRELkly4gozpy0z4wgj30d104p74l

如果大家有其他的方法,或者想要知道哪方面的办公技巧,下方评论哦~

学习资料见知识星球。

以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。

快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利​​​​!

更多技巧, www.excelbook.cn

欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;

2022021703525891-274

你将获得:

1、价值上万元的专业的PPT报告模板。

2、专业案例分析和解读笔记。

3、实用的Excel、Word、PPT技巧。

4、VIP讨论群,共享资源。

5、优惠的会员商品。

6、一次付费只需99元,即可下载本站文章涉及的文件和软件。

文章版权声明 1、本网站名称:Excelbook
2、本站永久网址:http://www.excelbook.cn
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长王小琥进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。

THE END
分享
二维码
< <上一篇
下一篇>>