otter:分布式数据库同步系统

article/2025/10/20 12:49:02

一、otter介绍

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

otter项目:https://github.com/alibaba/otter
otter官方文档:https://github.com/alibaba/otter/wiki

二、QuickStart

1. 环境准备

服务器:
服务器A:192.168.x.1(主)
服务器B:192.168.x.3(从)

远程工具:XShell 6(用于建立远程连接)、Xftp 6(用于文件的上传)

操作系统:CentOS 7.2

JDK:1.8.0_221

数据库:MySQL 5.7

ZooKeeper:3.3.6

otter:otter包含两部分,一个是manager,另一个是node,版本都是4.2.16。

2.环境安装

(1) JDK的安装

otter为纯Java编写,因此需要确保机器中部署了Java环境。
本文下载版本:jdk-8u221-linux-x64.rpm(可根据具体需要自行选择)

1)上传安装包
打开Xftp 6,新建连接,上传安装包至指定的服务器,本文以 /home 为例。

2)执行安装
执行 rpm -ivh jdk-8u221-linux-x64.rpm 命令,开始安装JDK,等待安装完成。
/usr/java 下会增加一个 jdk1.8.0_221-amd64 ,说明JDK安装成功。

3)配置环境变量
执行 vim /etc/profile 命令,打开 profile 文件,按 i 进行文件的编辑,在文件的尾部添加如下内容:

JAVA_HOME=/usr/java/jdk1.8.0_221-amd64
JAVA_BIN=/usr/java/jdk1.8.0_221-amd64/bin
JRE_HOME=/usr/java/jdk1.8.0_221-amd64/jre
PATH=$JAVA_BIN:$PATH
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH

注:以上根据实际安装路径填写。
另:如果系统中提示 -bash: vim: command not found 说明还未安装 vim ,需要先执行 yum -y install vim* 进行 vim 的安装。

编辑完成后,按 Esc 键退出编辑状态,并输入 :wq 进行保存并退出。
退出 profile 文件后,执行 source /etc/profile 命令,让配置文件立即生效。
执行 java -version 命令,查看Java信息。
java -version
出现如上信息说明JDK已经安装成功。

(2) MySQL的安装

本文下载版本:mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz

1)首先检查服务器中是否有之前安装的残留文件:

find / -name mysql

如果有,则进行删除。

rm -rf 目录+文件名

2)上传安装包
通过Xftp 6,上传MySQL安装包至服务器指定目录,以 /home 为例。

3)解压安装包

  • 进入安装包所在目录: cd /home
  • 解压缩: tar -xzvf mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz
  • 重命名解压缩后的文件夹: mv mysql-5.7.16-linux-glibc2.5-x86_64 mysql

4)添加用户及用户组

  • 新建mysql用户组: groupadd mysql
  • 查看新建的用户组: cat /etc/group
  • 新建mysql用户并添加至mysql用户组: useradd -r -g mysql mysql
  • 查看新建的用户: cat /etc/passwd
  • 在mysql文件夹下创建新的文件夹:
cd /home/mysql
mkdir data log tmp
  • 将mysql文件夹及其子文件夹的用户及用户组改为mysql:
cd /home
chown -R mysql:mysql mysql

5)安装数据库

  • 将MySQL配置文件 my.cnf 放到指定位置 /etc 目录下( my.cnf 文件的配置可以参考这篇文章《my.cnf常用配置》)
  • 进入 mysql/bin 目录,执行安装命令,并指定用户、安装目录以及数据存放目录
cd /home/mysql/bin
./mysqld --initialize --user=mysql --basedir=/home/mysql --datadir=/home/mysql/data

注:如果执行上述命令时报错:

./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

此时需要安装libaio ,安装命令为: yum -y install libaio

  • 进入日志文件,查看初始密码(一定要保存初始密码,否则后面登陆不了MySQL)
cat /home/mysql/log/error.log

6)修改配置文件

  • 进入 support-files 目录
cd /home/mysql/support-files
  • 复制配置文件至 /etc/init.d/mysql
cp mysql.server /etc/init.d/mysql
  • 修改MySQL配置文件
vim /etc/init.d/mysql

修改以下两个值:

basedir=/home/mysql
datadir=/home/mysql/data
  • 配置系统环境变量
vim /etc/profile

添加MySQL相关环境变量:

export MYSQL_HOME=/home/mysql
export PATH=$PATH:$MYSQL_HOME/bin
  • 修改完成后,执行 source /etc/profile 使配置生效

7)添加开机自启动服务并将MySQL服务启动

  • 添加服务,服务名称为 mysql
chkconfig --add mysql
  • 开启 mysql 自启动服务
chkconfig mysql on
  • 启动 mysql 服务,出现 SUCCESS! 即为启动成功
service mysql start

8)配置用户名、密码并开启远程访问权限

  • 进入MySQL(5.7版本的初始密码由MySQL自动生成,即前文中日志文件所说密码)
mysql -u root -p

设置密码

set password=password('123456');

创建用户

CREATE USER 'root'@'%' IDENTIFIED BY '123456';

设置远程访问权限

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;
exit;

(3)ZooKeeper的安装

otter node依赖于zookeeper进行分布式调度,需要安装一个zookeeper节点或者集群。
本文下载版本:zookeeper-3.3.6.tar.gz,只在服务器A:192.168.x.1(主)上进行单节点的部署。

1)使用Xftp 6上传安装包至服务器指定目录,本文以 /home 为例

2)进入安装包所在目录并解压

cd /home
tar -xzvf zookeeper-3.3.6.tar.gz

3)重命名文件

mv zookeeper-3.3.6 zookeeper

4)创建data及log目录

mkdir /home/zookeeper/data
mkdir /home/zookeeper/log

5)修改配置文件

cd /home/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg

修改成如下内容:
vim zoo.cfg
6)启动zookeeper

cd /home/zookeeper/bin
./zkServer.sh start

出现 STARTED 字样即为启动成功。

7)自启动配置

vim /etc/rc.d/rc.local

添加下面一行语句:

/home/zookeeper/bin/zkServer.sh start

(4)otter manager的安装

在服务器A:192.168.x.1(主)机器上安装。
本文下载版本:manager.deployer-4.2.16.tar.gz

1)初始化otter manager系统表
下载:

wget https://raw.github.com/alibaba/otter/master/manager/deployer/src/main/resources/sql/otter-manager-schema.sql

注:如果没有安装 wget 需要先执行 yum -y install wget 进行安装。
载入(在MySQL内执行该语句):

source /home/otter-manager-schema.sql

注:MySQL 5.7版本 timestamp 类型的数据默认不能为,由此会导致上述语句执行失败。解决方案如下:

vim /etc/my.cnf

在[mysqld]下面添加一行:

sql-mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

重启MySQL服务使配置生效:

service mysql restart

2)下载otter manager并上传至服务器
下载链接:https://github.com/alibaba/otter/releases
上传至 /home 文件夹下

3)解压缩

mkdir -p /home/otter/manager
cd /home
tar zxvf manager.deployer-4.2.16.tar.gz -C /home/otter/manager

4)配置修改

cd /home/otter/manager/conf
vim otter.properties

otter.domainName = 192.168.x.1(根据自己ip进行设置)
otter.port = 8080(设置otter manager服务的端口号,默认为8080)

otter.database.driver.url = jdbc:mysql://192.168.x.1:3306/otter
otter.database.driver.username = root
otter.database.driver.password = 123456

otter.zookeeper.cluster.default = 192.168.x.1:2181

5)启动

sh /home/otter/manager/bin/startup.sh

6)查看日志

vim logs/manager.log
2019-08-09 11:03:54.828 [] INFO  com.alibaba.otter.manager.deployer.JettyEmbedServer - ##Jetty Embed Server is startup!
2019-08-09 11:03:54.828 [] INFO  com.alibaba.otter.manager.deployer.OtterManagerLauncher - ## the manager server is running now ......

出现上述信息,表明启动成功

7)验证
访问:http://192.168.x.1:8080/ 出现otter的页面,即代表启动成功
manager
访问:http://192.168.x.1:8080/login.htm,初始密码为:admin/admin,即可完成登录. 目前:匿名用户只有只读查看的权限,登录为管理员才可以有操作权限

注:如果使用XShell等远程连接工具无法打开上述网址,请先关闭服务器的防火墙再尝试。

8)关闭

sh stop.sh

(5)otter node的安装

otter node需要在各个应用的服务器上进行安装和配置,即:
服务器A:192.168.x.1(主)
服务器B:192.168.x.3(从)
本文以服务器A为例进行讲解,其他机器上的安装配置类似。
本文下载版本:node.deployer-4.2.16.tar.gz

1)在manager中对node进行配置

  • 访问http://192.168.x.1:8080/,已管理员的身份登陆系统
    otter manager
  • 点击“机器管理”-“zookeeper管理”,添加zookeeper的信息
    添加zookeeper
  • 点击“机器管理”-“Node管理”,添加机器的信息
    机器管理
  • 机器添加完成后,跳转到机器管理列表页面,得到对应机器的序号,称之为node id,简称nid,后续启动nid时会使用
    机器管理列表

2)安装aria2
node节点进行跨机房传输时,会使用到HTTP多线程传输技术,目前主要依赖了aria2c做为其下载客户端,当前测试过多个HTTP多线程下载客户端,比如wget,curl,axel,oget,proz,aria2c,测试结果aria2c下载效率最快,基本可以压满网卡。

  • 首先安装EPEL源
yum install epel-release
yum repolist //查看是否成功安装epel
  • 安装Aria2
yum install aria2
  • 生成配置文件并编辑
mkdir /etc/aria2/
vim  /etc/aria2/aria2.conf
  • 配置内容
#用户名
#rpc-user=自行修改
#密码
#rpc-passwd=自行修改
#上面的认证方式不建议使用,建议使用下面的token方式
#设置加密的密钥
#rpc-secret=token
#允许rpc
enable-rpc=true
#允许所有来源, web界面跨域权限需要
rpc-allow-origin-all=true
#允许外部访问,false的话只监听本地端口
rpc-listen-all=true
#RPC端口, 仅当默认端口被占用时修改
rpc-listen-port=6800
#最大同时下载数(任务数), 路由建议值: 3
max-concurrent-downloads=5
#断点续传
continue=true
#同服务器连接数
max-connection-per-server=5
#最小文件分片大小, 下载线程数上限取决于能分出多少片, 对于小文件重要
min-split-size=10M
#单文件最大线程数, 路由建议值: 5
split=10
#下载速度限制
max-overall-download-limit=0
#单文件速度限制
max-download-limit=0
#上传速度限制
max-overall-upload-limit=0
#单文件速度限制
max-upload-limit=0
#断开速度过慢的连接
#lowest-speed-limit=0
#验证用,需要1.16.1之后的release版本
#referer=*
#文件保存路径, 默认为当前启动位置
dir=/root/downloads
#文件缓存, 使用内置的文件缓存, 如果你不相信Linux内核文件缓存和磁盘内置缓存时使用
#disk-cache=0
#另一种Linux文件缓存方式
#enable-mmap=true
#文件预分配, 能有效降低文件碎片, 提高磁盘性能. 缺点是预分配时间较长
file-allocation=prealloc
  • 启动测试
aria2c --conf-path=/etc/aria2/aria2.conf

3)下载otter node并上传至服务器
otter node下载版本:node.deployer-4.2.16.tar.gz
本文以 /home 为例

4)解压缩

mkdir -p /home/otter/node
cd /home
tar zxvf node.deployer-4.2.16.tar.gz -C /home/otter/node

5)配置修改

  • nid配置(将前文添加机器后获取到的序号,保存到conf目录下的nid文件)
echo 1 > conf/nid
  • otter.properties配置修改

otter.manager.address = 192.168.x.1:1099

6)准备启动

sh /home/otter/node/bin/startup.sh

7)查看日志

vi logs/node/node.log
2019-08-09 14:15:16.886 [main] INFO  com.alibaba.otter.node.deployer.OtterLauncher - INFO ## the otter server is running now ......

出现上述信息,说明node启动成功

8)验证
访问: http://192.168.x.1:8080/node_list.htm,查看对应的节点状态,如果变为了已启动,代表已经正常启动。
验证node
9)关闭

sh stop.sh

(6)otter的安装

1)搭建一个数据库同步任务,源数据库ip为:192.168.x.3,目标数据库ip为:192.168.x.1. 源数据库已开启binlog,并且binlog_format为ROW。

mysql> show variables like '%binlog_format%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+

2) 数据同步精确到一张表进行测试,测试的表名为test.example,简单包含两个子段。

otter配置官方演示视频

CREATE TABLE  `test`.`example` (`id` int(11)  NOT NULL AUTO_INCREMENT,`name` varchar(32) COLLATE utf8_bin DEFAULT NULL ,PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert into test.example(id,name) values(null,'hello');-----
Otter QuickStart 如何配置一个任务
-----
操作步骤:
1.  添加数据库a.  源库 jdbc:mysql://10.20.144.25:3306b.  目标库 jdbc:mysql://10.20.144.29:3306
2.  添加canala.  提供数据库ip信息 
3.  添加同步表信息a.  源数据表 test.exampleb.  目标数据表 test.example
4.  添加channel
5.  添加pipelinea.  选择node节点b.  选择canal
6.  添加同步映射规则a.  定义源表和目标表的同步关系
7.  启动
8.  测试数据 

3)配置完成后,手动在源库插入数据,然后快速在目标库进行查看数据,验证数据是否同步成功。


http://chatgpt.dhexx.cn/article/Yxu7QUbL.shtml

相关文章

Otter 下载安装

简介 基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库. 一个分布式数据库同步系统。 原理 1. 基于Canal开源产品,获取数据库增量日志数据。 什么是Canal, 请点击 2. 典型管理系统架构,manager(web管理)node(工…

otter使用手册

目录 1.机器管理 1.1 zookeeper管理 1.2 Node管理 2.配置管理 2.1数据源配置 2.2数据表配置(添加数据库表) 2.3 Canal配置(添加Canal) 3.同步管理 3.1 Channel管理 3.2 Pipeline管理 1.机器管理 1.1 zookeeper管理 添加z…

Otter 双向同步mysql

一、Otter目前支持了什么 1. 单向同步, mysql/oracle互相同步 2. 双向同步,无冲突变更 3. 文件同步,本地/aranda文件 4. 双A同步,冲突检测&冲突补救 5. 数据迁移,中间表/行记录同步 实际测试中,otter的…

Otter安装说明

Otter安装说明 Mysql安装(如果已安装则无需再安装):【忽略安装Mysql】 安装依赖 yum -y install perl perl-devel autoconf #下载Mysql包 https://github.com/alibaba/otter/releases【Otter最新版本下载】 wget https://dev.mysql.com/g…

otter mysql hbase_otter自定义扩展

otter自定义扩展 otter支持数据处理自定义过程。 Extract模块: EventProcessor : 自定义数据处理,可以改变一条变更数据的任意内容 FileResolver : 解决数据和文件的关联关系 目前两者都只支持java语言编写,但都支持运行时动态编译&lib包…

otter搭建

一、安装zookeeper的单机版 apache-zookeeper-3.6.1-bin.tar.gz 如果下载的是3.5及以后的,需要下载包名带有-bin的版本,从3.5.5开始,带有bin的包才是解压以后可以直接使用的里面有编译后二进制的包,而之前的普通的tar.gz里面只是…

otter安装

译意: 水獭,数据搬运工 语言: 纯java开发 定位: 基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库. 一个分布式数据库同步系统 otter的环境需要:mysql,jdk&#x…

Otter 安装部署维护

介绍 淘宝开源的产品,基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库,一个分布式数据库同步系统。 目前同步规模: 同步数据量6亿 文件同步1.5TB(2000w张图片) 涉及200个数据库实例之间的同步 80台机器…

Otter配置说明

Otter配置说明 标签: Otter 下载 最新版Otter下载地址 CSDN下载地址 需要下载manager.deployer-4.2.13.tar.gz,node.deployer-4.2.13.tar.gz和Source code (zip) 需要安装zookeeper和jdk支持,canal已经内置,不需要安装 manage…

mysql otter_MySQL数据库实现远程同步的工具alibaba otter

MySQL数据库实现远程同步的工具alibaba otter 发布时间:2020-06-03 15:46:57 来源:51CTO 阅读:291 作者:三月 本篇文章给大家主要讲的是关于MySQL数据库实现远程同步的工具alibaba otter的内容,感兴趣的话就一起来看看…

Otter源码深入详解(三)

分析Node的代码前,需要理解Node的工作机制,需要先了解其工作原理: https://github.com/alibaba/otter/wiki/Otter调度模型 这里用到了SEDA模型,SEDA模型这里有偏文章介绍的很好: https://www.jianshu.com/p/e184fdc0ad…

otter mysql教学视频_3.Otter快速上手

QuickStart 1.几点说明 有一点特别注意:目前canal支持mixed,row,statement多种日志协议的解析,但配合otter进行数据库同步,目前仅支持row协议的同步,使用时需要注意. 环境准备 操作系统 a. otter为纯java编写,windows/…

通过docker构建otter

本文是通过docker构建otter环境与mysql环境 一、使用docker构建otter docker pull canal/otter-all curl -fsSL https://raw.githubusercontent.com/alibaba/otter/master/docker/run.sh | bash 访问otter:http://192.168.102.212:8080 账号密码默认是admin/adm…

Otter详解

otter girthub链接: https://github.com/alibaba/otter 有兴趣的同学可以移步笔者的个人博客 更多博客 整体架构 子模块解释 zooKeeper 分布式一致性协调服务,主要用来调度配置好的node模块。 manager 管理中心,用来配置同步信息&#…

otter 配置问题笔记

otter 部署启动 : 1,启动zookeeper 2,启动manager 3,启动node 4 在manger管理界面配置zookeeper 和node 添加映射关系表 点击pipeline的名称, 点击[批量添加] (一个一个的添加, 太累) 按照以下格式输入 数据库名,表1,【数据源配置】序号,目的数据源的序号 item,s…

otter快速开始

目录 一、Otter简介二、Otter目前支持了什么三、Canal & Otter 的一些注意事项四、otter单向同步搭建测试1. 环境准备2. Manager使用(任务配置整个流程)配置完整流程 3. 过程问题整理3.1 Problem accessing /channelList.htm. Reason:3.2 show maste…

Otter

一.概述 Otter 阿里巴巴分布式数据库同步系统:https://github.com/alibaba/otter Otter底层依赖Canal接收和解析mysql binlog日志,提供了可配置化的同步机制,纯java开发,免费开源的,基于数据库增量日志解析&#xff…

otter学习 | otter 基本介绍

一、项目介绍 名称:otter [‘ɒtə(r)] 译意: 水獭,数据搬运工 语言: 纯java开发 定位: 基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库。 二、工作原理 原理描述&#xf…

Otter-安装配置

简介 OTTER是阿里巴巴公司为了解决杭州/美国机房数据间同步研发的一个开源软件。OTTER基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库,是一个分布式数据库同步系统。 工作原理图: 原理描述: 基于Can…

Otter入门简介

一、Otter简介 1.1 otter是什么? otter 译意: 水獭,数据搬运工 语言: 纯java开发 定位: 基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库. 一个分布式数据库同步系统。Ottter是…