免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 15638 | 回复: 28
打印 上一主题 下一主题

【话题讨论】Mysql的数据库,大家是如何迁移到Oracle的?(获奖名单已公布-2013-7-2) [复制链接]

论坛徽章:
8
巨蟹座
日期:2013-08-12 09:41:40IT运维版块每日发帖之星
日期:2015-12-09 06:20:00寅虎
日期:2013-12-25 14:59:40天秤座
日期:2013-12-06 14:04:55酉鸡
日期:2013-11-28 10:22:22水瓶座
日期:2013-08-26 15:40:54巨蟹座
日期:2013-08-12 09:42:01每日论坛发贴之星
日期:2015-12-09 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-06-08 10:48 |只看该作者 |倒序浏览
获奖名单已公布,详情请看http://bbs.chinaunix.net/thread-4088736-1-1.html

大家在日常工作中可能因为工作需要经常会需要在不同的数据库之间转移,这是很正常的,今天我们就来谈谈Mysql和Oracle之间的数据库同步转移问题。

讨论话题:
1.请问下,Mysql的数据库,大家是如何迁移到Oracle的?
2.oracle与MYSQL之间的同步有哪些方法以及和种方法的难点?
3.Mysql一个DB,是分多个库的,Oracle也要对应的分成多个库吗?

讨论时间:2013.6.8--2013.6.25

讨论奖励:活动结束后将会抽取3名会员赠送《循序渐进Oracle》一本。

论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:31CU大牛徽章
日期:2013-05-20 10:46:25CU大牛徽章
日期:2013-05-20 10:46:18CU大牛徽章
日期:2013-04-17 11:19:51CU大牛徽章
日期:2013-04-17 11:19:42CU大牛徽章
日期:2013-04-17 11:19:37CU大牛徽章
日期:2013-04-17 11:19:32CU大牛徽章
日期:2013-04-17 11:19:28
2 [报告]
发表于 2013-06-08 11:30 |只看该作者
1.请问下,Mysql的数据库,大家是如何迁移到Oracle的?

先导出成sql文件,然后直接运行
双机热备份、双机互备援也可以直接备份数据
2.oracle与MYSQL之间的同步有哪些方法以及和种方法的难点?


先导出、后导入
双机热备份
双机互备援
3.Mysql一个DB,是分多个库的,Oracle也要对应的分成多个库吗?

不会吧,MySQL支持多个数据库,Oracle 只能支持一个

论坛徽章:
18
卯兔
日期:2013-09-27 17:41:0615-16赛季CBA联赛之佛山
日期:2016-07-09 17:34:45操作系统版块每周发帖之星
日期:2015-12-02 15:01:04IT运维版块每日发帖之星
日期:2015-12-02 06:20:00IT运维版块每日发帖之星
日期:2015-10-07 06:20:00IT运维版块每日发帖之星
日期:2015-10-03 06:20:00IT运维版块每日发帖之星
日期:2015-10-01 06:20:00羊年新春福章
日期:2015-04-01 17:56:06拜羊年徽章
日期:2015-04-01 17:56:062015年迎新春徽章
日期:2015-03-04 09:49:452015年辞旧岁徽章
日期:2015-03-03 16:54:15天秤座
日期:2015-01-14 06:39:28
3 [报告]
发表于 2013-06-08 11:47 |只看该作者
.....占座留念

论坛徽章:
18
卯兔
日期:2013-09-27 17:41:0615-16赛季CBA联赛之佛山
日期:2016-07-09 17:34:45操作系统版块每周发帖之星
日期:2015-12-02 15:01:04IT运维版块每日发帖之星
日期:2015-12-02 06:20:00IT运维版块每日发帖之星
日期:2015-10-07 06:20:00IT运维版块每日发帖之星
日期:2015-10-03 06:20:00IT运维版块每日发帖之星
日期:2015-10-01 06:20:00羊年新春福章
日期:2015-04-01 17:56:06拜羊年徽章
日期:2015-04-01 17:56:062015年迎新春徽章
日期:2015-03-04 09:49:452015年辞旧岁徽章
日期:2015-03-03 16:54:15天秤座
日期:2015-01-14 06:39:28
4 [报告]
发表于 2013-06-08 11:51 |只看该作者
本帖最后由 qingduo04 于 2013-06-08 11:52 编辑

异构数据库同步数据,应该有几种同步方式
1. 底层存储复制,如果架构设计一致,应该可以采用此种方法。
2. 根据导入导出方式,把源数据库文件导出,再load到目标数据库中,当然此方法可以通过脚本程序编写,比如perl。
      根据配置表,读取源表表结构.
         导出数据。
      根据数据字典对应关系,在目标库建表,再进行导入。
      导入完毕后,进行数据校验,写标志位。
3.可以进行联邦,进行远程数据同步。

再回归正题
1.请问下,Mysql的数据库,大家是如何迁移到Oracle的?
按照如上就可以进行同步,一般采用方法二。
2.oracle与MYSQL之间的同步有哪些方法以及和种方法的难点?
  个人觉得同步的时候,数据库基本配置,比如字符集等,必须一致,否则转换过程容易出现问题。
特殊的表,比如自增表、主外键表等需要进行特殊处理。
大字段表等

3.Mysql一个DB,是分多个库的,Oracle也要对应的分成多个库吗?
这种应该是同步的一种方式,如果采用方法二,可以导出数据进行追加,再进行导入。

请各位指点
   

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
5 [报告]
发表于 2013-06-08 11:57 |只看该作者
3.oracle可以用多个用户来对应mysql的多个库.
2.对于复杂的系统,迁移的工作量是很大的,数据的迁移只是很小一部份
关键是相关的程序
估计没有哪个系统的程序是全部用标准sql写成的(例如,日期函数,翻页功能)
1.移植一般就是先整体设计,程序部分全部重写,
  表结构原样重建或者可以修改(比如外键\分区), 也有pdm工具可以自动化
  数据部分比较简单,两边有导入导出工具,可以传成兼容格式, 或者sql
重建索引
trigger,process,function,job全部重写

相对而言,oracle功能更强,mysql迁到oracle比较容易,也有一些方案可以做方向性指导
反向迁移就很困难了

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每月发帖之星
日期:2015-09-11 19:30:52IT运维版块每周发帖之星
日期:2015-09-11 19:20:31IT运维版块每日发帖之星
日期:2015-08-26 06:20:00每日论坛发贴之星
日期:2015-08-20 06:20:00IT运维版块每日发帖之星
日期:2015-08-20 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:15金牛座
日期:2014-05-04 16:58:09双子座
日期:2013-12-17 16:44:37辰龙
日期:2013-11-22 15:20:59狮子座
日期:2013-11-18 22:55:08射手座
日期:2013-11-12 10:54:26
6 [报告]
发表于 2013-06-08 12:35 |只看该作者
1.请问下,Mysql的数据库,大家是如何迁移到Oracle的?
下面这个办法是采用了ETL的思路来实现的。
a.使用oracle迁移工具(Migration Workbench)迁移表结构
b.把mysql库的数据dump到文件export
c.然后把export文件rsync或者scp到oracle server上
d.oracle server上建立control.ctl文件进行导入.
使用工具进行迁移:
用oracle提供的SQL Developer这个来迁移。
2.oracle与MYSQL之间的同步有哪些方法以及和种方法的难点?
采用类似ETL的办法主要注意下面几点:
a.在此采用sqlldr直接路径加载,必须在控制文件指定加载字符集,使之与目标数据库保持一致,否则会默认采用OS端的字符集,中文字符会产生乱码b.mysql中id对应值全为0,而对应的oracle表该字段为主键,为防止主键冲突,使用sqlldr的sequence功能生成主键,sequence(max,1)插入前找出表中id最大值并自动将当前值加1;
使用工具进行迁移:
用oracle提供的SQL Developer这个来迁移
3.Mysql一个DB,是分多个库的,Oracle也要对应的分成多个库吗?
可以迁移到oracle多用户schema中

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
7 [报告]
发表于 2013-06-08 13:17 |只看该作者
只用mysql,没用过Oracle,纯帮顶~~
不过标准的SQL是通用的,只要能导出为标准的SQL那就自然什么数据库都用了。或者借助中间格式如 csv 或 tab 分隔的文件来互导也应该可行。
鉴于两种数据库都是流行且成熟的,我想肯定有现成的工具做互导、迁移、同步等操作。而且为了争取对方用户,官方应该也会提供相应的工具从某个别的数据库转换成本数据库的吧。

论坛徽章:
0
8 [报告]
发表于 2013-06-08 14:14 |只看该作者
本帖最后由 zavakid 于 2013-06-08 14:17 编辑

1.请问下,Mysql的数据库,大家是如何迁移到Oracle的?
我们用过一些外面的工具,但是都不太符合我们的需求。
最后我们自己开发了一个数据迁移中间件服务。大致原理是:
1. 把 mysql 的 binlog 开起来
2. 伪造 mysql 的一个 slaver,这样 mysql 会把 binlog 推过来
3. 解析 binlog 数据,将 binlog 经过处理之后写入到 oracle。

2.oracle与MYSQL之间的同步有哪些方法以及和种方法的难点?
1. 字符编码的问题。 mysql 每个 schema 的编码可能不一样。
2. 有逻辑转换。很多业务的老表和新表的结构不一样,这就要求做数据转换,甚至是需要个性化的业务逻辑转换
3. 需要对业务应用无影响,最好是透明
4. 数据一致性对比

因为有了上面这样一个中间件,所以 1,2 两点就方便解决
而第3点的解决,我们是通过这个中间件进行一个实时同步,来实现让应用尽可能短的暂停,一般应用可以在秒级别就切换到新库上。
第4点分两个策略:a. 通过业务进行对比 (这对业务开发人员的负担比较大);b. 通过批量SQL进行对比,这最好需要一个中间件(不能老是让DBA手工去对比)

3.Mysql一个DB,是分多个库的,Oracle也要对应的分成多个库吗?
这个需要看具体业务了。mysql 是按照业务划分 schema 的,建议 oracle 通过划分用户来进行资源管理。

PS. 有了这样一个中间件,很多数据流动方面的需求就可以去想象了

论坛徽章:
6
CU大牛徽章
日期:2013-05-20 10:43:41IT运维版块每日发帖之星
日期:2016-07-29 06:20:00IT运维版块每日发帖之星
日期:2016-01-27 06:20:00CU大牛徽章
日期:2013-05-20 10:44:16CU大牛徽章
日期:2013-05-20 10:44:0615-16赛季CBA联赛之广东
日期:2018-03-09 11:17:08
9 [报告]
发表于 2013-06-08 14:37 |只看该作者
1.请问下,Mysql的数据库,大家是如何迁移到Oracle的?
  公司做了个dba的软件,就是用odbc/jdbc去连接数据库,公司在数据库设计之初,就设计了一些表用来存数据表的元数据的,所以软件直接读元数据表,然后通过读取出来的元数据,去将mysql中的表和数据复制到oracle中。具体实现细节不便透露。
2.oracle与MYSQL之间的同步有哪些方法以及和种方法的难点?
  目前还没有碰到同步问题,其实现和1描述的一样。
3.Mysql一个DB,是分多个库的,Oracle也要对应的分成多个库吗?
  这个要看具体情况,不过我们公司的表和数据不是特别多,在原来的mysql数据库中就只用了一个库,所以到oracle也只需一个库就够了

论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:31CU大牛徽章
日期:2013-05-20 10:46:25CU大牛徽章
日期:2013-05-20 10:46:18CU大牛徽章
日期:2013-04-17 11:19:51CU大牛徽章
日期:2013-04-17 11:19:42CU大牛徽章
日期:2013-04-17 11:19:37CU大牛徽章
日期:2013-04-17 11:19:32CU大牛徽章
日期:2013-04-17 11:19:28
10 [报告]
发表于 2013-06-08 20:27 |只看该作者
MySQL不支持Check,Top等功能,有些代码上的不兼容肯定得手工纠正一下
而且这些都是简单的一下功能
至于复杂的存储过程,函数,还有触发器方面的差异那些是用同步无法解决的,只能也必须采用手工修改代码的形式解决

应该手工建立表、触发器、函数、存储过程等大体框架,然后把新数据库的的外键检查、触发器什么的禁用,然后再进行大容量操作,这样效果好一点儿。
不过数据量如果比较小的话,还是双机互备份方便些,也不会影响正常的数据库的运行
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP