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