加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码门户网 (https://www.92codes.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

从Oracle迁移到MySQL的各种坑及自救方案

发布时间:2021-01-11 08:19:30 所属栏目:安全 来源:网络整理
导读:副标题#e# 《从Oracle迁移到MySQL的各种坑及自救方案》要点: 本文介绍了从Oracle迁移到MySQL的各种坑及自救方案,希望对您有用。如果有疑问,可以联系我们。 本文根据冯帅老师在〖4月8日DBAplus社群上海数据库技术沙龙〗现场演讲内容整理而成. 讲师介绍 冯

MySQL官方同样也提供一个用于异构之间的数据迁移工具,从MySQL到其它数据库,或者从其它数据库到MySQL都是可以的.这个工具就是MySQL Migration Toolkit.这个工具可以单独被下载,也被集成到了MySQL wrokbench里.不过如果单独下载的话 只有windows的版本.

https://downloads.MySQL.com/archives/migration/

这是一个基于Java的程序,所以依赖于jar包,使用它的第一步就是load一个odbc.jar.接着就可以把源端和目标端进行配置连接,选择要导入的对象(可以包含视图,但是一般有子查询的会报错),进行导入就可以了.

使用它的优点就是可以在MySQL端自动创建表,但有可能自动convert的类型若有问题,需要人为参与一下进行处理,比如Oracle中通常会对Timestamp类型的数据设置默认值sysdate,但在MySQL中是不能识别的.

缺点就是只有windows的平台有,在导大数据量时,极有可能就hang住了.所以个人感觉它的适用场景就是一次性导入的小批量的数据.

5、KETTLE

上面提到的几种工具都是一步一个坑使用过之后发现并没有尽善尽美,总有这样或者那样的不足,接下来我们来推荐的就是终级必杀的好用的etl工具:KETTLE.

它是一款纯Java编写的软件,就像它的名字(水壶)一样,是用来把各种数据放到一个壶里,然后以一种指定的格式流出.当然你也可以使用DS(datastage)或者Informatica.不过这两个是收费的,而kettle是免费开源的.

这里只介绍它最简单的能满足我们把数据从Oracle迁移到MySQL的功能.

同理,第一步把jar包load进去,不同的是,这次要load的是MySQL的jar包.需要注意的是,如果你的MySQL版本不同可能需要load不同的jar包.第二步同也是配置连接信息,保证你的源和目标都连接成功,最后一步就是简单的拖拖拽拽.最后run一下就可以了.

它的优点就是配置起来比OGG快,但是同样可以通过job做到实时同步,处理速度和Python旗鼓相当,却不用自己来写mapping关系,并且提供了图形化界面.也能和Migration Toolkit一样同时创建表(新增一个Java脚本),进行类型转换,但日志更详细.只是可能学习成本高一点,要看的懂一些Java报错方便调试.

接下来我们简单看一个demo:

我们运行spoon.sh之后可以打开这个界面.view一界显示了这个转换的名字、数据源、处理步骤等,中间区域是你拖拽出来的操作,一个输入,一个输出.这就是一个简单的数据迁移的所有步骤.

打开input的内容,就是很简单的一条SQL在哪个源数据库上抽取数据,当然这条SQL也可以是拖拽生成出来,类似于congos的拖拽生成报表.千万要注意的是,不要加分号!

output的内容就显示丰富了很多,选择目标数据源,以及会自动的mapping列的信息,还有在迁移之间要不要先清空,迁移过程中如果遇到问题了会不会中止.

这里就是显示了它超越Migration tools的log最细粒度到行级别,可以更快地分析出问题.

这里则是详细的日志输出.一般如果定时跑批处理的话,把它重定向到具体的log里,然后当做发送邮件.

四、其它对象的迁移

(编辑:源码门户网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读