摘要:阿里開源項目,數據同步的解決方案。基于數據庫增量日志解析,支持數據庫進行同步在最新的已經支持以及阿里云提供的數據庫使用童鞋的福音。
參考文獻:Otter-入門篇1(阿里開源項目Otter介紹)
一、背景本人是一名應屆畢業生,,還在努力挖坑。最近兩個月被外派到其他公司做一個升級系統,做到現在一個多月。學到的東西很多,想總結的東西也很多,可是。。。時間是讓人猝不及防的東西。好吧,現在先來總結otter數據同步。升級系統需要做到內網數據庫(主)和外網的n個數據庫(從)進行數據同步,考慮的方案有:
直接在項目配置n個從數據庫加1個主庫,但是碼代碼太麻煩了,有工具多好使。
用percona-tookit
下載鏈接:https://www.percona.com/downl...,
github demo:https://github.com/mrjgreen/d...(表示還沒看。。)
用otter(分布式數據庫同步系統),純java編寫,支持windows,linux。阿里開源項目,數據同步的解決方案。鏈接:http://pan.baidu.com/s/1eR5ccQe
密碼:r5cp,github:https://github.com/alibaba/otter
Ottter是由阿里巴巴開源的一個數據同步產品,它的最初的目的是為了解決跨國異地機房雙A架構,兩邊可寫的場景,開發時間從2011年7月份一直持續到現在,目前阿里巴巴B2B內部的本地/異地機房的同步需求基本全上了Otter。Otter基于數據庫增量日志解析,支持mysql/oracle數據庫進行同步,在最新的v4.2.13已經支持mysql5.7以及阿里云提供的RDS數據庫(使用RDS童鞋的福音)。
Otter工作原理:
基于Canal開源產品,獲取數據庫增量日志數據。 什么是Canal,
請點擊https://github.com/alibaba/canal
典型管理系統架構,manager(web管理)+node(工作節點)
manager運行時推送同步配置到node節點
node節點將同步狀態反饋到manager上
基于zookeeper,解決分布式狀態調度的,允許多node節點之間協同工作.(otter node依賴于zookeeper進行分布式調度,需要安裝一個zookeeper節點或者集群)
db : 數據源以及需要同步到的庫
Canal : 用戶獲取數據庫增量日志,目前主要支持mysql
manager : 配置同步規則設置數據源同步源等
zookeeper : 協調node進行協調工作
node : 負責任務處理處理接受到的部分同步工作
三、Canel是什么?阿里的開源項目。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流).四、otter環境搭建(所需文件已在上方下載鏈接)
先看看安裝后的目錄
安裝好mysql
安裝好jdk,配置環境變量,zookeeper和Otter-manager都需要依賴java
安裝配置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
安裝配置manager
先安裝manager
再安裝ottermanager的數據庫
這里可能會有權限問題,grant一下權限就ok
修改配置文件otter.properties
啟動:到bin目錄 ./startup.sh
日志可以去/tmp/manager/logs/manager.log查看
啟動成功后,打開http://192.168.0.212:8080/,即可訪問到
安裝配置aria2,保證需要同步的數據通過極快的速度同步到需要同步的服務器上。
安裝,windows上安裝需要配置環境變量。這個也是個神器哦
安裝配置node節點,node主要負責接受manage下發任務的處理
注意:這里配置完后,需到manager管理頁面進行配置node信息,然后再來開啟node建立連接!
概念步驟:先開啟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
添加zookeeper
添加node
看序號,序號為2,則去conf下執行echo 2 > nid,對應且唯一。還有修改配置文件otter.properties,otter.manager.address = 192.168.0.212:1099,確認manager的地址。好了,接下來可以去啟動node,若一直都是未啟動狀態可以查閱/tmp/node/logs中的日志
給兩臺數據庫實例建兩個結構格式一樣的數據庫
數據源配置——添加數據源
從庫
主庫
添加完后
數據表配置——添加數據表
需要同步到的表
需要同步的表
添加后
配置同步規則——canel配置
同步管理——添加channel——添加Pipeline——源和目標表的配置
保存后點擊channel1進去添加Pipeline
添加后點擊Pipeline進去配置源和目標表
啟用channel
測試單向同步完美成功。如若失敗,請去監控管理——日志記錄查看日志。
六、otter配置單向同步概念步驟:先開啟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作為接口服務器,數據庫有升級接口數據庫。此時管理后臺每加數據需要同步到接口這來。
添加zookeeper,同上
添加兩個node,對應兩臺數據庫
分別去node安裝路徑的conf下執行echo 1 > nid,echo 2 > nid,對應且唯一。并且otter.properties的otter.manager.address = 192.168.0.212:1099要對應安裝manager的地址。接著啟動
給兩臺數據庫實例建兩個結構格式一樣的數據庫,ottmanage(主庫),ottupdate(從庫)
數據源配置配置——添加數據源
數據表配置——添加數據表
配置同步規則——canel配置(兩個,每一個對應一個數據庫信息,從配置的數據庫中,拉取bin-log信息)
同步管理——添加channel
點擊添加好的channel,添加Pipeline
注意:第二個這里要點擊高級設置,取消ddl支持,因為雙向同步中,一個channel只允許有一個ddl,即只允許有一個主站。
點擊Pipeline1,添加主庫要往從庫同步的數據源映射關系配置
點擊Pipeline2,添加從庫要往主庫同步的數據源映射關系配置
由于是雙向同步,所以還需要點擊使用文檔-》數據庫初始化頁面,在雙機房的數據庫同時執行初始化SQL。
啟動,和可能遇到的問題,一般日志記錄那只會記錄異常記錄。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70216.html
摘要:淘寶定制基于,是國內第一個優化定制且開源的服務器版虛擬機。數據庫開源數據庫是基于官方版本的一個分支,由阿里云數據庫團隊維護,目前也應用于阿里巴巴集團業務以及阿里云數據庫服務。淘寶服務器是由淘寶網發起的服務器項目。 Java JAVA 研發框架 SOFAStack SOFAStack(Scalable Open Financial Architecture Stack)是用于快速構建金融...
閱讀 796·2021-09-22 16:01
閱讀 2093·2021-08-20 09:37
閱讀 1696·2019-08-30 15:54
閱讀 1696·2019-08-30 15:44
閱讀 835·2019-08-28 18:23
閱讀 3017·2019-08-26 12:17
閱讀 1021·2019-08-26 11:56
閱讀 1543·2019-08-23 16:20