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