Otter英文名是水獭,在跨机房的数据同步中使用比较广泛,它是一个web的管理服务,核心是Manger模块。...Otter就是做Canal拿到binlog日志之后做消费处理,对目标数据库进行增量日志消费,实现数据搬运工作。...算是把canal融入了一个完整的技术体系,在这里面canal可以理解为Otter体系中的一个组件。...首先是对于环境的规划,和架构设计是紧密相关的,我们需要一台独立的管理节点,管理节点可以管理多套MySQL环境,每套环境上面有独立的Otter Node节点,同时配置了Zookeeper,会由Otter统一管理...Otter比较有意思的是他提供了一套WEB管理页面,在部署Manage之后就可以进入WEB页面进行配置管理了。 ? 整个Otter的配置基本都是页面化配置。 ?
配置修改 ## otter manager domain name #修改为正确访问ip,生成URL使用 otter.domainName = 127.0.0.1 ## otter manager...= hello ## otter communication port otter.communication.manager.port = 1099 ## otter communication...= 90000 ## otter arbitrate connect manager config otter.manager.address = ${otter.domainName}:${otter.communication.manager.port...二、node安装 环境准备 1. otter node会受otter manager进行管理,所以需要预先安装otter manager,参见:Otter Manager Quickstart. 2..../node ## otter node dir otter.htdocs.dir = ${otter.nodeHome}/htdocs otter.download.dir = ${otter.nodeHome
序 本文主要研究一下otter的NodeTask mysql-binlog-servers-at-bookingcom-15-638.jpg NodeTask otter/node/common/src.../main/java/com/alibaba/otter/node/common/config/model/NodeTask.java public class NodeTask implements.../shared/common/src/main/java/com/alibaba/otter/shared/common/model/config/pipeline/Pipeline.java public...Pipeline定义了id、channelId、name、description、selectNodes、extractNodes、loadNodes、pairs、parameters等属性 StageType otter.../shared/common/src/main/java/com/alibaba/otter/shared/common/model/config/enums/StageType.java public
序 本文主要研究一下otter的NodeTask NodeTask otter/node/common/src/main/java/com/alibaba/otter/node/common/config...ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE); } } NodeTask定义了pipeline、stage、event属性 Pipeline otter.../shared/common/src/main/java/com/alibaba/otter/shared/common/model/config/pipeline/Pipeline.java public...Pipeline定义了id、channelId、name、description、selectNodes、extractNodes、loadNodes、pairs、parameters等属性 StageType otter.../shared/common/src/main/java/com/alibaba/otter/shared/common/model/config/enums/StageType.java public
之后的otter最新版的默认内置canal版本为1.0.20,最好在这里自己编译下并替换。...; import com.alibaba.otter.canal.client.CanalConnectors; import com.alibaba.otter.canal.common.utils.AddressUtils...; import com.alibaba.otter.canal.protocol.Message; import com.alibaba.otter.canal.protocol.CanalEntry.Column...; import com.alibaba.otter.canal.protocol.CanalEntry.Entry; import com.alibaba.otter.canal.protocol.CanalEntry.EntryType...; import com.alibaba.otter.canal.protocol.CanalEntry.EventType; import com.alibaba.otter.canal.protocol.CanalEntry.RowChange
数据库同步中间件Canal+Otter - 前日篇(2) MySQL+InnoDB架构体系 ? MySQL体系前端接受连接,并提供多种API,连接池化可重用。
数据库同步中间件Canal+Otter - 前日篇(1) 启 - 我们为什么需要数据库跨机房同步 随着业务的增长和技术的演进,在应用架构上,我们经历了单一用用架构->垂直应用架构->分布式应用架构的发展...转 - 更合适的同步方案Canal+Otter 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求。...+Otter 利用Canal+Otter,我们可以实现: 1.更灵活的架构,多机房同步可以这么做: ?...3.Canal+Otter可以实现一个表一线程多个表多线程的同步,速度更快。同时会压缩简化要传输的binlog,减少网络压力。 4.双A机房同步....目前mysql的M-M部署结构,不支持解决数据的一致性问题,基于otter的双向复制+一致性算法,可一定程度上解决这个问题,实现双A机房.
Otter 简单介绍 名称:otter [‘ɒtə(r)] 译意: 水獭,数据搬运工 语言: 纯java开发 定位: 基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库.../releases 下载 manager.deployer-xxx.tar.gz 下载好后上传至服务器 mkdir ~/otter #创建otter目录 tar zxvf manager.deployer...-4.2.18.tar.gz -C ~/otter/manager-deployer/ #解压 2)创建otter数据库(这里用的是mysql数据库) 执行脚本otter manager sql (...内容末附上) 3) 修改otter.properties otter.domainName manage管理界面IP地址 otter.port 端口号 otter.database.driver.class.name...32312 IF NOT EXISTS*/ `otter` /*!
Otter-入门篇3(Node搭建) 前言 哈咯大家好呀!...今天是对otter准备的最后一个流程,配置好node,并且吧manager,zookeeper和node组合起来形成一个完整可以进行Mysql同步任务的服务,话不多说我们今天就来来事准备工作的最后一步Node...附上: 喵了个咪的博客:w-blog.cn Otter项目地址:https://github.com/alibaba/otter Otter文档地址:https://github.com/alibaba.../otter/wiki 1....安装配置aria2 我们在介绍otter的特性里面有提及到aria2,它是一个文件通道来保证需要同步的数据通过极快的速度同步到需要同步的服务器上 cd /app/install/ tar zxvf aria2
Otter-入门篇4(单向同步实践)# 前言## 在前几节我们已经做好了关于otter的准备工作,配置好了zookeeper,manage和node,本节就来完成otter第一个实际功能,单相数据同步....单向数据同步可以解决跨机房主从的问题,所有读操作都能从本地的从库进行操作,而写可以通过外网连接到主服务器进行写入,并且通过otter同步到各个从服务器,可以很好地应对多机房读业务偏多的场景,那么话不多说就开始本节的正文吧...附上: 喵了个咪的博客:w-blog.cn Otter项目地址:https://github.com/alibaba/otter Otter文档地址:https://github.com/alibaba.../otter/wiki 1....到这里就完成了一次单向同步的配置,我们所有的对master的操作都会同步到slave,但是slave是可以写的,所以一般会进行通过slave进行写操作保证数据的统一,后面的章节将会通过此机制慢慢讲解一些otter
Otter-入门篇2(Manager安装配置) 前言 上一节已经简单介绍了Otter的基本信息,本节我们就来开准备搭建一个我们自己的Otter环境,因为一个Otter需要Manage+node+数据库还有很多的依赖...附上: 喵了个咪的博客:w-blog.cn Otter项目地址:https://github.com/alibaba/otter Otter文档地址:https://github.com/alibaba.../otter/wiki ##1....source /tmp/manager/otter-manager-schema.sql 修改vim conf/otter.properties 配置文件 ## otter manager domain...port otter.port = 8080 ## otter manager database config ,修改为正确数据库信息 otter.database.driver.url = jdbc
阿里数据同步工具Otter和Canal简介请参考:https://www.xmmup.com/alishujutongbugongjuotterhecanaljianjie.html otter用于跨云...和ogg优缺点 1、otter不能同步无主键的表(会导致同步任务停止),而ogg可以 2、otter可以单向同步ddl语句,而ogg对于MySQL 5.7不可以,ogg对MySQL 8.0支持DDL同步...环境 docker exec -it lhrotter bash -- 修改/usr/local/otter_manager/conf/otter.properties otter.domainName...回环同步算法:Otter双向回环控制 ..../* 供 otter 使用, otter 需要对 retl.* 的读写权限,以及对业务表的读写权限 1.
Otter都能为你解决。...二、官方安装文档 https://github.com/alibaba/otter/wiki/Manager_Quickstart https://github.com/alibaba/otter/...初始化otter manager系统表:https://raw.github.com/alibaba/otter/master/manager/deployer/src/main/resources/sql...整个otter架构依赖了zookeeper进行多节点调度,所以需要预先安装zookeeper,不需要初始化节点,otter程序启动后会自检....配置修改 vi ~/otter/conf/otter.properties # node的安装目录 otter.nodeHome = ${user.dir}/node
组件Otter manager172.17.6.4otter manager 、otter node、jdk 、zookeeper 、mysqlotter node172.17.6.19otter node.../otter/manager wget https://github.com/alibaba/otter/releases/download/otter-4.2.18/manager.deployer-...ALL ON otter.* TO 'otter'@'%'; flush privileges;修改配置修改conf/otter.properties,修改如下信息:otter.domainName =...otter.database.driver.username = otter #otter数据库账号otter.database.driver.password = 123456...#otter数据库密码otter.communication.manager.port = 1099 #otter通讯地址,默认可不改otter.communication.pool.size
这时,Otter Wiki 就成为了你的理想选择。它用的是 Markdown,一种超轻量级的文本格式,简洁直观,特别适合写作和记录。...三步上手 Otter Wiki1. 安装 Otter Wiki 不用担心,它不像那些复杂的企业软件需要一整天的学习过程。...实用技巧:如何优化你的 Otter Wiki为了让 Otter Wiki 更适合日常使用,这里有几个实用的小技巧:1. 模板化内容结构可以通过创建 Markdown 模板,快速生成不同类型的内容。...加密敏感内容 虽然 Git 和 Markdown 本身是公开的,但如果你需要存储一些敏感数据,Otter Wiki 也可以结合 Git 的加密功能,确保内容安全无虞。谁最适合用 Otter Wiki?...如果你也想要一个完全属于自己的 Wiki,不妨试试看 Otter Wiki,用它的极简带来你的知识管理革命。
序 本文主要研究一下OtterLauncher mysql-56-gtid-in-a-nutshell-40-638.jpg OtterLauncher otter/node/deployer/src.../main/java/com/alibaba/otter/node/deployer/OtterLauncher.java public class OtterLauncher { private...public void run() { try { logger.info("INFO ## stop the otter...catch (Throwable e) { logger.warn("WARN ##something goes wrong when stopping Otter...catch (Throwable e) { logger.error("ERROR ## Something goes wrong when starting up the Otter
序 本文主要研究一下OtterLauncher OtterLauncher otter/node/deployer/src/main/java/com/alibaba/otter/node/deployer...public void run() { try { logger.info("INFO ## stop the otter...catch (Throwable e) { logger.warn("WARN ##something goes wrong when stopping Otter...catch (Throwable e) { logger.error("ERROR ## Something goes wrong when starting up the Otter.../node/etl/src/main/java/com/alibaba/otter/node/etl/OtterContextLocator.java public class OtterContextLocator
; import com.alibaba.otter.canal.client.CanalConnector; import com.alibaba.otter.canal.common.utils.AddressUtils...; import com.alibaba.otter.canal.protocol.Message; import com.alibaba.otter.canal.protocol.CanalEntry.Column...; import com.alibaba.otter.canal.protocol.CanalEntry.Entry; import com.alibaba.otter.canal.protocol.CanalEntry.EntryType...; import com.alibaba.otter.canal.protocol.CanalEntry.EventType; import com.alibaba.otter.canal.protocol.CanalEntry.RowChange...; import com.alibaba.otter.canal.protocol.CanalEntry.RowData; public class SimpleCanalClientExample
; import com.alibaba.otter.canal.client.CanalConnector; import com.alibaba.otter.canal.common.utils.AddressUtils...; import com.alibaba.otter.canal.protocol.Message; import com.alibaba.otter.canal.protocol.CanalEntry.Column...; import com.alibaba.otter.canal.protocol.CanalEntry.Entry; import com.alibaba.otter.canal.protocol.CanalEntry.EntryType...; import com.alibaba.otter.canal.protocol.CanalEntry.EventType; import com.alibaba.otter.canal.protocol.CanalEntry.RowChange...package com.alibaba.otter.canal.kafka.producer; ...
#main --> com.alibaba.otter.canal.deployer.CanalStarter#start --> com.alibaba.otter.canal.deployer.CanalController...对于每一个instance,都会在/otter/canal/destinations节点下记录自己的canal-server和canal-client信息。...接着在/otter/canal/destinations/{destination}/running节点下注册dataListener,用来监听该节点的数据增删改变化。...我们来梳理下目前看到的永久节点和临时节点 /otter/canal/cluster 永久节点目录,集群的节点信息根目录,代表正在运行的canal server /otter/canal/cluster/...ip:port 临时节点,存放具体的节点信息 /otter/canal/destinations 存放多个instance信息 /otter/canal/destinations/{destination
领取专属 10元无门槛券
手把手带您无忧上云