otter实现双向同步
mysql双向同步
服务安装清单
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 显示如下,如果有缺少需要单独安装。
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搭建部署
代码打包
1.otter项目地址
2.拉取的代码结构如下图:
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.communication.manager.port}
4.启动
./startup.sh 可能需要修改脚本的编码,:set ff=unix
5.访问管理页面。账号/密码 admin/admin
otter-node安装部署
1.新增node,保存后得到唯一id
注意: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-manager配置
新增数据源
新增需要互相同步的两个数据源。
新增数据表
新增需要同步的数据表,.*代表同步所有的表。
新增zookeeper集群
新增cannel
otter内置了cannel,不需要我们重新安装。配置需要拉取的binlog的数据库信息。双向同步需要为每个数据库都配置一个cannel。
新增channel
双向同步只需要配置一个chanel,两个pipeline。
新增pipeline
otter对ddl,只支持单向同步,所以新增的两个pipeline只有一个能勾选上【支持ddl同步】,并且要选上【跳过ddl异常】,不然可能会导致channel挂起,无法同步。
添加映射关系列表
定义源表和目标表的同步关系。
启动channel
测试数据
解决双向同步,主键自增长冲突的问题
show global variables like ‘auto_inc%’; #查看全局变量中的自增长的默认步长
set global auto_increment_increment=2; #设置全局会话步长
set global auto_increment_offset=1/2; #设置全局自增长初始值。一个设置为1,一个设置为2