使用Canal同步mysql數(shù)據(jù)到es
一、簡介

Canal主要用途是基于 MySQL 數(shù)據(jù)庫增量日志解析,提供增量數(shù)據(jù)訂閱和消費。
當(dāng)前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x
二、工作原理
MySQL主備復(fù)制原理
MySQL master 將數(shù)據(jù)變更寫入二進(jìn)制日志( binary log, 其中記錄叫做二進(jìn)制日志事件binary log events,可以通過 show binlog events 進(jìn)行查看)
MySQL slave 將 master 的 binary log events 拷貝到它的中繼日志(relay log)
MySQL slave 重放 relay log 中事件,將數(shù)據(jù)變更反映它自己的數(shù)據(jù)
canal 工作原理
canal 模擬 MySQL slave 的交互協(xié)議,偽裝自己為 MySQL slave ,向 MySQL master 發(fā)送dump 協(xié)議
MySQL master 收到 dump 請求,開始推送 binary log 給 slave (即 canal )
canal 解析 binary log 對象(原始為 byte 流)
三、準(zhǔn)備安裝包
下載地址,我使用的是1.1.6版本
https://github.com/alibaba/canal/releases/tag/canal-1.1.6
國內(nèi)的話,可以在綠色聊天軟件搜索:程序員朱永勝 ?關(guān)注回復(fù)1006領(lǐng)取安裝包,不限速下載

deployer包:服務(wù)包
admin包:UI管理系統(tǒng),需要的話可以下載
adapter包:官方提供的客戶端,可以實現(xiàn)自動同步
四、啟動Canal服務(wù)
4.1 下載
最簡單的使用,我們只需要安裝deplyee包即可,其他的不需要
4.2 新增用戶并授權(quán)

4.3 配置文件修改
4.3.1 canal.properties

這個配置文件默認(rèn)即可,無需修改配置

修改mysql地址,要確保已經(jīng)配置了賬號密碼并授權(quán)

4.4 啟動


4.5 確認(rèn)啟動成功


五、安裝依賴
<dependencies>
? ?<dependency>
? ? ? ?<groupId>com.alibaba.otter</groupId>
? ? ? ?<artifactId>canal.client</artifactId>
? ? ? ?<version>1.1.4</version>
? ?</dependency>
</dependencies>
六、運行效果
由于代碼比較長,我放到最后了,這里先說下效果。
代碼啟動后,我們只需要變更任意表里面的數(shù)據(jù)即可看到控制臺打印內(nèi)容。
數(shù)據(jù)很清晰,有具體的數(shù)據(jù)庫,表,操作類型,以及字段及修改的值。
到這里基本就算結(jié)束了,后續(xù)就是根據(jù)業(yè)務(wù)自己推送到ES中。當(dāng)然,也可以使用官方的adapter推送到ES中。

七、編寫客戶端代碼
測試代碼官網(wǎng)地址:https://github.com/alibaba/canal/blob/master/example/src/main/java/com/alibaba/otter/canal/example/AbstractCanalClientTest.java
國內(nèi)的話,可以在綠色聊天軟件搜索:程序員朱永勝 ?關(guān)注回復(fù)1007領(lǐng)取代碼,不限速下載
6.1 BaseCanalClientTest

6.2 SimpleCanalClientTest

6.3 AbstractCanalClientTest
