百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
O

otter

> 编程语言
开源

阿里巴巴分布式数据库同步系统(解决中美异地机房)

8.1K stars0 点赞2 次浏览
访问官网GitHub

工具介绍

阿里巴巴分布式数据库同步系统(解决中美异地机房)

环境搭建 & 打包

环境搭建:
  1. 进入 $otter_home/lib 目录
  2. 执行:bash install.sh
打包:
  1. 进入$otter_home目录
  2. 执行:mvn clean install -Dmaven.test.skip -Denv=release
  3. 发布包位置:$otter_home/target

项目背景

   阿里巴巴B2B公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了杭州和美国异地机房的需求,同时为了提升用户体验,整个机房的架构为双A,两边均可写,由此诞生了otter这样一个产品。

   otter第一版本可追溯到04~05年,此次外部开源的版本为第4版,开发时间从2011年7月份一直持续到现在,目前阿里巴巴B2B内部的本地/异地机房的同步需求基本全上了otter4。

目前同步规模:
  1. 同步数据量6亿
  2. 文件同步1.5TB(2000w张图片)
  3. 涉及200+个数据库实例之间的同步
  4. 80+台机器的集群规模

项目介绍

名称:otter ['ɒtə(r)]

译意: 水獭,数据搬运工

语言: 纯java开发

定位: 基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库. 一个分布式数据库同步系统

工作原理

原理描述:

1. 基于Canal开源产品,获取数据库增量日志数据。 什么是Canal, 请点击

2. 典型管理系统架构,manager(web管理)+node(工作节点)

    a. manager运行时推送同步配置到node节点

    b. node节点将同步状态反馈到manager上

3. 基于zookeeper,解决分布式状态调度的,允许多node节点之间协同工作.

什么是canal?

otter之前开源的一个子项目,开源链接地址:http://github.com/alibaba/canal

Introduction

See the page for introduction: Introduction.

QuickStart

See the page for quick start: QuickStart.

AdminGuide

See the page for admin deploy guide : AdminGuide

相关文档

See the page for 文档: 相关PPT&PDF

常见问题

See the page for FAQ: FAQ

版本相关:

1. 建议版本:4.2.15 (otter开源版本从内部演变而来,所以初始版本直接从4.x开始)

2. 下载发布包:download

3. maven依赖 : 暂无

相关开源

  1. 阿里巴巴mysql数据库binlog的增量订阅&消费组件:http://github.com/alibaba/canal
  2. 阿里巴巴去Oracle数据迁移同步工具(目标支持MySQL/DRDS):http://github.com/alibaba/yugong

问题反馈

注意:canal&otter QQ讨论群已经建立,群号:161559791 ,欢迎加入进行技术讨论。

1. qq交流群: 161559791

2. 邮件交流: [email protected]

3. 新浪微博: agapple0002

4. 报告issue:issues

Issues· 334 开放

查看全部 Issues在 GitHub 打开
  • #393

    com.alibaba.otter.node.etl.select.exceptions.SelectException: java.lang.NullPointerException

    更新于 2026年3月21日
  • #162

    otter 是否支持使用 pt-online-schema-change 工具进行表同步?

    更新于 2026年3月21日
  • #983

    发现 otter 不支持 gt-osc 工具执行的 ddl 操作

    更新于 2026年3月21日
  • #875

    otter 代码在哪几个代码类中控制双向回环,请告诉我,我想研究分析一下。

    更新于 2025年12月22日
  • #375

    为什么同步进度那里的 position 状态为:无信息

    更新于 2025年12月2日
  • #699

    MemoryStageController 的 initSelect 并行度初始化代码是否有问题?

    更新于 2025年6月14日
  • #924

    节点高可用

    更新于 2025年5月30日
  • #1134

    关于数据顺序保证

    更新于 2025年5月18日
  • #911

    otter channel 突然失去同步,后台查看日志也没有报错,web 显示 channel 正在运行,pipeline 正在工作,node 状态也正常运行,node 进程在后台也在,但数据却没有同步,添加了 position 定位超时的监控,会报 position 346 seconds no update;停止 channel,重新启动后就可以正常同步了;在网上看了一篇文章说 otter 的调度算法导致死锁,https://www.jianshu.com/p/e63df800d044

    更新于 2025年3月21日
  • #558

    批量延迟抖动

    更新于 2025年3月20日

> 标签

Java

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年10月1日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言