数据同步利器-otter的搭建使⽤说明
⼀、Otter⽬前⽀持了什么
1. 单向同步, mysql/oracle互相同步
2. 双向同步,⽆冲突变更
3. ⽂件同步,本地/aranda⽂件
4. 双A同步,冲突检测&冲突补救
5. 数据迁移,中间表/⾏记录同步
导历史表还需要程序代码实现吗? 还在⽤mysql的主从复制吗? Otter都能为你解决。
典型的场景是账户信息表和账户交易明细表,更新账户余额后需要登记⼀条账户明细,并且保证在⼀个事务⾥,⽤户可以通过交易明细表查看交易记录,但是交易明细表的数据量是逐步递增的,⽤户量多的系统,⼏个⽉下来的数据超过千万了,表数据量⼀多就导致查询和插⼊变慢,⽽⼀开始就对账户明细做分表处理就难于保证强⼀致性事务,通过otter可以将记录同步导历史表,并且进⾏分表处理,⽤户往年的交易记录就可以查询历史表了,⽽原交易明细表就可以删除⼀个⽉甚⾄⼏天前的数据;
实际测试中,otter的同步速度相⽐于mysql的复制,约有5倍左右的性能提升,这取决于其同步算法的实现. 抛弃了强⼀致性,得到了性能提升。
⼆、官⽅安装⽂档
演⽰视频:
三、整体架构
原理描述:
基于Canal开源产品,获取数据库增量⽇志数据。
典型管理系统架构,manager(web管理)+node(⼯作节点)
a. manager运⾏时推送同步配置到node节点
b. node节点将同步状态反馈到manager上
基于zookeeper,解决分布式状态调度的,允许多node节点之间协同⼯作.
名词解释:
Channel:同步通道,单向同步中⼀个Pipeline组成,在双向同步中有两个Pipeline组成;Pipeline:从源端到⽬标端的整个过程描述,主要由⼀些同步映射过程组成;
DataMediaPair:根据业务表定义映射关系,⽐如源表和⽬标表,字段映射,字段组等;
DataMedia: 抽象的数据介质概念,可以理解为数据表/mq队列定义;
DataMediaSource: 抽象的数据介质源信息,补充描述DateMedia;
ColumnPair: 定义字段映射关系;
ColumnGroup: 定义字段映射组;
Node: 处理同步过程的⼯作节点,对应⼀个jvm;
四、环境准备
1. otter manager依赖于mysql进⾏配置信息的存储,所以需要预先安装mysql,并初始化otter manager的系统表结构
a. 安装mysql
2. 整个otter架构依赖了zookeeper进⾏多节点调度,所以需要预先安装zookeeper,不需要初始化节点,otter程序启动后会⾃检.                manager需要在otter.properties中配置zookeeper集机器
3. 安装jdk1.6+
五、下载安装
创建manager⽬录 : mkdir ~/manager
tar  zxvf manager.deployer-4.2.  -C ~/manager
创建node⽬录: mkdir ~ /node
tar  zxvf node.deployer-4.2.  -C ~ /node
六、修改配置⽂件运⾏
(1)  Manager
1) otter.properties配置修改  vi ~/manager/conf/otter.properties
##修改为正确访问ip,⽣成URL使⽤,node的配置需要⽤到
otter.domainName= 127.0.0.1
##manage页⾯的访问端⼝
otter.port =8080
##修改为正确数据库信息
otter.database.driver.class.name = sql.jdbc.Driver
otter.database.driver.url = jdbc:mysql://127.0.01:3306/ottermanager
otter.database.driver.username = root
otter.database.driver.password = hello
##为node连接manager的端⼝, node的配置需要⽤到
ottermunication.manager.port= 1099
##配置zookeeper集机器
其它使⽤默认配置即可
2) Manager启动
Linux : sh  ~/manager/bin/startup.sh
Windows:startup.bat
查看⽇志: vi  ~/manager/logs/manager.log
3) 关闭manager
sh  ~/manager/bin/stop.sh
(2)Node
node会受ottermanager进⾏管理,所以需要预先安装otter manager,完成manager安装后,需要在manager页⾯为node定义配置信息,并⽣⼀个唯⼀id。
1)  添加zookeeper
⾸先确保你的zookeeper已启动成功。
otter依赖zookeeper,访问manager页⾯的机器管理页⾯,选择菜单进⼊“机器管理→zookeeper管理”页⾯:
点击添加进⼊“添加Zookeeper集”页⾯
2)  添加node
Zookeeper添加成功后,进⼊“机器管理→Node管理”页⾯:
点击添加进⼊添加机器页⾯
机器名称:可以随意定义,⽅便⾃⼰记忆即可
机器ip:对应node节点将要部署的机器ip,如果有多ip时,可选择其中⼀个ip进⾏暴露. (此ip是整个集通讯的⼊⼝,实际情况千万别使⽤127.0.0.1,否则多个机器的node节点会⽆法识别)
机器端⼝:对应node节点将要部署时启动的数据通讯端⼝,建议值:2088
下载端⼝:对应node节点将要部署时启动的数据下载端⼝,建议值:9090
外部ip :对应node节点将要部署的机器ip,存在的⼀个外部ip,允许通讯的时候⾛公⽹处理。
zookeeper集:为提升通讯效率,不同机房的机器可选择就近的zookeeper集.
node这种设计,是为解决单机部署多实例⽽设计的,允许单机多node指定不同的端⼝
3)  配置nid
机器添加完成后,跳转到机器列表页⾯,获取对应的机器序号nid:
通过这⼏步操作,获取到了node节点对应的唯⼀标⽰,称之为node id,简称nid,⽐如我添加的机器对应序号为1
执⾏echo 1 >~/node/conf/nid , 保存到conf⽬录下的nid⽂件;
4)  otter.properties配置修改  vi ~/otter/conf/otter.properties
# node的安装⽬录
#manager的服务地址
在linux中下载mysql时冲突是什么
otter.manager.address = 127.0.0.1:1099
5)  启动
Linux:sh~/node/bin/startup.sh
Windows:startup.bat
打开⽇志: vi ~/node/logs/node/node.log,出现以下的错误,表⽰manager页⾯的ip配置不正确,此时修改ip为对应的host ip 后,再次启动即可。
关闭:sh ~/node/bin/stop.sh
七、配置⼀个同步任务
搭建⼀个数据库同步任务,源数据库必须开启binlog,并且binlog_format为ROW,即在mysql的配置
⽂件加上以下两⾏
log-bin=mysql-bin
binlog-format=ROW
如果源库已开启binlog,通过mysql客户端命令show master status查看
1.  添加canal
Otter使⽤canal开源产品获取数据库增量⽇志数据,可以把cannal看作是源库的⼀个伪slave。
原理: canal模拟mysql slave的交互协议,伪装⾃⼰为mysql slave,向mysql master发送dump协议,mysql master收到dump 请求,开始推送binarylog给slave(也就是canal), canal解析binary log对象(原始为byte流)。
1)  在Otter Manager“配置管理-canal配置”页⾯点击添加:
2)  进⼊添加cannal页⾯:
Node集成了cannal,所以不需要单独下载cannal;
Cannal 存储机制分为memory和file,也可以在运⾏模式选项选择作为独⽴服务运⾏;
勾选其他参数设置,可以设置cannal的服务端⼝;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。