MySQL同步工具otter的使用介绍(一) - otter简介
一、摘要
《MySQL同步工具otter的使用介绍》将分为五篇文章详细介绍如何使用otter来进行MySQL的数据同步。
本文将简单介绍otter的背景和原理。
otter项目github地址:GitHub - alibaba/otter: 阿里巴巴分布式数据库同步系统(解决中美异地机房)
二、otter项目背景
阿里巴巴B2B公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了杭州和美国异地机房的需求,同时为了提升用户体验,整个机房的架构为双A,两边均可写,由此诞生了otter这样一个产品。
otter第一版本可追溯到04~05年,此次外部开源的版本为第4版,开发时间从2011年7月份一直持续到现在,目前阿里巴巴B2B内部的本地/异地机房的同步需求基本全上了otte4。
目前同步规模:
- 同步数据量6亿
- 文件同步1.5TB(2000w张图片)
- 涉及200+个数据库实例之间的同步
- 80+台机器的集群规模
三、otter同步简介
(1)工作原理架构图
描述:
1. 基于Canal开源产品,获取数据库增量日志数据。
2. 典型管理系统架构,manager(web管理)+node(工作节点)
a. manager运行时推送同步配置到node节点
b. node节点将同步状态反馈到manager上
3. 基于zookeeper,解决分布式状态调度的,允许多node节点之间协同工作.
(2)基于otter可以实现的功能
1.基于binlog位点信息实现源端MySQL-目标端MySQL的准实时同步(测试下来,在没有大事务的或者慢SQL的情况下,同步延迟在秒级)
2.可以配置正则表达式,实现库到库的同步,表到表的同步,同步颗粒度可以精确到某一列
3.可以通过正则表达式或者配置canal过滤掉不需要同步的表
4.可以正常同步DDL语句,并且跳过DDL异常
5.可以进行表的批量配置,后续会介绍到如何批量配置表的同步
6.可以在配置中嵌入代码,实现简单的etl
7.otter社区版支持源端MySQL-目标端Oracle的同步
8.MySQL双向同步(此功能仍待验证,生产环境不建议使用双向同步)
(3)otter相较于传统的MySQL主备模式的优点
1.灵活程度更高,可以选择同步哪些库,哪些表,过滤哪些表,甚至可以选择同步哪些列
2.图形化界面配置,可以清楚看到同步延时,同步状态,数据变化情况,便于运维和分析问题
3.分布式同步工具,可以配置多个node,提高同步效率
4.支持代码内嵌,可以通过代码的方式,实现etl过程
5.支持Oracle与MySQL之间的同步