otter、yugong、canal

canal

阿里巴巴 MySQL binlog 增量订阅&消费组件

MYSQL主备复制原理

otter、yugong、canal
MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件binary log events,可以通过 show binlog events 进行查看)
MySQL slave 将 master 的 binary log events 拷贝到它的中继日志(relay log)
MySQL slave 重放 relay log 中事件,将数据变更反映它自己的数据

canal 工作原理
otter、yugong、canal
canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议
MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )
canal 解析 binary log 对象(原始为 byte 流)

https://github.com/alibaba/canal

otter

阿里巴巴分布式数据库同步系统(解决中美异地机房)、基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库. 一个分布式数据库同步系统。

otter工作原理
otter、yugong、canal

  1. 基于Canal开源产品,获取数据库增量日志数据。 什么是Canal, 请点击
  2. 典型管理系统架构,manager(web管理)+node(工作节点)
    a. manager运行时推送同步配置到node节点
    b. node节点将同步状态反馈到manager上
  3. 基于zookeeper,解决分布式状态调度的,允许多node节点之间协同工作.

https://github.com/alibaba/otter

yugong

阿里巴巴去Oracle数据迁移同步工具(全量+增量,目标支持MySQL/DRDS)、数据库迁移 (目前主要支持oracle / mysql / DRDS)。

项目介绍

整个数据迁移过程,分为两部分:
1.全量迁移
2.增量迁移
otter、yugong、canal
过程描述:

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

架构

otter、yugong、canal
说明:

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

https://github.com/alibaba/yugong