mq同步mysql数据 duplicate entry_MySQL数据同步之otter
一、otter介紹
基于日志數(shù)據(jù),用于MySQL或者ORACLE之間準(zhǔn)實(shí)時同步數(shù)據(jù)。
用途:
mysql/oracle互相同步
中間表/行記錄同步
二、原理及架構(gòu)圖
otter整體模塊
manager (提供web頁面進(jìn)行同步管理)
arbitrate (分布式調(diào)度,可跨IDC機(jī)房)
node (同步過程setl)
canal / eromanga (同步數(shù)據(jù)來源)
大集群化部署
1個manager集群?+?多個IDC機(jī)房node組成
1.?基于Canal,獲取數(shù)據(jù)庫增量日志數(shù)據(jù)。?
2.?典型管理系統(tǒng)架構(gòu),manager(web管理)+node(工作節(jié)點(diǎn))
????a. manager運(yùn)行時推送同步配置到node節(jié)點(diǎn)
????b. node節(jié)點(diǎn)將同步狀態(tài)反饋到manager上
3.?基于zookeeper,解決分布式狀態(tài)調(diào)度的,允許多node節(jié)點(diǎn)之間協(xié)同工作.
4.目前支持MySQL-->MySQL ?MySQL-->ORACLE等異庫之間同步
三、需要安裝包
https://github.com/alibaba/otter/releases
manager.deployer-4.2.18.tar.gz
node.deployer-4.2.18.tar.gz
(安裝時候可能需要安裝下載工具,下載后編譯安裝https://liquidtelecom.dl.sourceforge.net/project/aria2/stable/aria2-1.19.0/aria2-1.19.0.tar.gz)
canal.deployer-1.1.4.tar.gz
四、安裝簡要步驟
manager安裝
1.otter manager依賴于mysql進(jìn)行配置信息的存儲,所以需要預(yù)先安裝mysql,并初始化otter manager的系統(tǒng)表結(jié)構(gòu)
????a.?安裝mysql,這里不展開,網(wǎng)上一搜一大把
????b.?初始化otter manager系統(tǒng)表:
? 2.?整個otter架構(gòu)依賴了zookeeper進(jìn)行多節(jié)點(diǎn)調(diào)度,所以需要預(yù)先安裝zookeeper
????a. manager需要在otter.properties中指定一個就近的zookeeper集群機(jī)器
## otter manager domain name #修改為正確訪問ip,生成URL使用
? ? otter.domainName = 127.0.0.1????
? ? ## otter manager http port?otter.port = 8082 #按需調(diào)整默認(rèn)8080
? ? ## jetty web config xml otter.jetty = jetty.xml
otter manager database config?,修改為正確數(shù)據(jù)庫信息
otter.database.driver.class.name = com.mysql.jdbc.Driver
otter.database.driver.url = jdbc:mysql://127.0.01:3306/ottermanager
otter.database.driver.username = root
otter.database.driver.password = Dr@.1214
#zk地址
otter.zookeeper.cluster.default = 127.0.0.1:2181
訪問:
node安裝
具體安裝詳見:https://github.com/alibaba/otter/wiki/Node_Quickstart
1. otter node會受otter manager進(jìn)行管理,所以需要預(yù)先安裝otter manager
2.?完成manager安裝后,需要在manager頁面為node定義配置信息,并生一個唯一id.
??a. nid配置?(將環(huán)境準(zhǔn)備中添加機(jī)器后獲取到的序號,保存到conf目錄下的nid文件,比如我添加的機(jī)器對應(yīng)序號為6)
3.node節(jié)點(diǎn)進(jìn)行跨機(jī)房傳輸時,會使用到HTTP多線程傳輸技術(shù),目前主要依賴了aria2c做為其下載客戶端,后續(xù)會推出java版本.
????a. aria2?官方首頁:?http://aria2.sourceforge.net/
????b.?下載頁面:?http://sourceforge.net/projects/aria2/files/stable/
cancal安裝
主要用途是基于?MySQL?數(shù)據(jù)庫增量日志解析,提供增量數(shù)據(jù)訂閱和消費(fèi)。
canal?作為MySQL binlog?增量獲取和解析工具,可將變更記錄投遞到MQ?系統(tǒng)中,比如Kafka/RocketMQ。也可以直接把數(shù)據(jù)發(fā)送到es hbase等
具體參考:
https://github.com/alibaba/canal
我們配置一個同步任務(wù):
操作步驟:?1. ?添加數(shù)據(jù)庫????
a.?源庫?jdbc:mysql://localhost:3306 ????
b.?目標(biāo)庫?jdbc:mysql://localhost:3370
?
?2. ?添加channel ???
說明:
a.?同步一致性
基于數(shù)據(jù)庫反查?(簡單點(diǎn)說,就是強(qiáng)制反查數(shù)據(jù)庫,從binlog中拿到pk,直接反查對應(yīng)數(shù)據(jù)庫記錄進(jìn)行同步,回退到幾天前binlog進(jìn)行消費(fèi)時避免同步老版本的數(shù)據(jù)時可采用)
基于當(dāng)前日志變更?(基于binlog/redolog解析出來的字段變更值進(jìn)行同步,不做數(shù)據(jù)庫反查,推薦使用)
b.?同步模式
行模式?(兼容otter3的處理方案,改變記錄中的任何一個字段,觸發(fā)整行記錄的數(shù)據(jù)同步,在目標(biāo)庫執(zhí)行merge sql)
列模式?(基于log中的具體變更字段,按需同步)
c.?特殊組合:(同樣支持)
基于數(shù)據(jù)庫反查+列模式
基于當(dāng)前日志變更+行模式
?3. ?添加同步表信息?????
? ? ? ? ? a.?源數(shù)據(jù)表?demo.t_yq ???
? ? ? ? ? b.?目標(biāo)數(shù)據(jù)表?demo_3370.t_yq
?4.?添加pipeline ???
? ? ? ?a.?選擇node節(jié)點(diǎn)?????
? ? ? ?b.?選擇canal
5.?添加同步映射規(guī)則????
? ? ? a.?定義源表和目標(biāo)表的同步關(guān)系
?
?6.?啟動
?
7.?測試數(shù)據(jù)
源端插入數(shù)據(jù)
?
簡單的介紹了otter使用,下期我們在看下雙向同步以及canal同步數(shù)據(jù)到es
總結(jié)
以上是生活随笔為你收集整理的mq同步mysql数据 duplicate entry_MySQL数据同步之otter的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 编写递归下降语法分析器_Python3知
- 下一篇: 包含数字和指定字符的正则表达式_Exce