zhaojp0 2019-06-21
参考文献:Otter-入门篇1(阿里开源项目Otter介绍)
本人是一名应届毕业生,,还在努力挖坑。最近两个月被外派到其他公司做一个升级系统,做到现在一个多月。学到的东西很多,想总结的东西也很多,可是。。。时间是让人猝不及防的东西。好吧,现在先来总结otter数据同步。升级系统需要做到内网数据库(主)和外网的n个数据库(从)进行数据同步,考虑的方案有:
Ottter是由阿里巴巴开源的一个数据同步产品,它的最初的目的是为了解决跨国异地机房双A架构,两边可写的场景,开发时间从2011年7月份一直持续到现在,目前阿里巴巴B2B内部的本地/异地机房的同步需求基本全上了Otter。Otter基于数据库增量日志解析,支持mysql/oracle数据库进行同步,在最新的v4.2.13已经支持mysql5.7以及阿里云提供的RDS数据库(使用RDS童鞋的福音)。
Otter工作原理:
阿里的开源项目。mysql数据库binlog的增量订阅&消费组件基于日志增量订阅&消费支持的业务:数据库镜像、数据库实时备份、级索引 (卖家和买家各自分库索引)、search build、业务cache刷新、价格变化等重要业务消息。github:https://github.com/alibaba/canal
首先来看mysql主备复制的原理:
再看canel的原理:
原理相对比较简单: 模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议 mysql master收到dump请求,开始推送binary log给slave(也就是canal) canal解析binary log对象(原始为byte流).
先看看安装后的目录
安装配置zookeeper,这里配置的是单机模式,它还有集群模式,可以看
http://blog.csdn.net/mark_lq/...,http://blog.csdn.net/kongxx/a...
修改bin/zkEnv.sh脚本: 将ZOO_LOG_DIR="."修改为ZOO_LOG_DIR="/tmp/zookeeper/data" 将ZOO_LOG4J_PROP=”INFO,CONSOLE”修改为ZOO_LOG4J_PROP="INFO,ROLLINGFILE" 修改bin/zkServer.sh脚本: 将ZOOBIN="${BASH_SOURCE-$0}"修改为ZOOBIN=`readlink -f "${BASH_SOURCE-$0}"` 修改bin/zkCli.sh脚本: 将ZOOBIN="${BASH_SOURCE-$0}"修改为ZOOBIN=`readlink -f "${BASH_SOURCE-$0}"` 启动:到bin目录,./zkServer.sh start
概念步骤:先开启mysql——>开启zookeeper——>开启manager——>配置node——>启动node——>后续
机器/数据库实例(mysql5.6):192.168.0.212(master),192.168.5.223(slave)
这里需要改一下配置文件,my.inf(linux,在etc/my.inf),my.ini(windows)
log_bin = mysql-bin #打开日志 binlog_format = ROW #设置row模式的日志格式 server-id = 2 #id不能重复
我在212上安装了mysql,zookeeper,manager,aria2,node。场景是这样的,212作为管理后台的服务器,在上面的数据库有otter_manager的数据库,和管理后台的数据库,223作为接口服务器,数据库有升级接口数据库。此时管理后台每加数据需要同步到接口这来。
打开manager的web页面,登录在右上角,默认用户名密码都是admin
概念步骤:先开启mysql——>开启zookeeper——>开启manager——>配置node——>启动node——>后续
机器:192.168.0.212(master),192.168.5.223(slave)
说明:我在212上安装了mysql,zookeeper,manager,aria2,node,在223上安装了aria2,node,双向同步,需要配置n个node,因为manager是下派任务给node去执行的。场景是这样的,212作为管理后台的服务器,在上面的数据库有otter_manager的数据库,和管理后台的数据库,223作为接口服务器,数据库有升级接口数据库。此时管理后台每加数据需要同步到接口这来。