otter实现双向同步_陈了个梦啊的博客-程序员宝宝_otter双向同步

技术标签: mysql  数据库  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 显示如下,如果有缺少需要单独安装。
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

初始化数据库

双A数据库初始化

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 = o t t e r . d o m a i n N a m e : {otter.domainName}: otter.domainName:{otter.communication.manager.port}
4.启动
./startup.sh 可能需要修改脚本的编码,:set ff=unix

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

otter-node安装部署

1.新增node,保存后得到唯一id
新增node

未启动
注意: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集群

zookeeper集群

新增cannel

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

新增channel

新增channel
双向同步只需要配置一个chanel,两个pipeline。

新增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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43030513/article/details/105426608

智能推荐

《千面英雄》听书笔记_晓衡的成长日记的博客-程序员宝宝

Cocos有7岁了,12月1号是Cocos的生日,Shawn用Cocos混饭吃快有四年了,居然还不知道,在这里真心祝Cocos生日快乐,越来越红火! 回想起这些年与Cocos纠结缠绵的日子,心里也有很多的感慨。这段时间正好听到何帆老师讲瑟夫·坎贝的《千面英雄》,他说神话故事只有一种原型,情节都一样,只是复述方式不同,神话故事本质上是个人成长的故事。听完以后让我对自己与这个世界有了更多的认识...

【大牛疯狂教学】深入java虚拟机百度云_程序猿元元的博客-程序员宝宝

Java基础核心笔记总结由于篇幅限制,我就只以截图展示目录内容以及部分笔记内容,获取完整版王者级核心宝典只需要点击点赞+关注即可获取领取方式!在这个部分我们总结了Java的基础知识,涵盖了:概述、开发环境、开发环境配置、基本语法、执行控制流程、面向对象、访问控制权限、接口和抽象类、异常、内部类、集合、泛形、反射、枚举、I/O等。目录:部分内容:Java全面学习笔记在这个部分总结了Java95%的知识点,由浅入深涵盖了:JVM、Java集合、多线程并发、Spring全家桶、Tomcat

linux下的I/O复用函数_qq_26406505的博客-程序员宝宝

Select系统调用:Select系统调用的功能是:在一段时间里监听用户感兴趣的文件描述符上的可读,可写,异常等事件。 这是linux上的select系统调用的原型: 各个参数说明:nfds指定被监听的文件描述符的总数,它通常被设置为最大的文件描述符的值加一,因为文件描述符是从0开始的。Readfds,writefds,exceptionfds,分别指向可读,可写,异常事件

matlab imhist与histeq函数_chaolei_9527的博客-程序员宝宝_matlab imhist

参考: https://zhidao.baidu.com/question/506425784.html http://www.ilovematlab.cn/thread-1460-1-1.html https://jingyan.baidu.com/article/9c69d48fbf456113c9024ed3.htmlimhist该函数用于获取图像数据的灰度直方图。灰度直方...

EasyExcel-----使用篇(读取Excel)_麻薯团子的博客-程序员宝宝_easyexcel 读取

一、官方文档地址https://www.yuque.com/easyexcel/doc/easyexcel#63093516maven坐标,版本同步https://github.com/alibaba/easyexcel<dependency> <groupId>com.alibaba</groupId> <artifactId>e...

Spark入门实战系列--4.Spark运行架构_dhtx_wzgl的博客-程序员宝宝

转自:http://www.cnblogs.com/shishanyuan/p/4721326.html1、 Spark运行架构1.1 术语定义lApplication:Spark Application的概念和Hadoop MapReduce中的类似,指的是用户编写的Spark应用程序,包含了一个Driver 功能的代码和分布在集群中多个节点上运行的Executor代码;lDri

随便推点

解决Android页面跳转过程中黑屏时间过长问题_比特掌柜的博客-程序员宝宝_应用间跳转出现长时间黑屏

由来今天某同学请我帮忙解决Android开发上的问题。我到问题现场让他复现了BUG,问题大致如此,APP打开之后,从启动页面跳转到首页页面时,出现长时间的黑屏。解决过程我查看控制台打印的信息,发现GCC频繁执行,这说明APP在页面跳转过程中消耗大量内存,而GCC运行会阻碍渲染进程的运行。因为黑屏的时间很长,所以我断定APP除了在某些地方过多消耗内存之外,必然还执行了耗时操作

autium pcb手动布线_画PCB时,一些非常好的布线技巧_weixin_39752434的博客-程序员宝宝

布线是PCB设计过程中技巧最细、限定最高的,即使布了十几年布线的工程师也往往觉得自己不会布线,因为看到了形形色色的问题,知道了这根线布了出去就会导致什么恶果,所以,就变的不知道怎么布了。但是高手还是有的,他们有着很理性的知识,同时又带着一些自我创作的情感去布线,布出来的线就颇为美观有艺术感。下面是一些好的布线技巧和要领:首先,先对做个基础介绍,PCB的层数可以分为单层,双层和多层的,单层现在基本淘...

CSAPP静态库_Melody_HUNNU的博客-程序员宝宝_应用程序员只需包含较少的库文件

静态库所有的编译系统都提供一种机制,将所有相关的目标模块打包成为一个单独的文件,成为static library——静态库相关的函数可以被编译为独立的目标模块,然后封装成一个单独的静态库文件。然后应用程序可以通过在命令行上指定的单独的文件名字来时用这些在库中定义的函数。在链接时,链接器将只复制程序引用的目标模块:1.减少了可执行文件在磁盘和内存中的大小。2.应用程序员只需要包含...

oracle创建表,增删改数据的语法_Mousai.的博客-程序员宝宝_orcale新增数据的语法

创建表CREATE TABLE 表名(列名1 NUMBER(10),------number是指数字类型,后面括号里给的是一个参数,不可超出的长度列名2 varchar2(10),------varchar2是指字符串类型,后面也是一个不可超过的长度列名3 date) -------日期类型添加数据insert into 表名(列名1,列名2,列名3)------下面给列里的值是要和上面列的类型对上values(数字,'字符',to_date('199...

2020-2021 Saint-Petersburg Open High School Programming Contest (SpbKOSHP 20) 部分题解_cervoliu的博客-程序员宝宝_2022-2023 saint-petersburg open high school progra

E先考虑每行个数相同的情形,只需 O(n)O(\sqrt n)O(n​)扫一遍因子再考虑类似美国国旗的情形,也就是一行个数为xxx,一行为x+1x+1x+1,依次排下去对于这种情形,可以将每行的个数视作x+0.5x+0.5x+0.5,行数不变,那么最后与nnn误差不超过0.50.50.5所以我们分别对n∗10+5n*10+5n∗10+5,n∗10n*10n∗10,n∗10−5n*10-5n∗10−5质因数分解,并将其分拆成个位数为555的因子ppp与因子qqq的乘积,并用abs(p div

推荐文章

热门文章

相关标签