有一个上百 G 的 Oracle 数据库,要整体迁移至 MySql,麻烦各位大佬给个思路

2020-05-27 11:19:16 +08:00
 FONG2

navicat 数据传输 /导出 sql 等功能,跑单表都内存溢出。

dbeaver 也一样直接卡主。

oracle 数据库表设计还很坑爹地用了浮点型做主键,然后利用序列自增

自动化迁移 mysql 之后还要修改字段为整型才能改自增

7084 次点击
所在节点    数据库
60 条回复
ant2017
2020-05-27 12:31:42 +08:00
kettle 可以吧
MintZX
2020-05-27 12:31:48 +08:00
几百 G 也不是很多,csv 分页弄呗
fewok
2020-05-27 12:43:53 +08:00
就说停机不???
1cming
2020-05-27 12:50:57 +08:00
DATAX 好评加一 迁移过上亿数据
xichen
2020-05-27 12:51:44 +08:00
试试 azure datafactory ?
soulzz
2020-05-27 12:57:20 +08:00
虽然我用的 mongoDb,但也应该差不多。之前我遇到的情况是迁移 2000 万记录的单表,整体查出来肯定爆内存,
用游标十几分钟就能全表迁移走
dog82
2020-05-27 13:00:22 +08:00
分步骤做,先迁移数据字典和数据量小的表。
大表写脚本或代码迁移,一般系统里的大表不会太多。
robinlovemaggie
2020-05-27 13:12:27 +08:00
疫情的无情都比不上 Oracle 业界毒瘤的绝情(降个价会死人吗?)
hantsy
2020-05-27 13:13:07 +08:00
如果用了大量专有的数据库特性( Function,Procedure 等),任何自动迁移工具都是没用的。

以前迁移一个遗留系统,200G 的数据库,从 Borland Firebird 到 MySQL,基本是手写一个程序来跑的,当然为了适应新的程序,新的数据库 Schemas 是改动不少,数据库脚本不可能完成。
lithiumii
2020-05-27 13:14:55 +08:00
又不要 etl,这不是两个 for 循环的事儿吗?
leqoqo
2020-05-27 13:17:05 +08:00
1,更换更牛的硬件或者优化数据库导出配置.
2,单表测试一次导出多少数据不会 gg,写程序生成这样的 sql 脚本,找一个你能接受的时间
... offset 0 limit 1000000;
... offset 100000 limit 100000;
3,创建 mysql 数据库,写建库表脚本,
4,用程序合并表的导出的这些文本文件为一个文件.
5,用程序生成 mysql load file 脚本, disable 表索引
6,enable 索引,
以上操作注意留够足够的硬盘空间.
weizhen199
2020-05-27 13:26:47 +08:00
DB 在 SSD 上 随便写个程序 select insert 跑满 1000M 网卡应该都不是问题吧
aladdindingding
2020-05-27 13:37:57 +08:00
python 的生成器
podel
2020-05-27 13:40:11 +08:00
阿里云有一个 叫做 DTS 的数据传输服务,可以支持不同数据库之间传输。
Marstin
2020-05-27 13:44:38 +08:00
导出 sql 是什么鬼,不是导 dmp 吗
ctOS1H
2020-05-27 14:06:48 +08:00
datax 可以
tiiis
2020-05-27 14:34:17 +08:00
1.datax
passerbytiny
2020-05-27 14:36:06 +08:00
你这不是迁移,是数据割接,光靠数据库的工具是很难成功的。
angeltop
2020-05-27 14:48:42 +08:00
阿里云 DTS 吧,上云后再传下来也行
weifuqiao1989
2020-05-27 15:09:27 +08:00
说下我用的比较多的工具
kettle 这样的 etl 工具 适用表不多的情况 比较好用,msdts 也能用

ESF Database Migration Toolkit - Professional
这个比较简单

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/675899

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX