mysql 定时同步数据_MySQL数据同步之otter
一、otter介紹
基于日志數據,用于MySQL或者ORACLE之間準實時同步數據。
用途:
mysql/oracle互相同步
中間表/行記錄同步
二、原理及架構圖
otter整體模塊
manager (提供web頁面進行同步管理)
arbitrate (分布式調度,可跨IDC機房)
node (同步過程setl)
canal / eromanga (同步數據來源)
大集群化部署
1個manager集群?+?多個IDC機房node組成
1.?基于Canal,獲取數據庫增量日志數據。?
2.?典型管理系統架構,manager(web管理)+node(工作節點)
????a. manager運行時推送同步配置到node節點
????b. node節點將同步狀態反饋到manager上
3.?基于zookeeper,解決分布式狀態調度的,允許多node節點之間協同工作.
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進行配置信息的存儲,所以需要預先安裝mysql,并初始化otter manager的系統表結構
????a.?安裝mysql,這里不展開,網上一搜一大把
????b.?初始化otter manager系統表:
? 2.?整個otter架構依賴了zookeeper進行多節點調度,所以需要預先安裝zookeeper
????a. manager需要在otter.properties中指定一個就近的zookeeper集群機器
## otter manager domain name #修改為正確訪問ip,生成URL使用
? ? otter.domainName = 127.0.0.1????
? ? ## otter manager http port?otter.port = 8082 #按需調整默認8080
? ? ## jetty web config xml otter.jetty = jetty.xml
otter manager database config?,修改為正確數據庫信息
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進行管理,所以需要預先安裝otter manager
2.?完成manager安裝后,需要在manager頁面為node定義配置信息,并生一個唯一id.
??a. nid配置?(將環境準備中添加機器后獲取到的序號,保存到conf目錄下的nid文件,比如我添加的機器對應序號為6)
3.node節點進行跨機房傳輸時,會使用到HTTP多線程傳輸技術,目前主要依賴了aria2c做為其下載客戶端,后續會推出java版本.
????a. aria2?官方首頁:?http://aria2.sourceforge.net/
????b.?下載頁面:?http://sourceforge.net/projects/aria2/files/stable/
cancal安裝
主要用途是基于?MySQL?數據庫增量日志解析,提供增量數據訂閱和消費。
canal?作為MySQL binlog?增量獲取和解析工具,可將變更記錄投遞到MQ?系統中,比如Kafka/RocketMQ。也可以直接把數據發送到es hbase等
具體參考:
https://github.com/alibaba/canal
我們配置一個同步任務:
操作步驟:?1. ?添加數據庫????
a.?源庫?jdbc:mysql://localhost:3306 ????
b.?目標庫?jdbc:mysql://localhost:3370
?
?2. ?添加channel ???
說明:
a.?同步一致性
基于數據庫反查?(簡單點說,就是強制反查數據庫,從binlog中拿到pk,直接反查對應數據庫記錄進行同步,回退到幾天前binlog進行消費時避免同步老版本的數據時可采用)
基于當前日志變更?(基于binlog/redolog解析出來的字段變更值進行同步,不做數據庫反查,推薦使用)
b.?同步模式
行模式?(兼容otter3的處理方案,改變記錄中的任何一個字段,觸發整行記錄的數據同步,在目標庫執行merge sql)
列模式?(基于log中的具體變更字段,按需同步)
c.?特殊組合:(同樣支持)
基于數據庫反查+列模式
基于當前日志變更+行模式
?3. ?添加同步表信息?????
? ? ? ? ? a.?源數據表?demo.t_yq ???
? ? ? ? ? b.?目標數據表?demo_3370.t_yq
?4.?添加pipeline ???
? ? ? ?a.?選擇node節點?????
? ? ? ?b.?選擇canal
5.?添加同步映射規則????
? ? ? a.?定義源表和目標表的同步關系
?
?6.?啟動
?
7.?測試數據
源端插入數據
?
簡單的介紹了otter使用,下期我們在看下雙向同步以及canal同步數據到es
總結
以上是生活随笔為你收集整理的mysql 定时同步数据_MySQL数据同步之otter的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 下图为双总线结构机器的数据通路_PDPS
- 下一篇: mysql 随机分组_MySql分组后随