数据库binlog同步工具--otter使用指南

一、 Otter简介

otter是一款基于Java且免费、开源基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库的解决方案。

官方描述:

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

目前支持:
    1. 单向同步, mysql/oracle互相同步
    2. 双向同步,无冲突变更
    3. 文件同步,本地/aranda文件
    4. 双A同步,冲突检测&冲突补救
    5. 数据迁移,中间表/行记录同步
架构图:

在这里插入图片描述

原理描述:
  1. 基于Canal开源产品,获取数据库增量日志数据。 什么是Canal, 请点击
  2. 典型管理系统架构,manager(web管理)+node(工作节点)
    a. manager运行时推送同步配置到node节点
    b. node节点将同步状态反馈到manager上
  3. 基于zookeeper,解决分布式状态调度的,允许多node节点之间协同工作.

二、manager

(一)环境准备

  1. 需要新建1个mysql数据库,存储otter配置表,和需要同步的源数据库、目标数据库不是一个。
    a. 安装mysql,这里不展开,网上一搜一大把
    b. mysql创建otter的管理账户
    c. 初始化otter manager系统表:
    下载:https://raw.github.com/alibaba/otter/master/manager/deployer/src/main/resources/sql/otter-manager-schema.sql
    登录mysql执行:source otter-manager-schema.sql
    2、新建zookeeper集群
    不再赘述

(二)manager 安装

1、下载 otter manager

https://github.com/alibaba/otter/releases
如果gitgub下载不下来,可以自己编译

git clone git@github.com:alibaba/otter.git
cd otter; 
mvn clean install -Dmaven.test.skip -Denv=release
编译报错处理:

a. jar包下载缓慢或者下载不下来

修改maven中央仓库地址
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>       
    </mirror>

b. google的依赖包无法下载,如jmockit、jtester、ojdbc6

其实官方已经考虑到了,我们从git上pull下来的代码中有个lib目录下面就由这几个jar包,只需要修改pom依赖为本地jar即可
例如ojdbc6:
			<dependency>
				<groupId>com.oracle</groupId>
				<artifactId>ojdbc6</artifactId>
				<version>11.1.0.7.0</version>
				<scope>system</scope>  
				<systemPath>/home/chen/otter/otter/lib/ojdbc6.jar</systemPath>  
			</dependency>

编译成功后会在target下产生2个压缩包:manager和node
在这里插入图片描述

2、部署manager

新建目录manager,
把manager.deployer-xxx.tar.gz解压到manager下

tar -zxvf manager.deployer-4.2.19-SNAPSHOT.tar.gz -C  /home/chen/otter/manager

在这里插入图片描述

3、修改配置

vi conf/otter.properties

otter.domainName = 192.168.150.101   #本机ip
otter.port = 8080  #服务端口
otter.database.driver.url = jdbc:mysql://127.0.0.1:3306/otter #otter配置数据库
otter.database.driver.username = canal   #配置库用户名
otter.database.driver.password = xxx   #配置库密码
otter.zookeeper.cluster.default = 127.0.0.1:2181  #zookeeper地址
4、启动
sh vin/startup.sh

查看日志
vi logs/manager.log,如下日志表示启动成功:

2020-06-12 16:47:30.075 [] INFO  com.alibaba.otter.manager.deployer.JettyEmbedServer - ##Jetty Embed Server is startup!
2020-06-12 16:47:30.075 [] INFO  com.alibaba.otter.manager.deployer.OtterManagerLauncher - ## the manager server is running now ......
5、验证

浏览器访问
http://192.168.150.101:8080
出现登录页面
在这里插入图片描述
输入用户名密码 admin/admin,进入管理页面
在这里插入图片描述
需要配置使用的zk、canal、node等地址、端口等信息。
zk配置:
在这里插入图片描述
在这里插入图片描述
node配置
在这里插入图片描述
在这里插入图片描述

配置完成后,机器管理第一列就是nid,安装node时会用到。
在这里插入图片描述

三、node

1、之前maven编译后,会在target目录生成node.deployer-xxx.tar.gz
2、创建目录node,把压缩包解压到node目录下

 tar -zxvf node.deployer-4.2.19-SNAPSHOT.tar.gz  -C /home/chen/otter/node

3、修改配置
修改nid (将环境准备中添加机器后获取到的序号,保存到conf目录下的nid文件,比如我添加的机器对应序号为1)

echo 1 > conf/nid

4、启动

sh bin/startup.sh

5、查看日志

tail -f  logs/node/node.log
2020-06-16 16:56:25.503 [main] INFO  com.alibaba.otter.node.deployer.OtterLauncher - INFO ## the otter server is running now ......

表示启动成功
6、验证
登录 http://192.168.150.101:8080/nodeList.htm
在这里插入图片描述

四、同步任务配置

(一)数据源配置

1、添加数据源

在这里插入图片描述

2、添加2个数据源

在这里插入图片描述
在这里插入图片描述

(二)数据表配置

1、添加数据表

在这里插入图片描述

2、添加源表和目标表

在这里插入图片描述

在这里插入图片描述

(三)canal配置

1、添加canal

在这里插入图片描述

2、填写canal的配置信息

在这里插入图片描述
在这里插入图片描述

(四)channel管理

1、添加channel

在这里插入图片描述
在这里插入图片描述

(五)pipeline管理

点击刚刚创建的channel的查看按钮
在这里插入图片描述
出现如下页面:
在这里插入图片描述
点击添加
在这里插入图片描述
选择我们添加的机器,和创建的canal。

(六)映射管理管理

点击刚刚创建的pipeline
在这里插入图片描述
显示如下页面
在这里插入图片描述
点击添加
在这里插入图片描述
选择源表和目标表,点下一步,
在这里插入图片描述
选择字段对应关系,保存。
所有的配置都完成了。

(七)启动

点击同步管理,点击启用
在这里插入图片描述

(八)修改源mysql binlog配置

修改my.cnf

[mysqld]
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复

(九)测试

向源数据库表添加、修改数据,查看目标数据库是否也跟着变更。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值