Your SlideShare is downloading. ×
0
丁原:海量数据迁移方案
丁原:海量数据迁移方案
丁原:海量数据迁移方案
丁原:海量数据迁移方案
丁原:海量数据迁移方案
丁原:海量数据迁移方案
丁原:海量数据迁移方案
丁原:海量数据迁移方案
丁原:海量数据迁移方案
丁原:海量数据迁移方案
丁原:海量数据迁移方案
丁原:海量数据迁移方案
丁原:海量数据迁移方案
丁原:海量数据迁移方案
丁原:海量数据迁移方案
丁原:海量数据迁移方案
丁原:海量数据迁移方案
丁原:海量数据迁移方案
丁原:海量数据迁移方案
丁原:海量数据迁移方案
丁原:海量数据迁移方案
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

丁原:海量数据迁移方案

1,558

Published on

2011数据库大会

2011数据库大会

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,558
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. DTCC2011海量数据迁移方案 徐进挺 微博:tb丁原 dingyuan@taobao.com 日期:201104 1
  • 2. 大纲 DTCC20111.数据迁移的场景,目标是什么2.全量迁移常见方案3.增量迁移常见方案4.oracle->mysql简单案例
  • 3. 场景是什么 DTCC2011场景:表太“大”业务架构调整,数据需要重新分布enq: HW - contentionenq: TX - row lock contentionenq: 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. 大纲 DTCC20111.数据迁移的场景,目标是什么2.全量迁移常见方案3.增量迁移常见方案4.oracle->mysql简单案例
  • 6. 全量迁移 DTCC20111.Exp/imp/expdp/impdp2.Insert into table select * from table@Dblink3.Select * from table into outfile/load data(mysql)4.Extent->rowid5.Mv refresh6.Sqluldr/load data(http://www.anysql.net/software/sqluldr.zip)7.Rowid(pkid)/procedure8.Perl9.Tddl数据层
  • 7. 使用过哪些方案 DTCC2011选择简单,高效,高可靠性的方案
  • 8. 全量迁移的风险点 DTCC2011场景:2.Insert into table select * from table@Dblink4.Mv风险点: 全量迁移:1.ora-01555错误 建议化整为零分片迁移2. 迁移过程出错,回滚会非常缓慢
  • 9. 化整为零之extent方案DTCC2011Rowid: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),0from dba_extents e,dba_objects owhere e.segment_name=upper(test_table) and e.owner=db1and 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 = 0and mod(id, p_number) = p_now)loopinsert into test_tableselect /*+ rowid(t) */* from test_table@dblink_db1 twhere rowid >= chartorowid(c.rowid_min) and rowid <=chartorowid(c.rowid_max);
  • 12. 大纲 DTCC20111.数据迁移的场景,目标是什么2.全量迁移常见方案3.增量迁移常见方案4.oracle->mysql简单案例
  • 13. 增量迁移 DTCC20111.created_date,modified_date字段设计2. Mv refresh3. Trigger/procedure4.Dbsync复制中心:redo log,binlog解析5.Tddl复制中心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 WriteOracle server(备库) /Dbsync client HDFS HDFS
  • 16. Tddl复制中心 DTCC2011
  • 17. 大纲 DTCC20111.数据迁移的场景,目标是什么2.全量迁移常见方案3.增量迁移常见方案4.oracle->mysql简单案例
  • 18. Oracle-my(no)sql DTCC2011场景:1.Oracle的某一张迁移到mysql对应的表中2.Oracle的某一张表迁移到mysql对应的多张表(mysql分表)常见思路:1.sqluldr/load data2.Perl3.Tddl数据层复制
  • 19. Sqluldr/load data DTCC2011使用sqluldr从oracle导出数据:Sqluldr user=${userpwd} query="${v_dw_sql}" quote=" text=mysqlfile=${exp_file}load data导入到mysql中:LOAD DATA INFILE "${exp_file}"IGNOREINTO TABLE ${v_lake_tab}FIELDS TERMINATED BY , ENCLOSED BY " LINES TERMINATED BY n${v_lake_col};
  • 20. 小结 DTCC20111.迁移的场景、目标决定方案了方案的选择2.全量,增量迁移常用方案可选方案很多,灵活使用,选择最简单,高效,可靠性3.海量数据下全量迁移更倾向于extent切分+手动并行,增量主要采用gmt_modified字段来判断,跨平台迁移主要通过perl/tddl/sqluldr/dbsync来处理
  • 21. DTCC2011

×