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

一、 Otter简介

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

官方描述:

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

目前支持:

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

架构图:

数据库binlog同步工具--otter使用指南_第1张图片

原理描述:

  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>alimavenid>
      <name>aliyun mavenname>
      <url>http://maven.aliyun.com/nexus/content/groups/public/url>
      <mirrorOf>centralmirrorOf>       
    mirror>

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

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

编译成功后会在target下产生2个压缩包:manager和node
数据库binlog同步工具--otter使用指南_第2张图片

2、部署manager

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

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

数据库binlog同步工具--otter使用指南_第3张图片

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
出现登录页面
数据库binlog同步工具--otter使用指南_第4张图片
输入用户名密码 admin/admin,进入管理页面
数据库binlog同步工具--otter使用指南_第5张图片
需要配置使用的zk、canal、node等地址、端口等信息。
zk配置:
数据库binlog同步工具--otter使用指南_第6张图片
数据库binlog同步工具--otter使用指南_第7张图片
node配置
数据库binlog同步工具--otter使用指南_第8张图片
数据库binlog同步工具--otter使用指南_第9张图片

配置完成后,机器管理第一列就是nid,安装node时会用到。
数据库binlog同步工具--otter使用指南_第10张图片

三、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
数据库binlog同步工具--otter使用指南_第11张图片

四、同步任务配置

(一)数据源配置

1、添加数据源

数据库binlog同步工具--otter使用指南_第12张图片

2、添加2个数据源

数据库binlog同步工具--otter使用指南_第13张图片
数据库binlog同步工具--otter使用指南_第14张图片

(二)数据表配置

1、添加数据表

数据库binlog同步工具--otter使用指南_第15张图片

2、添加源表和目标表

数据库binlog同步工具--otter使用指南_第16张图片

数据库binlog同步工具--otter使用指南_第17张图片

(三)canal配置

1、添加canal

数据库binlog同步工具--otter使用指南_第18张图片

2、填写canal的配置信息

数据库binlog同步工具--otter使用指南_第19张图片
数据库binlog同步工具--otter使用指南_第20张图片

(四)channel管理

1、添加channel

数据库binlog同步工具--otter使用指南_第21张图片
数据库binlog同步工具--otter使用指南_第22张图片

(五)pipeline管理

点击刚刚创建的channel的查看按钮
数据库binlog同步工具--otter使用指南_第23张图片
出现如下页面:
数据库binlog同步工具--otter使用指南_第24张图片
点击添加
数据库binlog同步工具--otter使用指南_第25张图片
选择我们添加的机器,和创建的canal。

(六)映射管理管理

点击刚刚创建的pipeline
数据库binlog同步工具--otter使用指南_第26张图片
显示如下页面
数据库binlog同步工具--otter使用指南_第27张图片
点击添加
数据库binlog同步工具--otter使用指南_第28张图片
选择源表和目标表,点下一步,
数据库binlog同步工具--otter使用指南_第29张图片
选择字段对应关系,保存。
所有的配置都完成了。

(七)启动

点击同步管理,点击启用
数据库binlog同步工具--otter使用指南_第30张图片

(八)修改源mysql binlog配置

修改my.cnf

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

(九)测试

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

你可能感兴趣的:(java,mysql,开发&管理工具)