otter,阿里巴巴分布式数据库同步系统

otter:分布式数据库同步系统 一、otter介绍 阿里巴巴B2B公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了杭州和美国异地机房的需求,同时为了提升用户体验,整个机房的架构为双A,两边均可写,由此诞生了otter这样一个产品。 otter项目:https://github.com/alibaba/otter otter官方文档:https://github.com/alibaba/otter/wik... 阅读详情

微信公众号:大数据左右手

专注于大数据技术,人工智能和编程语言
个人既可码代码也可以码文字。欢迎转发与关注

otter官网介绍项目背景

otter文档地址

https://github.com/alibaba/otter/wiki

otter项目地址

https://github.com/alibaba/otter

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

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

涉及200+个数据库实例之间的同步

目前同步规模

  1. 同步数据量6亿

  2. 文件同步1.5TB(2000w张图片)

  3. 涉及200+个数据库实例之间的同步

  4. 80+台机器的集群规模

otter能解决什么

  1. 异构库同步
    a. mysql -> mysql/oracle. (目前开源版本只支持mysql增量,目标库可以是mysql或者oracle,取决于canal的功能)

  2. 单机房同步 (数据库之间RTT < 1ms)
    a. 数据库版本升级
    b. 数据表迁移
    c. 异步二级索引

  3. 异地机房同步 (比如阿里巴巴国际站就是杭州和美国机房的数据库同步,RTT > 200ms,亮点)
    a. 机房容灾

  4. 双向同步
    a. 避免回环算法 (通用的解决方案,支持大部分关系型数据库)

    https://github.com/alibaba/otter/wiki/Otter%E5%8F%8C%E5%90%91%E5%9B%9E%E7%8E%AF%E6%8E%A7%E5%88%B6
    b. 数据一致性算法 (保证双A机房模式下,数据保证最终一致性,亮点) 

    https://github.com/alibaba/otter/wiki/Otter%E6%95%B0%E6%8D%AE%E4%B8%80%E8%87%B4%E6%80%A7

  5. 文件同步
    a. 站点镜像 (进行数据复制的同时,复制关联的图片,比如复制产品数据,同时复制产品图片)

工作原理

 

原理描述

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

  2. 典型管理系统架构,manager(web管理)+node(工作节点)
    a. manager运行时推送同步配置到node节点
    b. node节点将同步状态反馈到manager上

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

名词解释

  • Pipeline:从源端到目标端的整个过程描述,主要由一些同步映射过程组成

  • Channel:同步通道,单向同步中一个Pipeline组成,在双向同步中有两个Pipeline组成

  • DataMediaPair:根据业务表定义映射关系,比如源表和目标表,字段映射,字段组等

  • DataMedia : 抽象的数据介质概念,可以理解为数据表/mq队列定义

  • DataMediaSource : 抽象的数据介质源信息,补充描述DateMedia

  • ColumnPair : 定义字段映射关系

  • ColumnGroup : 定义字段映射组

  • Node : 处理同步过程的工作节点,对应一个jvm

otter的S/E/T/L stage阶段模型

说明:为了更好的支持系统的扩展性和灵活性,将整个同步流程抽象为Select/Extract/Transform/Load,这么4个阶段.
Select阶段: 为解决数据来源的差异性,比如接入canal获取增量数据,也可以接入其他系统获取其他数据等。

Extract/Transform/Load 阶段:类似于数据仓库的ETL模型,具体可为数据join,数据转化,数据Load的

安装操作

1.Tar包下载

https://github.com/alibaba/otter/releases

manager.deployer-4.2.18.tar.gz
node.deployer-4.2.18.tar.gz
Source code(zip) 或者 Source code(tar.gz) 这里面有你需要的初始化otter manager系统表(otter-manager-schema.sql)
以上三个都要下载

2.初始化otter manager的系统表结构

  1. otter manager依赖于mysql进行配置信息的存储,所以需要预先安装mysql,并初始化otter manager的系统表结构
    解压在windows也行,tar.gz上传到集群解压也可以,主要目的是找到otter-manager-schema.sql(/deployer/src/main/resources/sql/otter-manager-schema.sql)


    a. 安装mysql
    b. 创建otter数据库后,将脚本导进去,初始化otter manager系统表

1source otter-manager-schema.sql

到mysql上去看下执行的效果

3. manager安装

修改manager配置文件

对manager.deployer-4.2.18.tar.gz 解压后,找到conf/otter.properties
改动的是我后面加解释的部分

 1## otter manager domain name
 2otter.domainName = bigdata101 ##修改为本机的ip
 3## otter manager http port 
 4otter.port = 8099 ##对外访问的端口号
 5## jetty web config xml
 6otter.jetty = jetty.xml
 7
 8## otter manager database config
 9otter.database.driver.class.name = com.mysql.jdbc.Driver
10otter.database.driver.url = jdbc:mysql://bigdata101:3306/otter ##otter数据的配置
11otter.database.driver.username = root ##数据库的账号
12otter.database.driver.password = root ##数据库的密码
13
14## default zookeeper address
15otter.zookeeper.cluster.default = bigdata101:2181 ##对应集群zk的地址
16## default zookeeper sesstion timeout = 60s
17otter.zookeeper.sessionTimeout = 60000

启动manager

1/manager/bin/startup.sh

启动成功后浏览器访问 http://127.0.0.1:8099 出现otter的页面,初始密码为:admin/admin,目前:匿名用户只有只读查看的权限,登录为管理员才可以有操作权限

关闭manager

1/manager/bin/stop.sh

4. node安装

node会受ottermanager进行管理,所以需要预先安装otter manager,完成manager安装后,需要在manager页面为node定义配置信息,并生一个唯一id

  • 添加zookeeper
    机器管理→zookeeper管理

     

  • 添加 node
    机器管理→Node管理

     

  • 配置nid
    机器添加完成后,跳转到机器列表页面,获取对应的机器序号nid

     

在 node-deployer/conf 下有nid
把nid配置进去即可(vim)或者

1echo 1 >~/node-deployer/conf/nid

配置otter.properties(位置:/node-deployer/conf/otter.properties)


 

1## otter node root dir

2otter.nodeHome = /opt/module/otter/node-deployer ## node-deployer绝对路径
3## otter arbitrate & node connect manager config
4otter.manager.address = bigdata101:1099 ## 运行ip地址,我这里通过了地址映射

启动node

1/node-deployer/bin/startup.sh

查看“机器管理-Node管理”页面,对应的节点状态,如果变为了已启动,代表已经正常启动

关闭node

1/node-deployer/bin/stop.sh

实战

1. 数据库开启binlog

  • 什么是Binlog
    MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。
    一般来说开启二进制日志大概会有1%的性能损耗 。二进制有两个最重要的使用场景:
    其一:MySQL Replication在Master端开启binlog,Mster把它的二进制日志传递给slaves来达到master-slave数据一致的目的。
    其二:自然就是数据恢复了,通过使用MySQLBinlog工具来使恢复数据。
    二进制日志包括两类文件:二进制日志索引文件(文件名后缀为.index)用于记录所有的二进制文件,二进制日志文件(文件名后缀为.00000*)记录数据库所有的DDL和DML(除了数据查询语句)语句事件

  • Binlog的开启

 1vi /etc/my.cnf
 2
 3## 添加
 4
 5server-id=1
 6
 7log-bin=mysql-bin
 8
 9binlog_format=row
10
11binlog-do-db=xx   ## 指定数据库

2. 添加canal

Otter使用canal开源产品获取数据库增量日志数据,可以把cannal看作是源库的一个伪slave
原理:canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议,mysql master收到dump请求,开始推送binarylog给slave(也就是canal), canal解析binary log对象

在Otter Manager“配置管理-canal配置”页面点击添加

3. 添加数据源 ,源库和目标库的schema需要一致,不然无法执行ddl语句

4. 添加数据表配置

 

5. 添加一个channel

 

6. 配置一个pipeline

添加channel成功后,点击Channel名字,进入Pipeline管理页面,添加一个pipeline

7. 添加映射关系

 

8. 启用同步

返回Channel管理页面, 点击“启用”,运行状态就变为“运行”

9. 现在可以新增一个表,插入记录,查看数据是否同步过去了

aria2简单介绍

node节点进行跨机房传输时,会使用到HTTP多线程传输技术,目前主要依赖了aria2c做为其下载客户端,所以我们现在需要安装aria2

1解压缩 aria2
2./configure
3
4make
5
6make install

将ariar2c加入path中

1vi /root/.bash_profile
2
3在PATH的末尾加上:/usr/local/bin 分号的作用是与之前的隔开。
4
5source /root/.bash_profile

 

微信公众号:大数据左右手

人要去的地方,除了远方,还有未来
欢迎关注我,一起学习,一起进步!

 

阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房) 项目背景 阿里巴巴B2B公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了杭州和美国异地机房的需求,同时为了提升用户体验,整个机房的架构为双A,两边均可写,由此诞生了otter这样一个产品。 otter第一版本可追溯到04~05年,此次外部开源的版本为第4版,开发时间从2011年7月份一直持续到现在,目前阿里巴巴B2B内部的本地/异地机房的同步需求基本全上了otte4。 目前同步规模: 同步数据量6亿 文件同步1.5TB(2000w张图片) 涉及200+个数据... 阅读详情

相关推荐

otter同步mysql数据操作指南.docx

因工作需要需要将mysql数据同步到另一个mysql,研究了阿里的开源系统otter,现将研究成果分享出来哈哈

otter实时mysql增量同步服务器部署方案

本人亲自操作的部署方案,已经生产环境使用。仅支持mysql开启binlog row模式

lwx2523的博客 451

otter管理工具manager.deployer-4.2.18 .tar.gz

阿里巴巴B2B公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了杭州和美国异地机房的需求,同时为了提升用户体验,整个机房的架构为双A,两边均可写,由此诞生了otter这样一个产品。 otter第一版本可追溯到04~05年,此次外部开源的版本为第4版,开发时间从2011年7月份一直持续到现在,目前阿里巴巴B2B内部的本地/异地机房的同步需求基本全上了otte4。 目前同步规模: 同步数据量6亿 文件同步1.5TB(2000w张图片) 涉及200+个数据库实例之间的同步 80+台机器的集群规模

Otter

Otter底层依赖Canal接收和解析mysqlbinlog日志,提供了可配置化的同步机制,纯java开发,免费开源的,基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库,是一个分布式数据同步系统。...

dark159735的博客 915

OpenCV 开闭运算

开运算和闭运算是将腐蚀和膨胀按照一定的次序进行处理。 但这两者并不是可逆的,即先开后闭并不能得到原来的图像。 开运算 开运算是先腐蚀后膨胀,其作用是:分离物体,消除小区域。特点:消除噪点,去除小的干扰块,而不影响原来的图像。 闭运算 闭运算与开运算相反,是先膨胀后腐蚀,作用是消除/“闭合”物体里面的孔洞,特点:可以填充闭合区域。 cv.morphologyEx(img, op, kernel) img: 要处理的图像 op: 处理方式:若进行开运算,则设为cv.MORPH_OPEN,若进行闭

꧁༺ʚvv༒catɞ༻꧂的博客 949

TBtools的序列提取步骤

本教程详细介绍了如何使用TBtools软件从原来的FASTA序列中提取特定的DNA序列。

weixin_47509995的博客 1万+

otter安装之Otter Manager安装

otter-manager作为otter同步的管理台,可以对zookeeper,otter-node进行管理 1.下载安装包,下载链接(需要积分或金币下载): https://download.csdn.net/download/u014642915/11389132 2.下载otter-manager库初始化sql文件,下载链接(需要积分或金币下载): https://download....

舍得斋 1589

Augustus手动安装教程

本文记载了如何结合conda手动安装Augustus

m0_65437087的博客 1258

终极指南:阿里巴巴Otter分布式数据库同步系统核心架构深度剖析

阿里巴巴Otter是一款高性能的分布式数据库同步系统,专为解决中美异地机房数据同步问题而设计。作为阿里巴巴内部广泛使用的中间件,Otter能够实现跨地域、跨数据库类型的高效数据同步,为企业级应用提供可靠的数据一致性保障。本文将深入解析Otter的核心架构、同步流程及关键组件,帮助读者快速掌握这一强大工具的工作原理。 ## Otter核心架构概览 Otter采用分层架构设计,主要包含Manage

gitblog_00529的博客 695

inferCNVpy实战指南:从安装到肿瘤细胞识别

本文提供inferCNVpy实战指南,详细介绍了从环境安装、数据准备到核心CNV推断分析的完整流程。重点讲解了如何利用该工具从单细胞转录组数据中识别肿瘤细胞,包括参考细胞选择、参数调优、结果可视化与解读,并分享了关键的避坑技巧,帮助用户高效完成肿瘤细胞识别。

weixin_29079643的博客 428

【项目实战】SOVD协议(面向服务的车辆诊断协议)

此外,AUTOSAR组织将SOVD部分内容的软件实现定义在了R22-11及以上版本的AUTOSAR Adaptive规范中,还支持动态发现车内诊断功能、获取高性能计算机(HPC)的Log信息等新的诊断需求,更符合当前软件定义汽车概念下的行业趋势。而SOVDGateway作为边缘节点,也肩负着对SOVD Client进行认证以及权限控制的责任,从而保证车辆的信息安全。相较于传统的UDS(Unified Diagnostic Services)协议,SOVD不仅保留了传统的读写数据、例程控制、故障读取等功能,

奶爸的编程之路,也就一周冷个三天 1905

阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房) - agapple - ITeye技术网站...

阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房) - agapple - ITeye技术网站阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房)...

weixin_34315485的博客 133

基于分数阶的图像边缘细节检测——边缘计算

在图像处理中,我们可以使用分数阶导数运算器来计算图像的分数阶梯度,从而得到更精确的边缘信息。通过使用基于分数阶的图像边缘细节检测方法,我们可以更准确地捕捉图像中的边缘细节信息。在这篇文章中,我们将介绍一种基于分数阶的方法来进行图像边缘细节检测,并提供相应的源代码实现。需要注意的是,以上提供的代码示例仅用于演示基于分数阶的图像边缘细节检测方法的实现。然后,我们读取了待处理的图像,并进行了预处理,如高斯模糊,以减少噪声的影响。最后,我们通过设置一个阈值,将梯度图像转化为二值化的边缘图像,并将结果显示出来。

GudcSql的博客 404

【MySQL】阿里巴巴分布式数据库同步系统(otter)

[root@wallet01~]#tarzxvfzookeeper-3.4.14.tar.gz-C/usr/local/ [root@wallet01~]#cd/usr/local/zookeeper-3.4.14/conf [root@wallet01conf]#mvzoo_sample.cfgzoo.cfg [root@wallet01con...

weixin_33924312的博客 368

Transformer实战(32)——Transformer模型压缩

在本节中,我们学习了如何在硬件资源受限的情况下减轻运行大模型的负担。我们介绍了如何通过蒸馏、剪枝和量化从训练好的模型中提取高效模型。预训练轻量级的通用语言模型(如 DistilBERT) 可以在各种任务上进行微调,并表现出与非蒸馏模型相当的性能。随着数据量的不断增加,我们希望模型能够更快地运行,在这方面,高效 Transformer 起着至关重要的作用。

盼小辉丶的博客 2605

LVGL misc timer 定时器(lv_timer.c)

定时器机制是LVGL中非常重要的一项功能,它承载了LVGL的延时任务执行,周期任务执行,时序任务执行等,可以说理解定时器的设计就一定程度上理解发LVGL的任务调度机制。

Bigan(安)的博客 4733

Carrel 文档解析全解:PDF、Word、PPT、代码与表格如何被拆解索引

Carrel 是一个面向 AI 智能体的自托管知识库,它会自动完成**文档解析**、分块与索引。本文将带你完整看懂 Carrel 的文档解析机制:PDF、Word、PPT、源代码、表格等不同格式的文件,是如何被一步步拆解成可检索片段的。 ## 🧭 解析流水线总览:从扫描到索引 Carrel 的文档入库分为四个阶段,整体流程可以概括为:**扫描 → 按格式解析 → 切块 → 向量化与关键词索引

gitblog_01030的博客 216

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Otter-安装配置

简介 OTTER是阿里巴巴公司为了解决杭州/美国机房数据间同步研发的一个开源软件。OTTER基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库,是一个分布式数据库同步系统。 工作原理图: 原理描述: 基于Canal开源产品,获取数据库增量日志数据。 典型管理系统架构,manager(web管理)+node(工作节点) manager运行时推送...

eagle89的专栏 1794

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: 机器学习之多元线性回归模型梯度下降公式与代码实现(篇二)
下一篇: 机器学习之分类算法k-NN介绍与代码实现(篇三)
大数据左右手
博客等级 码龄9年 475粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值