參考文獻: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