背景
08年左右,阿里巴巴开始尝试MySQL的相关研究,并开发了基于MySQL分库分表技术的相关产品,Cobar/TDDL(目前为阿里云DRDS产品),解决了单机Oracle无法满足的扩展性问题,当时也掀起一股去IOE项目的浪潮,愚公这项目因此而诞生,其要解决的目标就是帮助用户完成从Oracle数据迁移到MySQL上,完成去IOE的第一步.
项目介绍
名称: yugong
译意: 愚公移山
语言: 纯java开发
定位: 数据库迁移 (目前主要支持oracle -> mysql/DRDS)
项目介绍
整个数据迁移过程,分为两部分:
- 全量迁移
- 增量迁移
过程描述:
- 增量数据收集 (创建oracle表的增量物化视图)
- 进行全量复制
- 进行增量复制 (可并行进行数据校验)
- 原库停写,切到新库
架构
说明:
-
一个Jvm Container对应多个instance,每个instance对应于一张表的迁移任务
- instance分为三部分
a. extractor (从源数据库上提取数据,可分为全量/增量实现)
b. translator (将源库上的数据按照目标库的需求进行自定义转化)
c. applier (将数据更新到目标库,可分为全量/增量/对比的实现)
方案设计
全量方案
业界常用的全量方案有:
- 数据文件导入/导出,比如EXPDP/IMPDP, mysqldump/source, xtrabackup等
- ETL数据导入/导出,主要原理为使用JDBC数据查询接口
yugong在项目设计之初考虑去IOE数据迁移的灵活性和自定义能力,最终选择的方案为基于JDBC接口遍历数据.
相比于数据文件导入/导出,其优点:
- 灵活数据同步
- 支持异构数据
- 实现相对简单
缺点:
- 全量拉取需要配合增量使用,会有部分数据重复同步
- 性能和影响,一次性全量拉取,如果持续时间过长,如果此时数据库变更过多,会导致segment过大
增量方案
业界常用的增量方案有:
- 基于时间戳定时dump
- oracle日志文件,比如LogMiner,OGG
- oracle CDC(Change Data Capture)
- oracle trigger机制,比如DataBus , SymmetricDS
- oracle 物化视图(materialized view)
- ...
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
相关资料
- yugong简单介绍ppt : ppt
- 分布式关系型数据库服务DRDS (前身为阿里巴巴公司的Cobar/TDDL的演进版本, 基本原理为MySQL分库分表)
问题反馈
- qq交流群: 537157866
- 邮件交流: jianghang115@gmail.com
- 新浪微博: agapple0002
- 报告issue:issues
相关推荐
yugong 是阿里巴巴推出的去Oracle数据迁移同步工具(全量 增量,目标支持MySQL/DRDS)。2008年左右,阿里巴巴开始尝试MySQL的相关研究,并开发了基于MySQL分库分表技术的相关产品,Cobar/TDDL(目前为阿里云DRDS产品),...
。。。
。。。
对阿里巴巴开源的babel-plugin-import项目的注解
Druid为监控而生的数据库连接池,它是阿里巴巴开源平台上的一个项目。Druid是Java语言中最好的数据库连接池,Druid能够提供强大的监控和扩展功能.它可以替换DBCP和C3P0连接池。Druid提供了一个高效、功能强大、可...
阿里巴巴开源在线分析诊断工具Arthas(阿尔萨斯)
自从 2011 年宣布第一波开源项目以来,阿里巴巴的技术人一直积极参与开源社区共建。开源项目数量每年都有所增长,目前阿里巴巴已经有 150 个开源项目,其中数个项目 star 破万。相关的 GitHub 2017年数据统计显示,...
Arthas 是阿里巴巴开源的Java诊断工具
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。
数据同步的终极解决方案,阿里巴巴开源的Canal框架当之无愧.docx
Arthas(阿尔萨斯)是阿里巴巴开源的 Java 诊断工具,开始在淘宝内部孵化使用,后来成为阿里java项目必须使用的内部工具。2018年arthas成为ali开源项目,代码托管在github上。这是带给java系一大福音,项目深受...
阿里巴巴微服务开源项目盘点.docx
阿⾥巴巴⼤数据之路 阿⾥巴巴⼤数据之路——数据技术篇 数据技术篇 ⼀、整体架构 ⼀、整体架构 从下⾄上依次分为数据采集层、数据计算层、数据服务层、数据应⽤层 数据采集层:以DataX为代表的数据同步⼯具和同步中...
阿里巴巴开源的Android开发手册,资料挺好的,主要分享了阿里内部开发时经验和禁忌,对于有点开发基础的童鞋应该很有启发意义!
Druid是阿里巴巴的一款java开源的为监控而生的数据库连接池组件。Druid是一个JDBC组件,它包括三部分: DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系。 DruidDataSource 高效可管理的数据库...
阿里巴巴开源大数据平台演进之路 - 王峰(莫问)_阿里云
nQuery 引擎是来自阿里的数据中间层,主要为应对大数据场景的在线查询的三大难题:长数据、宽数据、杂数据, 广泛参考 Big Query、Impala、 PL/SQL、MySQL 、PgSQL、ql.io 等,结合自身... 标签:阿里巴巴 数据中间层
DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、...
阿里巴巴开源RPC框架dubbo的hellworld实例
JStorm 是一个分布式实时计算引擎。 JStorm 是一个类似Hadoop MapReduce的系统, 用户按照指定的接口实现一个任务,然后将这个任务递交给JStorm系统,Jstorm将这个任务跑起来,并且... 标签:阿里巴巴 分布式 hadoop