狠狠撸

狠狠撸Share a Scribd company logo
DTCC2011



海量数据迁移方案
      徐进挺
      微博:tb丁原
      dingyuan@taobao.com
      日期:201104




                            1
大纲     DTCC2011

1.数据迁移的场景,目标是什么
2.全量迁移常见方案
3.增量迁移常见方案
4.oracle->mysql简单案例
场景是什么      DTCC2011
场景:
表太“大”
业务架构调整,数据需要重新分布
enq: HW - contention
enq: TX - row lock contention
enq: TX - index contention

需求:
表需要从1个库迁移到另外的库中
迁移对应关系可能是1->1, 1->N, N->1,N->M
源,目标端环境可能是:Oracle <-> oracle,Oracle <-
> mysql,Oracle <-> nosql
目标是什么       DTCC2011

目标:
确保数据的完整性。
尽量减少对业务的影响,尽量控制停机时间。
业务可接受的时间,0分钟,1分钟,10分钟,1小时,1天
?
数据量大小,10G,50G,100G,200G,1T?



注:
把迁移分成全量迁移,增量迁移两个步骤。
大纲     DTCC2011

1.数据迁移的场景,目标是什么
2.全量迁移常见方案
3.增量迁移常见方案
4.oracle->mysql简单案例
全量迁移                           DTCC2011
1.Exp/imp/expdp/impdp
2.Insert into table select * from table@Dblink
3.Select * from table into outfile/load data(mysql)
4.Extent->rowid
5.Mv refresh
6.Sqluldr/load data(http://www.anysql.net/software/sqluldr.zip)
7.Rowid(pkid)/procedure
8.Perl
9.Tddl数据层
使用过哪些方案       DTCC2011




选择简单,高效,高可靠性的方案
全量迁移的风险点                     DTCC2011
场景:
2.Insert into table select * from table@Dblink
4.Mv
风险点:                                    全量迁移:
1.ora-01555错误                           建议化整为零分片迁移
2. 迁移过程出错,回滚会非常缓慢
化整为零之extent方案DTCC2011

Rowid:
8i之前rowid结构:
File#       Block#        Row#
8i之后rowid结构:
data_object_id#   File#          Block#      Row#



Segment:
1 Segment         N extent       N*N Block   N*N*N rowid



通过extent为粒度来迁移,来手动并行迁移?
化整为零之extent方案DTCC2011

抽取每个分区:
insert into my_rowid(id,rowid_min,rowid_max,has_deal)
select rownum,
dbms_rowid.rowid_create(1,o.data_object_id,e.relative_fno,e.block_id,0),
dbms_rowid.rowid_create(1,o.data_object_id,e.relative_fno,e.block_id+e.blocks-
1,10000),
0
from dba_extents e,dba_objects o
where e.segment_name=upper('test_table') and e.owner='db1'
and o.object_name = upper('test_table') and o.owner='db1';
化整为零之extent方案DTCC2011

根据分区同步数据:
for c in (select id, rowid_min, rowid_max from my_rowid where has_deal = 0
and mod(id, p_number) = p_now)
loop
insert into test_table
select /*+ rowid(t) */* from test_table@dblink_db1 t
where rowid >= chartorowid(c.rowid_min) and rowid <=
chartorowid(c.rowid_max);
大纲     DTCC2011

1.数据迁移的场景,目标是什么
2.全量迁移常见方案
3.增量迁移常见方案
4.oracle->mysql简单案例
增量迁移                DTCC2011

1.created_date,modified_date字段设计
2. Mv refresh
3. Trigger/procedure
4.Dbsync复制中心:redo log,binlog解析
5.罢诲诲濒复制中心
6.Perl
问题:
如果迁移过程中,需要加上业务处理逻辑,哪种方式更容易满
足呢?

 备注:
 每个表必须要有创建时间和修改时间两个字段
trigger/procedure   DTCC2011
dbsync                                               DTCC2011
                                    Oracle server 主库
                                                                                                              mysql server




                                       2.Query data                                                                         2.Query data
                                                                                               1.get binlog event
                                                 Dbsync client/server

               1. Rowid and other
                     info
                                                                        Dbsync client/server

                                             3.DFS Write                                                            3.DFS Write
Oracle server(备库)
  /Dbsync client




                               HDFS                                                                           HDFS
罢诲诲濒复制中心   DTCC2011
大纲     DTCC2011

1.数据迁移的场景,目标是什么
2.全量迁移常见方案
3.增量迁移常见方案
4.oracle->mysql简单案例
Oracle-my(no)sql   DTCC2011

场景:
1.Oracle的某一张迁移到mysql对应的表中
2.Oracle的某一张表迁移到mysql对应的多张表(mysql
分表)



常见思路:
1.sqluldr/load data
2.Perl
3.Tddl数据层复制
Sqluldr/load data                          DTCC2011

使用sqluldr从oracle导出数据:
Sqluldr user=${userpwd} query="${v_dw_sql}" quote='"' text=mysql
file=${exp_file}



load data导入到mysql中:
LOAD DATA INFILE "${exp_file}"
IGNORE
INTO TABLE ${v_lake_tab}
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY 'n'
${v_lake_col};
小结          DTCC2011


1.迁移的场景、目标决定方案了方案的选择
2.全量,增量迁移常用方案
可选方案很多,灵活使用,选择最简单,高效,可靠性
3.海量数据下全量迁移更倾向于extent切分+手动并行,增
量主要采用gmt_modified字段来判断,跨平台迁移主要通
过perl/tddl/sqluldr/dbsync来处理
DTCC2011

More Related Content

What's hot (20)

数据分片方法的分析和比较
数据分片方法的分析和比较数据分片方法的分析和比较
数据分片方法的分析和比较
freeplant
?
腾讯大讲堂06 qq邮箱性能优化
腾讯大讲堂06 qq邮箱性能优化腾讯大讲堂06 qq邮箱性能优化
腾讯大讲堂06 qq邮箱性能优化
areyouok
?
主备备的两个备机转为双Master出现诡异的slave lag问题
主备备的两个备机转为双Master出现诡异的slave lag问题主备备的两个备机转为双Master出现诡异的slave lag问题
主备备的两个备机转为双Master出现诡异的slave lag问题
haojiewang
?
可靠分布式系统基础 Paxos的直观解释
可靠分布式系统基础 Paxos的直观解释可靠分布式系统基础 Paxos的直观解释
可靠分布式系统基础 Paxos的直观解释
Yanpo Zhang
?
6
66
6
xiliangxiliang
?
20130626联动优势数据访问层顿础尝架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层顿础尝架构和实践5(刘胜)数据分片和分页20130626联动优势数据访问层顿础尝架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层顿础尝架构和实践5(刘胜)数据分片和分页
liu sheng
?
分布式系统缓存设计
分布式系统缓存设计分布式系统缓存设计
分布式系统缓存设计
aleafs
?
分布式系统缓存设计
分布式系统缓存设计分布式系统缓存设计
分布式系统缓存设计
zhujiadun
?
淺談 Ado.net
淺談 Ado.net淺談 Ado.net
淺談 Ado.net
Gelis Wu
?
狈辞厂蚕尝-惭辞苍驳辞顿叠介绍
狈辞厂蚕尝-惭辞苍驳辞顿叠介绍狈辞厂蚕尝-惭辞苍驳辞顿叠介绍
狈辞厂蚕尝-惭辞苍驳辞顿叠介绍
國昭 張
?
深入学习Mongo db
深入学习Mongo db深入学习Mongo db
深入学习Mongo db
Lucien Li
?
惭测蝉辩濒集群
惭测蝉辩濒集群惭测蝉辩濒集群
惭测蝉辩濒集群
colderboy17
?
Mongo db 特性
Mongo db 特性Mongo db 特性
Mongo db 特性
Hermes Chiang
?
腾讯大讲堂06 qq邮箱性能优化
腾讯大讲堂06 qq邮箱性能优化腾讯大讲堂06 qq邮箱性能优化
腾讯大讲堂06 qq邮箱性能优化
topgeek
?
Sql调优clustering factor影响数据删除速度一例
Sql调优clustering factor影响数据删除速度一例Sql调优clustering factor影响数据删除速度一例
Sql调优clustering factor影响数据删除速度一例
maclean liu
?
备库预热工具谤别濒补测蹿别迟肠丑介绍及性能测试
备库预热工具谤别濒补测蹿别迟肠丑介绍及性能测试备库预热工具谤别濒补测蹿别迟肠丑介绍及性能测试
备库预热工具谤别濒补测蹿别迟肠丑介绍及性能测试
zhaiwx1987
?
【Maclean liu技术分享】深入理解oracle中mutex的内部原理
【Maclean liu技术分享】深入理解oracle中mutex的内部原理【Maclean liu技术分享】深入理解oracle中mutex的内部原理
【Maclean liu技术分享】深入理解oracle中mutex的内部原理
maclean liu
?
美团点评技术沙龙010-美团础迟濒补蝉实践
美团点评技术沙龙010-美团础迟濒补蝉实践美团点评技术沙龙010-美团础迟濒补蝉实践
美团点评技术沙龙010-美团础迟濒补蝉实践
美团点评技术团队
?
MySQL 6.0 下的cluster + replicate - 20080220
MySQL 6.0 下的cluster + replicate - 20080220MySQL 6.0 下的cluster + replicate - 20080220
MySQL 6.0 下的cluster + replicate - 20080220
Jinrong Ye
?
数据分片方法的分析和比较
数据分片方法的分析和比较数据分片方法的分析和比较
数据分片方法的分析和比较
freeplant
?
腾讯大讲堂06 qq邮箱性能优化
腾讯大讲堂06 qq邮箱性能优化腾讯大讲堂06 qq邮箱性能优化
腾讯大讲堂06 qq邮箱性能优化
areyouok
?
主备备的两个备机转为双Master出现诡异的slave lag问题
主备备的两个备机转为双Master出现诡异的slave lag问题主备备的两个备机转为双Master出现诡异的slave lag问题
主备备的两个备机转为双Master出现诡异的slave lag问题
haojiewang
?
可靠分布式系统基础 Paxos的直观解释
可靠分布式系统基础 Paxos的直观解释可靠分布式系统基础 Paxos的直观解释
可靠分布式系统基础 Paxos的直观解释
Yanpo Zhang
?
20130626联动优势数据访问层顿础尝架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层顿础尝架构和实践5(刘胜)数据分片和分页20130626联动优势数据访问层顿础尝架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层顿础尝架构和实践5(刘胜)数据分片和分页
liu sheng
?
分布式系统缓存设计
分布式系统缓存设计分布式系统缓存设计
分布式系统缓存设计
aleafs
?
分布式系统缓存设计
分布式系统缓存设计分布式系统缓存设计
分布式系统缓存设计
zhujiadun
?
淺談 Ado.net
淺談 Ado.net淺談 Ado.net
淺談 Ado.net
Gelis Wu
?
狈辞厂蚕尝-惭辞苍驳辞顿叠介绍
狈辞厂蚕尝-惭辞苍驳辞顿叠介绍狈辞厂蚕尝-惭辞苍驳辞顿叠介绍
狈辞厂蚕尝-惭辞苍驳辞顿叠介绍
國昭 張
?
深入学习Mongo db
深入学习Mongo db深入学习Mongo db
深入学习Mongo db
Lucien Li
?
惭测蝉辩濒集群
惭测蝉辩濒集群惭测蝉辩濒集群
惭测蝉辩濒集群
colderboy17
?
腾讯大讲堂06 qq邮箱性能优化
腾讯大讲堂06 qq邮箱性能优化腾讯大讲堂06 qq邮箱性能优化
腾讯大讲堂06 qq邮箱性能优化
topgeek
?
Sql调优clustering factor影响数据删除速度一例
Sql调优clustering factor影响数据删除速度一例Sql调优clustering factor影响数据删除速度一例
Sql调优clustering factor影响数据删除速度一例
maclean liu
?
备库预热工具谤别濒补测蹿别迟肠丑介绍及性能测试
备库预热工具谤别濒补测蹿别迟肠丑介绍及性能测试备库预热工具谤别濒补测蹿别迟肠丑介绍及性能测试
备库预热工具谤别濒补测蹿别迟肠丑介绍及性能测试
zhaiwx1987
?
【Maclean liu技术分享】深入理解oracle中mutex的内部原理
【Maclean liu技术分享】深入理解oracle中mutex的内部原理【Maclean liu技术分享】深入理解oracle中mutex的内部原理
【Maclean liu技术分享】深入理解oracle中mutex的内部原理
maclean liu
?
美团点评技术沙龙010-美团础迟濒补蝉实践
美团点评技术沙龙010-美团础迟濒补蝉实践美团点评技术沙龙010-美团础迟濒补蝉实践
美团点评技术沙龙010-美团础迟濒补蝉实践
美团点评技术团队
?
MySQL 6.0 下的cluster + replicate - 20080220
MySQL 6.0 下的cluster + replicate - 20080220MySQL 6.0 下的cluster + replicate - 20080220
MySQL 6.0 下的cluster + replicate - 20080220
Jinrong Ye
?

Similar to 丁原:海量数据迁移方案 (20)

王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计
YANGL *
?
罢补辞产补辞数据库这5年
罢补辞产补辞数据库这5年罢补辞产补辞数据库这5年
罢补辞产补辞数据库这5年
yp_fangdong
?
百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010
Chuanying Du
?
deep inside Sina App Engine cloud service
deep inside Sina App Engine cloud servicedeep inside Sina App Engine cloud service
deep inside Sina App Engine cloud service
cong lei
?
Sae
SaeSae
Sae
cong lei
?
手机之家的数据访问层实践
手机之家的数据访问层实践手机之家的数据访问层实践
手机之家的数据访问层实践
guestf5121c
?
手机之家的数据访问层实践
手机之家的数据访问层实践手机之家的数据访问层实践
手机之家的数据访问层实践
xcq
?
20150528联动技术大讲堂15(刘胜)业务系统上线标准指引
20150528联动技术大讲堂15(刘胜)业务系统上线标准指引20150528联动技术大讲堂15(刘胜)业务系统上线标准指引
20150528联动技术大讲堂15(刘胜)业务系统上线标准指引
liu sheng
?
惭测蝉辩濒展示功能与源码对应
惭测蝉辩濒展示功能与源码对应惭测蝉辩濒展示功能与源码对应
惭测蝉辩濒展示功能与源码对应
zhaolinjnu
?
Mysql 101014202926-phpapp01
Mysql 101014202926-phpapp01Mysql 101014202926-phpapp01
Mysql 101014202926-phpapp01
Bob Huang
?
20140326联动优势数据访问层顿础尝架构和实践7(刘胜)工行交流
20140326联动优势数据访问层顿础尝架构和实践7(刘胜)工行交流20140326联动优势数据访问层顿础尝架构和实践7(刘胜)工行交流
20140326联动优势数据访问层顿础尝架构和实践7(刘胜)工行交流
liu sheng
?
20120613联动优势数据访问层顿础尝架构和实践4(刘胜)最新特性
20120613联动优势数据访问层顿础尝架构和实践4(刘胜)最新特性20120613联动优势数据访问层顿础尝架构和实践4(刘胜)最新特性
20120613联动优势数据访问层顿础尝架构和实践4(刘胜)最新特性
liu sheng
?
N-layer design & development
N-layer design & developmentN-layer design & development
N-layer design & development
Xuefeng Zhang
?
翱肠别补苍叠补蝉别-破解数据库高可用难题
翱肠别补苍叠补蝉别-破解数据库高可用难题翱肠别补苍叠补蝉别-破解数据库高可用难题
翱肠别补苍叠补蝉别-破解数据库高可用难题
everestsun
?
狈辞厂蚕尝误用和常见陷阱分析
狈辞厂蚕尝误用和常见陷阱分析狈辞厂蚕尝误用和常见陷阱分析
狈辞厂蚕尝误用和常见陷阱分析
iammutex
?
20141128(刘胜)鲍罢颁2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索
20141128(刘胜)鲍罢颁2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索20141128(刘胜)鲍罢颁2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索
20141128(刘胜)鲍罢颁2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索
liu sheng
?
惭谤&补尘辫;耻别丑数据库方面
惭谤&补尘辫;耻别丑数据库方面惭谤&补尘辫;耻别丑数据库方面
惭谤&补尘辫;耻别丑数据库方面
Tianwei Liu
?
奥别产请求异步处理和海量数据即时分析在淘宝开放平台的实践
奥别产请求异步处理和海量数据即时分析在淘宝开放平台的实践奥别产请求异步处理和海量数据即时分析在淘宝开放平台的实践
奥别产请求异步处理和海量数据即时分析在淘宝开放平台的实践
mysqlops
?
王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计
YANGL *
?
罢补辞产补辞数据库这5年
罢补辞产补辞数据库这5年罢补辞产补辞数据库这5年
罢补辞产补辞数据库这5年
yp_fangdong
?
百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010
Chuanying Du
?
deep inside Sina App Engine cloud service
deep inside Sina App Engine cloud servicedeep inside Sina App Engine cloud service
deep inside Sina App Engine cloud service
cong lei
?
手机之家的数据访问层实践
手机之家的数据访问层实践手机之家的数据访问层实践
手机之家的数据访问层实践
guestf5121c
?
手机之家的数据访问层实践
手机之家的数据访问层实践手机之家的数据访问层实践
手机之家的数据访问层实践
xcq
?
20150528联动技术大讲堂15(刘胜)业务系统上线标准指引
20150528联动技术大讲堂15(刘胜)业务系统上线标准指引20150528联动技术大讲堂15(刘胜)业务系统上线标准指引
20150528联动技术大讲堂15(刘胜)业务系统上线标准指引
liu sheng
?
惭测蝉辩濒展示功能与源码对应
惭测蝉辩濒展示功能与源码对应惭测蝉辩濒展示功能与源码对应
惭测蝉辩濒展示功能与源码对应
zhaolinjnu
?
Mysql 101014202926-phpapp01
Mysql 101014202926-phpapp01Mysql 101014202926-phpapp01
Mysql 101014202926-phpapp01
Bob Huang
?
20140326联动优势数据访问层顿础尝架构和实践7(刘胜)工行交流
20140326联动优势数据访问层顿础尝架构和实践7(刘胜)工行交流20140326联动优势数据访问层顿础尝架构和实践7(刘胜)工行交流
20140326联动优势数据访问层顿础尝架构和实践7(刘胜)工行交流
liu sheng
?
20120613联动优势数据访问层顿础尝架构和实践4(刘胜)最新特性
20120613联动优势数据访问层顿础尝架构和实践4(刘胜)最新特性20120613联动优势数据访问层顿础尝架构和实践4(刘胜)最新特性
20120613联动优势数据访问层顿础尝架构和实践4(刘胜)最新特性
liu sheng
?
N-layer design & development
N-layer design & developmentN-layer design & development
N-layer design & development
Xuefeng Zhang
?
翱肠别补苍叠补蝉别-破解数据库高可用难题
翱肠别补苍叠补蝉别-破解数据库高可用难题翱肠别补苍叠补蝉别-破解数据库高可用难题
翱肠别补苍叠补蝉别-破解数据库高可用难题
everestsun
?
狈辞厂蚕尝误用和常见陷阱分析
狈辞厂蚕尝误用和常见陷阱分析狈辞厂蚕尝误用和常见陷阱分析
狈辞厂蚕尝误用和常见陷阱分析
iammutex
?
20141128(刘胜)鲍罢颁2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索
20141128(刘胜)鲍罢颁2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索20141128(刘胜)鲍罢颁2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索
20141128(刘胜)鲍罢颁2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索
liu sheng
?
惭谤&补尘辫;耻别丑数据库方面
惭谤&补尘辫;耻别丑数据库方面惭谤&补尘辫;耻别丑数据库方面
惭谤&补尘辫;耻别丑数据库方面
Tianwei Liu
?
奥别产请求异步处理和海量数据即时分析在淘宝开放平台的实践
奥别产请求异步处理和海量数据即时分析在淘宝开放平台的实践奥别产请求异步处理和海量数据即时分析在淘宝开放平台的实践
奥别产请求异步处理和海量数据即时分析在淘宝开放平台的实践
mysqlops
?

丁原:海量数据迁移方案

  • 1. DTCC2011 海量数据迁移方案 徐进挺 微博:tb丁原 dingyuan@taobao.com 日期:201104 1
  • 2. 大纲 DTCC2011 1.数据迁移的场景,目标是什么 2.全量迁移常见方案 3.增量迁移常见方案 4.oracle->mysql简单案例
  • 3. 场景是什么 DTCC2011 场景: 表太“大” 业务架构调整,数据需要重新分布 enq: HW - contention enq: TX - row lock contention enq: TX - index contention 需求: 表需要从1个库迁移到另外的库中 迁移对应关系可能是1->1, 1->N, N->1,N->M 源,目标端环境可能是:Oracle <-> oracle,Oracle <- > mysql,Oracle <-> nosql
  • 4. 目标是什么 DTCC2011 目标: 确保数据的完整性。 尽量减少对业务的影响,尽量控制停机时间。 业务可接受的时间,0分钟,1分钟,10分钟,1小时,1天 ? 数据量大小,10G,50G,100G,200G,1T? 注: 把迁移分成全量迁移,增量迁移两个步骤。
  • 5. 大纲 DTCC2011 1.数据迁移的场景,目标是什么 2.全量迁移常见方案 3.增量迁移常见方案 4.oracle->mysql简单案例
  • 6. 全量迁移 DTCC2011 1.Exp/imp/expdp/impdp 2.Insert into table select * from table@Dblink 3.Select * from table into outfile/load data(mysql) 4.Extent->rowid 5.Mv refresh 6.Sqluldr/load data(http://www.anysql.net/software/sqluldr.zip) 7.Rowid(pkid)/procedure 8.Perl 9.Tddl数据层
  • 7. 使用过哪些方案 DTCC2011 选择简单,高效,高可靠性的方案
  • 8. 全量迁移的风险点 DTCC2011 场景: 2.Insert into table select * from table@Dblink 4.Mv 风险点: 全量迁移: 1.ora-01555错误 建议化整为零分片迁移 2. 迁移过程出错,回滚会非常缓慢
  • 9. 化整为零之extent方案DTCC2011 Rowid: 8i之前rowid结构: File# Block# Row# 8i之后rowid结构: data_object_id# File# Block# Row# Segment: 1 Segment N extent N*N Block N*N*N rowid 通过extent为粒度来迁移,来手动并行迁移?
  • 10. 化整为零之extent方案DTCC2011 抽取每个分区: insert into my_rowid(id,rowid_min,rowid_max,has_deal) select rownum, dbms_rowid.rowid_create(1,o.data_object_id,e.relative_fno,e.block_id,0), dbms_rowid.rowid_create(1,o.data_object_id,e.relative_fno,e.block_id+e.blocks- 1,10000), 0 from dba_extents e,dba_objects o where e.segment_name=upper('test_table') and e.owner='db1' and o.object_name = upper('test_table') and o.owner='db1';
  • 11. 化整为零之extent方案DTCC2011 根据分区同步数据: for c in (select id, rowid_min, rowid_max from my_rowid where has_deal = 0 and mod(id, p_number) = p_now) loop insert into test_table select /*+ rowid(t) */* from test_table@dblink_db1 t where rowid >= chartorowid(c.rowid_min) and rowid <= chartorowid(c.rowid_max);
  • 12. 大纲 DTCC2011 1.数据迁移的场景,目标是什么 2.全量迁移常见方案 3.增量迁移常见方案 4.oracle->mysql简单案例
  • 13. 增量迁移 DTCC2011 1.created_date,modified_date字段设计 2. Mv refresh 3. Trigger/procedure 4.Dbsync复制中心:redo log,binlog解析 5.罢诲诲濒复制中心 6.Perl 问题: 如果迁移过程中,需要加上业务处理逻辑,哪种方式更容易满 足呢? 备注: 每个表必须要有创建时间和修改时间两个字段
  • 14. trigger/procedure DTCC2011
  • 15. dbsync DTCC2011 Oracle server 主库 mysql server 2.Query data 2.Query data 1.get binlog event Dbsync client/server 1. Rowid and other info Dbsync client/server 3.DFS Write 3.DFS Write Oracle server(备库) /Dbsync client HDFS HDFS
  • 17. 大纲 DTCC2011 1.数据迁移的场景,目标是什么 2.全量迁移常见方案 3.增量迁移常见方案 4.oracle->mysql简单案例
  • 18. Oracle-my(no)sql DTCC2011 场景: 1.Oracle的某一张迁移到mysql对应的表中 2.Oracle的某一张表迁移到mysql对应的多张表(mysql 分表) 常见思路: 1.sqluldr/load data 2.Perl 3.Tddl数据层复制
  • 19. Sqluldr/load data DTCC2011 使用sqluldr从oracle导出数据: Sqluldr user=${userpwd} query="${v_dw_sql}" quote='"' text=mysql file=${exp_file} load data导入到mysql中: LOAD DATA INFILE "${exp_file}" IGNORE INTO TABLE ${v_lake_tab} FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY 'n' ${v_lake_col};
  • 20. 小结 DTCC2011 1.迁移的场景、目标决定方案了方案的选择 2.全量,增量迁移常用方案 可选方案很多,灵活使用,选择最简单,高效,可靠性 3.海量数据下全量迁移更倾向于extent切分+手动并行,增 量主要采用gmt_modified字段来判断,跨平台迁移主要通 过perl/tddl/sqluldr/dbsync来处理