参考文献:Otter-入门篇1(阿里开源项目Otter介绍)java
本人是一名应届毕业生,,还在努力挖坑。最近两个月被外派到其余公司作一个升级系统,作到如今一个多月。学到的东西不少,想总结的东西也不少,但是。。。时间是让人猝不及防的东西。好吧,如今先来总结otter数据同步。升级系统须要作到内网数据库(主)和外网的n个数据库(从)进行数据同步,考虑的方案有:
Ottter是由阿里巴巴开源的一个数据同步产品,它的最初的目的是为了解决跨国异地机房双A架构,两边可写的场景,开发时间从2011年7月份一直持续到如今,目前阿里巴巴B2B内部的本地/异地机房的同步需求基本全上了Otter。Otter基于数据库增量日志解析,支持mysql/oracle数据库进行同步,在最新的v4.2.13已经支持mysql5.7以及阿里云提供的RDS数据库(使用RDS童鞋的福音)。
Otter工做原理:node
阿里的开源项目。mysql数据库binlog的增量订阅&消费组件基于日志增量订阅&消费支持的业务:数据库镜像、数据库实时备份、级索引 (卖家和买家各自分库索引)、search build、业务cache刷新、价格变化等重要业务消息。github:https://github.com/alibaba/canal
首先来看mysql主备复制的原理: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...linux
修改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)git
log_bin = mysql-bin #打开日志 binlog_format = ROW #设置row模式的日志格式 server-id = 2 #id不能重复
我在212上安装了mysql,zookeeper,manager,aria2,node。场景是这样的,212做为管理后台的服务器,在上面的数据库有otter_manager的数据库,和管理后台的数据库,223做为接口服务器,数据库有升级接口数据库。此时管理后台每加数据须要同步到接口这来。github
打开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做为接口服务器,数据库有升级接口数据库。此时管理后台每加数据须要同步到接口这来。web