阿里巴巴开源项目: 阿里巴巴去Oracle数据迁移同步工具

标签: 阿里巴巴 开源 项目 | 发表时间:2016-03-05 18:29 | 作者:
出处:http://agapple.iteye.com

背景

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

 

项目介绍

名称:   yugong

译意:   愚公移山

语言:   纯java开发

定位:   数据库迁移 (目前主要支持oracle -> mysql/DRDS)

 

 

项目介绍

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

  1. 全量迁移
  2. 增量迁移

过程描述:

  1. 增量数据收集 (创建oracle表的增量物化视图)
  2. 进行全量复制
  3. 进行增量复制 (可并行进行数据校验)
  4. 原库停写,切到新库

架构 


 

说明: 

  1. 一个Jvm Container对应多个instance,每个instance对应于一张表的迁移任务
  2.  instance分为三部分
    a.  extractor  (从源数据库上提取数据,可分为全量/增量实现)
    b.  translator  (将源库上的数据按照目标库的需求进行自定义转化)
    c.  applier  (将数据更新到目标库,可分为全量/增量/对比的实现)

方案设计

全量方案

业界常用的全量方案有:

  1. 数据文件导入/导出,比如EXPDP/IMPDP, mysqldump/source, xtrabackup等
  2. ETL数据导入/导出,主要原理为使用JDBC数据查询接口

yugong在项目设计之初考虑去IOE数据迁移的灵活性和自定义能力,最终选择的方案为基于JDBC接口遍历数据.  

相比于数据文件导入/导出,其优点:

  • 灵活数据同步
  • 支持异构数据
  • 实现相对简单

缺点: 

  • 全量拉取需要配合增量使用,会有部分数据重复同步
  • 性能和影响,一次性全量拉取,如果持续时间过长,如果此时数据库变更过多,会导致segment过大

增量方案

业界常用的增量方案有:

  1. 基于时间戳定时dump
  2. oracle日志文件,比如LogMiner,OGG
  3. oracle CDC(Change Data Capture)
  4. oracle trigger机制,比如DataBus , SymmetricDS
  5. oracle 物化视图(materialized view)
  6. ...

yugong在项目设计之初考虑去IOE数据迁移的灵活性,支持多种oracle版本,同时为降低DBA的运维成本,最终选择oracle物化视图作为我们的增量方案. 

相比于其他,物化视图方案其优点:

  • 原理简单,方便理解和学习,用户可以理解为一种固化的简易trigger模式
  • 运维简单,DBA一次账户授权后,程序可按需create一张物化视图表即可完成增量订阅
  • 相对透明,不需要像时间戳sql扫描依赖数据库表设计,也不需要关注oracle版本和服务器存储等

缺点:

  • 性能和影响,类似于trigger机制会对源库的数据写入造成一定的性能影响. 

QuickStart

See the page for quick start:   QuickStart

AdminGuide

See the page for admin deploy guide:  AdminGuide

Performance

See the page for yugong performance :  Performance

 

相关资料

  1. yugong简单介绍ppt :   ppt
  2. 分布式关系型数据库服务DRDS (前身为阿里巴巴公司的Cobar/TDDL的演进版本, 基本原理为MySQL分库分表)

问题反馈

  1. qq交流群: 537157866
  2. 邮件交流: jianghang115@gmail.com
  3. 新浪微博: agapple0002
  4. 报告issue: issues


已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [阿里巴巴 开源 项目] 推荐:

阿里巴巴开源项目: 阿里巴巴去Oracle数据迁移同步工具

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

重磅!阿里巴巴正式开源全球化OpenMessaging和ApsaraCache项目

- -
10月14日,在2017杭州·云栖大会之开源技术峰会上,阿里巴巴正式发布了全球化OpenMessaging和ApsaraCache两个开源项目,并宣布与GitHub、Hashicorp两家公司成为技术合作伙伴. 此前,阿里巴巴捐赠开源的RocketMQ已被Apache基金会接纳为全球顶级项目,此番动作体现阿里巴巴在全球开源业界的引领地位.

阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房)

- - agapple
   阿里巴巴B2B公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了杭州和美国异地机房的需求,同时为了提升用户体验,整个机房的架构为双A,两边均可写,由此诞生了otter这样一个产品.    otter第一版本可追溯到04~05年,此次外部开源的版本为第4版,开发时间从2011年7月份一直持续到现在,目前阿里巴巴B2B内部的本地/异地机房的同步需求基本全上了otte4.

阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费

- - zzm
   早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求. 不过早期的数据库同步业务,主要是基于trigger的方式获取增 量变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务,从此 开启了一段新纪元.

阿里巴巴Dubbo分布式服务框架已开源

- tangfl - ITeye论坛最新精华讨论帖
Serving services with invocations everyday, Dubbo becomes the key part of Alibaba's SOA solution and has been deployed to the whole alibaba.com family:.

专访阿里巴巴毕玄:异地多活数据中心项目的来龙去脉

- -
大数据时代,数据中心的异地容灾变得非常重要. 在去年双十一之前,阿里巴巴上线了数据中心异地双活项目. InfoQ就该项目采访了阿里巴巴的林昊(花名毕玄). 毕玄是阿里巴巴技术保障部的研究员,负责性能容量架构. 数据中心异地多活项目就是他主导的. InfoQ:首先请介绍一下数据中心异地多活这个项目. 毕玄:这个项目在我们内部的另外一个名字叫做单元化,双活是它的第二个阶段,多活是第三个阶段.

阿里巴巴的零知识证明

- 见涛 - 科学松鼠会
战争中你被俘了,敌人拷问你情报. 你是这么想的:如果我把情报都告诉他们,他们就会认为我没有价值了,就会杀了我省粮食,但如果我死活不说,他们也会认为我没有价值而杀了我. 怎样才能做到既让他们确信我知道情报,但又一丁点情报也不泄露呢. 这的确是一个令人纠结的问题,但阿里巴巴想了一个好办法,当强盗向他拷问打开山洞石门的咒语时,他对强盗说:“你们离我一箭之地,用弓箭指着我,你们举起右手我就念咒语打开石门,举起左手我就念咒语关上石门,如果我做不到或逃跑,你们就用弓箭射死我.

[原]阿里巴巴B2B搜索学习

- - 文武天下
主搜索:商品搜索、商家搜索、采购搜索、app搜索. 行业搜索:淘货源、淘工厂、聚好货、主题市场、品牌馆等. 由于用户多,需求强烈,收益大,所以功能、场景、架构做到极致高效. 代码复用性强:基础通用功能进行组件抽象化. 组件通用性好:一些组件或者组件进行组合的服务,适用更多场景,支持更多功能. 转化效果好:算法做的比较深入、细致.

来阿里巴巴一年有感(中)

- - Shining Ray
阿里巴巴现有有3万名员工,工号已经排到了12万. 如此庞大的组织,如此多的部门、单元,能朝着同样的愿景去一致行动,仿佛一个有机的整体,可见其管理体系的完备. 当我加入这样一个庞然大物,心情颇像《海上钢琴师》中的主角 1900 要踏足陆地进入城市,担心自己能不能适应好这个组织,发挥出自己的能力. 而经过一年的学习,跟随着其他同事做事,耳濡目染也学到了不少技巧.

专访阿里巴巴研究员赵海平:从Facebook到阿里巴巴

- - 博客园_新闻
赵海平,2007 年加入只有不到 50 个软件工程师的 Facebook,致力于软件性能和架构分析,在此期间创建了 HipHop 项目,重新编写和实现 PHP 语言,使其速度提高 5 到 6 倍,为公司节约数十亿美元. HipHop 项目之后,致力于“用异步处理来优化分布式系统”的设计理念中,并为此做了多项分布式数据库的优化研究,在 PHP 语言中加入了 yield 和 generator 的新功能,来帮助日趋复杂的 Facebook 网页设计.