Download presentation
Presentation is loading. Please wait.
1
愚公客户端介绍 taobao
2
Agenda 1. 基本介绍 2. 实例演示
3
愚公介绍 名称: yugong 译意: 愚公 语言: 纯java开发 定位:数据库迁移 (目前主要支持oracle2mysql)
4
愚公架构 Jvm Container instance extractor translator applier
一个Jvm Container对应多个instance,每个instance对应于一张表的迁移任务 每个instance分为三部分 extractor (从源数据库上提取数据,可分为全量/增量实现) translator (将源库上的数据按照目标库的需求进行自定义转化) applier (将数据更新到目标库,可分为全量/增量/对比的实现)
5
愚公架构 全量+增量任务 (减少复杂度) JDBC协议 (解决环境兼容性) oracle物化视图 (解决记录增量日志)
全量+增量任务 (减少复杂度) JDBC协议 (解决环境兼容性) oracle物化视图 (解决记录增量日志) 引入translator扩展 (解决异构数据转化)
6
支持的功能 Oracle -> Mysql Oracle -> Oracle 异构功能支持: 编码不同 库名/表名不同
字段名字不同 字段类型不同 字段个数不同(多几个,少几个)
7
迁移流程
8
使用限制 数据库权限 增量同步不支持主键变更 源和目标类型不兼容时需要自定义转换逻辑 增量同步对oracle库压力
基本CRUD,物化视图操作等 增量同步不支持主键变更 需要先delete,后insert 源和目标类型不兼容时需要自定义转换逻辑 源库为number,目标库varchar不支持, 目标为int/decimal可自动处理 增量同步对oracle库压力 物化视图和回表查询都会对源库产生比较大的影响
9
迁移例子
10
迁移例子(translator实现)
11
常见的问题 主键约束 业务自定义translator (需要case by case)
a. oracle区分数据大小写,比如原oracle主键为hello和Hello,会认为是两个主键,而同步到mysql之后(不区分大小写,比如COLLATE utf8_general_ci),会出现主键冲突. b. oracle主键数据不删除末尾空格,同步到mysql之后(会删除字符串的末尾空格),会出现主键冲突. 业务自定义translator (需要case by case)
12
最后 Q & A
Similar presentations