数据库迁移之Oracle 2 MySQL

Posted 图秀大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库迁移之Oracle 2 MySQL相关的知识,希望对你有一定的参考价值。

数字化时代,企业数据中心是企业信息化建设的根基,高性能、高可用、高扩展、高安全的架构设计,对提高企业的管理水平、工作效率、服务能力及竞争力具有重要意义。本文主要结合公司近期Oracle2mysql的“去O化”实际业务需求,对不同数据库迁移技术和工具做了对比,详细介绍了使用navicat工具对公司部分Oracle数据迁移到MySQL的具体实践,以期对有同样业务需求的企业提供参考借鉴。

1、说去O,不得不提去IOE

去IOE的说法起源于互联网行业,由阿里巴巴公司于2010年最先发起。狭义的IOE是指采用IBM服务器、Oracle数据库、EMC存储的数据库架构,广义是指小型机+商业闭源数据库+存储阵列,IOE架构的特点是基于向上扩展(Scale-up)技术的高端设备以及围绕着它们开发的专有硬件、大型数据库和商业中间件。这种IOE架构实际上存在几个问题:第一,在非结构化处理方面能力不足;第二,系统成本高昂,小型机数量比PC数量还高;第三,硬件平台兼容性差,比如惠普硬件无法与IBM系统形成无缝的跨平台;第四,扩展性有限,传统系统都属于TB级,而支持PB级分析交易能力有限。

去IOE的本质就是通过“分布式+开源”架构替代“集中式+封闭”架构,降低成本,提高架构扩展性和可用性,变成彻底的云计算服务模式。阿里目前除了支付宝以外已完成彻底的去IOE化,这无疑对业内提供了成功的范例,政府、电信、教育、医疗、金融、石油石化和电力等以前基于传统IOE架构的行业也将适度跟进这股去IOE的浪潮。而去IOE的最核心的难点就在去Oracle数据库的“去O”上面,这是因为其与业务关联最为密切的特性决定的。下面我就介绍一下Oracle数据库和去O时的几款数据迁移工具。

2、Oracle和MySQL简介

2.1 oracle数据库

ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组商业软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。具有完整的数据管理功能、完备关系的产品、分布式处理功能,支持数据仓库。逻辑结构由逻辑存储结构(表空间,段,范围,块)和逻辑数据结构(表、视图、序列、存储过程、同义词、索引、簇和数据库链等)组成,而其中的模式对象(逻辑数据结构)和关系形成了数据库的关系设计。纵有千般好,Oracle却有个致命伤:商业、闭源,所以就有了现在的Oracle to MySQL。



数据库迁移之Oracle 2 MySQL

2.2 MySQL数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle旗下公司。MySQL是最流行的关系型数据库管理系统,与其他的大型数据库例如 Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且MySQL开源……、MySQL开源……、MySQL开源……(重言三) 。业界流行的“LAMP“或“LNMP”网站架构中的M就是MySQL。

数据库迁移之Oracle 2 MySQL

3、Oracle 2 MySQL方法与工具

3.1 手动导入:操作岂止是繁琐,而且完全没有效率……

对表结构和数据:①使用SQL Developer把oracle的table的schema和Data(.sql 和 .xls)导出;②使用MySQL的WorkBench创建Table和导入数据。

这里语法上会稍微有一些不同,所以需要略微做一些调整。对于View来说,特别是复杂的有子查询的Oracle View说,要导入到MySQL看起来就不是那么容易了。

3.2 使用工具DBMover和工具intelligent-converters的OracleToMySQL进行导入

这两个都是收费的软件,而且只能进行表的迁移,不支持迁移视图。和Navicat比较起来,显得功能简单,只能migrate table, 而且使用上也不是很方便。

3.3 阿里yugong开源项目

yugong 是阿里巴巴推出的去Oracle数据迁移同步工具(全量+增量,目标支持MySQL/DRDS),由java语言开发。

08年左右,阿里巴巴开始尝试MySQL的相关研究,并开发了基于MySQL分库分表技术的相关产品,Cobar/TDDL(目前为阿里云DRDS产品),解决了单机Oracle无法满足的扩展性问题,当时也掀起一股去IOE项目的浪潮,愚公这项目因此而诞生,其要解决的目标就是帮助用户完成从Oracle数据迁移到MySQL上,完成去IOE的第一步。

整个数据迁移过程,分为两部分:

(1)全量迁移

(2)增量迁移

数据库迁移之Oracle 2 MySQL

过程描述:

(1) 增量数据收集 (创建oracle表的增量物化视图)

(2) 进行全量复制

(3) 进行增量复制 (可并行进行数据校验)

(4) 原库停写,切到新库

架构

数据库迁移之Oracle 2 MySQL

说明: 

(1)一个Jvm Container对应多个instance,每个instance对应于一张表的迁移任务

(2)instance分为三部分

a. extractor (从源数据库上提取数据,可分为全量/增量实现)

b. translator (将源库上的数据按照目标库的需求进行自定义转化)

c. applier (将数据更新到目标库,可分为全量/增量/对比的实现)

3.4 使用Navicat Premium工具进行数据库迁移

Navicat Premium是一款数据库管理工具,是一个可多重连线资料库的管理工具,它可以让你以单一程式同时连线到MySQL、SQLite、Oracle及PostgreSQL资料库,让管理不同类型的资料库更加的方便。结合了其他Navicat成员的功能。有了这种连线到不同资料库类型的能力,Navicat Premium支援在MySQL、SQLite、Oracle及PostgreSQL之间传输资料。它支持大部分的MySQL、SQLite、Oracle及PostgreSQL功能,包括预存程序、事件、触发器、函式、检视等。

数据库迁移之Oracle 2 MySQL

利用Navicat Premium进行Oracle2MySQL的迁移流程:

(1) 打开软件>File>New Connection  分别新建Oracle和MySQL连接

数据库迁移之Oracle 2 MySQL

【注意】Oracle连接之前需要对软件进行OCI文件配置,oci.dll文件就在Oracle client文件里面,这和配置PLSQL Developer差不多。

数据库迁移之Oracle 2 MySQL

数据库迁移之Oracle 2 MySQL

数据库迁移之Oracle 2 MySQL

数据库迁移之Oracle 2 MySQL

(3)连接好之后,在目标Oracle数据库上:右击>Data Transfer>General

数据库迁移之Oracle 2 MySQL

数据库迁移之Oracle 2 MySQL

(4)配置数据迁移选择要迁移的数据表、视图等设置迁移目标数据库

数据库迁移之Oracle 2 MySQL

(5)高级选项设置

数据库迁移之Oracle 2 MySQL

(6)数据迁移成功

数据库迁移之Oracle 2 MySQL

PS:迁移后发现数据库显示乱码,肯定是字符编码不一致的问题。在目标数据库MySQL上右击>Connection Properties 将“Use MySQL charcter set”复选框上的勾去掉,在Encoding选项下拉框中选择UTF-8编码格式。重新迁移,大功告成。

数据库迁移之Oracle 2 MySQL

数据库迁移之Oracle 2 MySQL

最后,补充一下备份导出MySQL.sql文件的方法:右击数据库>Dump SQL File>Structure And Data

4、 总结

随着阿里去IOE化的示范效应越来越明显,继大批互联网企业之后,政府、电信、教育、医疗、金融、石油石化和电力等以前基于传统IOE架构的传统公共服务行业必将下定决心跟进这股去IOE的浪潮,数据迁移的技术需求会越来越大,本文主要介绍了几种Oracle to MySQL的方法和工具,并结合公司部分Oracle2MySQL数据迁移业务需求,利用Navicat Premium工具做了Oracle to MySQL技术实践,希望能够为有数据迁移需求的机构提供参考借鉴。

参考文献:

[1]浅谈运营商去IOE

http://j.news.163.com/docs/99/2015062616/AT208OPJ90018OPK.html

[2]数据库迁移之从oracle 到 MySQL

http://blog.csdn.net/oscar999/article/details/39022623

[3]阿里巴巴 yugong项目

https://github.com/alibaba/yugong

以上是关于数据库迁移之Oracle 2 MySQL的主要内容,如果未能解决你的问题,请参考以下文章

datax数据迁移之从oracle往Mysql迁移

数据库迁移之-Oracle 与MySQL互相转换

数据库迁移之从oracle 到 MySQL最简单的方法

oracle迁移到mysql方案之——ogg(goldengate)

数据库迁移之从oracle 到 MySQL最简单的方法

oracle迁移到mysql分库分表方案之——ogg(goldengate)