otter实现双向同步

服务安装清单

linux服务器 gcc version 4.8.5 gcc版本低于4.8需要升级

机器 组件
10.19.160.94 otter-manager ,zookeeper1 , jdk1.8
10.19.160.95 mysql ,zookeeper2 , aria2
10.19.160.96 otter-node ,zookeeper3 ,jdk1.8
192.168.25.55 otter-node ,jdk1.8 , aria2
192.168.25.58 mysql

otter依赖部署

zookeeper集群部署

1.10.19.160.94 部署zookeeper1
(1)zookeeper安装目录/u02/phoenix/zookeeper3.5.7
(2)cd /u02/phoenix/zookeeper3.5.7
mkdir zkData
touch myid
echo “1” > myid
(3)修改zoo.conf 配置:
dataDir=/u02/phoenix/zookeeper3.5.7/zkData
server.1=10.19.160.94:2888:3888
server.2=10.19.160.95:2888:3888
server.3=10.19.160.96:2888:3888

2.10.19.160.95 部署zookeeper2
(1)zookeeper安装目录/u02/phoenix/zookeeper3.5.7
(2)cd /u02/phoenix/zookeeper3.5.7
mkdir zkData
touch myid
echo “2” > myid
(3)修改zoo.conf 配置:
dataDir=/u02/phoenix/zookeeper3.5.7/zkData
server.1=10.19.160.94:2888:3888
server.2=10.19.160.95:2888:3888
server.3=10.19.160.96:2888:3888

3.10.19.160.95 部署zookeeper2
(1)zookeeper安装目录/u02/phoenix/zookeeper3.5.7
(2)cd /u02/phoenix/zookeeper3.5.7
mkdir zkData
touch myid
echo “3” > myid
(3)修改zoo.conf 配置:
dataDir=/u02/phoenix/zookeeper3.5.7/zkData
server.1=10.19.160.94:2888:3888
server.2=10.19.160.95:2888:3888
server.3=10.19.160.96:2888:3888

aria2安装部署

1.aria2下载地址
2.执行rpm -qa|grep gcc 显示如下,如果有缺少需要单独安装。
otter实现双向同步
3.切换到执aria2目录,执行命令,需要执行一段时间。
./configure make make install
4.验证 aria2c --version

mysql配置文件修改

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

初始化数据库

otter实现双向同步

otter搭建部署

代码打包

1.otter项目地址
2.拉取的代码结构如下图:
otter实现双向同步
3.打包
mvn clean install -Dmaven.test.skip -Denv=release

otter-manager安装

1.初始化otter manager系统表,初始化语句在otter\manager\deployer\src\main\resources\sql目录。
source otter-manager-schema.sql
2.将manager.deployer-$version.tar.gz 上传到10.19.160.94服务器。
3.修改配置文件
#修改为正确访问ip,生成URL使用
otter.domainName = 127.0.0.1
#otter manager http port
otter.port = 8080

#修改为正确数据库信息
otter.database.driver.class.name = com.mysql.jdbc.Driver
otter.database.driver.url = jdbc:mysql://127.0.01:3306/ottermanager
otter.database.driver.username = root
otter.database.driver.password = hello

#default zookeeper address,修改为正确的地址,手动选择一个地域就近的zookeeper集群列表
otter.zookeeper.cluster.default = 127.0.0.1:2181
default zookeeper session timeout = 90s
otter.zookeeper.sessionTimeout = 90000

#otter arbitrate connect manager config
otter.manager.address = otter.domainName:{otter.domainName}:{otter.communication.manager.port}
4.启动
./startup.sh 可能需要修改脚本的编码,:set ff=unix

5.访问管理页面。账号/密码 admin/admin

otter-node安装部署

1.新增node,保存后得到唯一id
otter实现双向同步

otter实现双向同步
注意:node节点进行跨机房传输时,会使用到HTTP多线程传输技术,目前主要依赖了aria2c做为其下载客户端。所以aria2c必须与node节点在一台服务器上
序号1对应10.19.160.96 序号2对应192.168.25.55

2.将-node.deployer-$version.tar.gz 上传到10.19.160.96和192.168.25.55服务器上,tar -xvf 解压缩。

3.进入node文件夹下,10.19.160.96服务器上执行echo 1 > conf/nid 192.168.25.55服务器上执行
echo 2 > conf/nid
4.修改node配置文件otter.properties
#otter arbitrate & node connect manager config
otter.manager.address = 10.19.160.94:1099
5.启动
./startup.sh
otter实现双向同步

otter-manager配置

新增数据源

otter实现双向同步
新增需要互相同步的两个数据源。

新增数据表

otter实现双向同步
新增需要同步的数据表,.*代表同步所有的表。

新增zookeeper集群

otter实现双向同步

新增cannel

otter实现双向同步
otter内置了cannel,不需要我们重新安装。配置需要拉取的binlog的数据库信息。双向同步需要为每个数据库都配置一个cannel。

新增channel

otter实现双向同步
双向同步只需要配置一个chanel,两个pipeline。

新增pipeline

otter实现双向同步
otter对ddl,只支持单向同步,所以新增的两个pipeline只有一个能勾选上【支持ddl同步】,并且要选上【跳过ddl异常】,不然可能会导致channel挂起,无法同步。

添加映射关系列表

otter实现双向同步
定义源表和目标表的同步关系。

启动channel

otter实现双向同步

测试数据

otter实现双向同步

解决双向同步,主键自增长冲突的问题

show global variables like ‘auto_inc%’; #查看全局变量中的自增长的默认步长
set global auto_increment_increment=2; #设置全局会话步长
set global auto_increment_offset=1/2; #设置全局自增长初始值。一个设置为1,一个设置为2