MySQL增量数据同步工具-otter
otter项目地址:https://github.com/alibaba/otter otter依赖了zookeeper进行多节点调度,所以也需要安装部署zookeeper zookeeper 项目地址:https://github.com/apache/zookeeper zookeeper下载部署文件可以通过镜像网站下载:http://archive.apache.org/dist/zookeeper/
otter介绍
otter 是阿里巴巴基于数据库增量日志解析,使用纯java语言编写的准实时同步到本机房或异地机房的mysql/oracle数据库. 一个分布式数据库同步系统。 如需全量 + 增量数据迁移,请先使用MySQL全量数据备份-mydumper 迁移全量数据后再配置otter进行增量数据迁移。 目前同步规模:
- 同步数据量6亿
- 文件同步1.5TB(2000w张图片)
- 涉及200+个数据库实例之间的同步
- 80+台机器的集群规模
工作原理
截图来自otter github 截图 原理描述:
- 基于Canal开源产品,获取数据库增量日志数据。 由于otter是基于canal的开源产品,所以otter中已经集成了canal,不需要再搭建新的canal环境,当然,也支持独立搭建的canal配置
- 典型管理系统架构,manager(web管理)+node(工作节点)
- a. manager运行时推送同步配置到node节点
- b. node节点将同步状态反馈到manager上
- 基于zookeeper,解决分布式状态调度的,允许多node节点之间协同工作.
名词解释: Pipeline:从源端到目标端的整个过程描述,主要由一些同步映射过程组成 Channel:同步通道,单向同步中一个Pipeline组成,在双向同步中有两个Pipeline组成 DataMediaPair:根据业务表定义映射关系,比如源表和目标表,字段映射,字段 组等 DataMedia: 抽象的数据介质概念,可以理解为数据表/mq队列定义 DataMediaSource: 抽象的数据介质源信息,补充描述DateMedia ColumnPair: 定义字段映射关系 ColumnGroup: 定义字段映射组 Node: 处理同步过程的工作节点,对应一个jvm
扩展: 什么是canal? otter之前开源的一个子项目,开源链接地址:http://github.com/alibaba/canal
安装部署
部署节点配置
StoneDB:192.168.64.10:3306 MySQL:192.168.64.20:3306
otter manager、node and zookeeper : 192.168.64.30