【hbz分享】Canal整合Kakfa從0搭建到監聽多個mysql server
Canal會把自己偽裝成從庫和mysql做主從同步,Mysql需要開啟binlog日志,Canal會監聽mysql發生的變化,并把發生變化的型別(INSERT, UPDATE, DELETE),以及對應表名,與變化后得那條資料輸入到Kafka中,下面從0開始搭建canal環境,跟著一步一步的走,最終就可以實作監聽多個Mysql實體,
第一步:下載Canal
下載地址: https://github.com/alibaba/canal/releases

下載后解壓的檔案夾目錄如下圖所示

第二步:修改組態檔
進入config檔案夾,并打開canal.properties,大部分不用動,需要改如下圖這幾個地方即可,



進入example,打開instance.properties組態檔,把下面這段全量替換掉原內容(注意備份一份原內容)
## mysql serverId , v1.0.26+ will autoGen
## v1.0.26版本后會自動生成slaveId,所以可以不用配置
# canal.instance.mysql.slaveId=0
# 資料庫地址
canal.instance.master.address=127.0.0.1:3306
# binlog日志名稱
canal.instance.master.journal.name=mysql-bin.000008
# mysql主庫鏈接時起始的binlog偏移量
canal.instance.master.position=3431
# mysql主庫鏈接時起始的binlog的時間戳
canal.instance.master.timestamp=
canal.instance.master.gtid=
# username/password
# 在MySQL服務器授權的賬號密碼
canal.instance.dbUsername=canal
canal.instance.dbPassword=canal
# 字符集
canal.instance.connectionCharset = UTF-8
# enable druid Decrypt database password
canal.instance.enableDruid=false
# table regex .*\\..*表示監聽所有表 也可以寫具體的表名,用,隔開
# canal.instance.filter.regex=.*\\..*
# canal-test3\.order.* 匹配canal-test3庫下,以order開頭的表 \是轉義字符
# canal-test3.order0 匹配canal-test3庫下的order0表
# canal-test3.* 匹配canal-test3庫下的所有表
canal.instance.filter.regex=canal.*
# mysql 資料決議表的黑名單,多個表用,隔開
canal.instance.filter.black.regex=
canal.mq.topic=canal-topic
# 磁區個數
canal.mq.partitionsNum=1
# 發送到哪個磁區的規則
#.*\\..*:id正則匹配,指定所有正則匹配的表對應的hash欄位為id
# .*\\..*:$pk$ 正則匹配,指定所有正則匹配的表對應的hash欄位為表主鍵(自動查找)
canal.mq.partitionHash=.*\\..*:id

第三步:開啟Mysql的binlog檔案
-
創建用戶,并配置所有ip可訪問
CREATE USER ‘canal’@’%’ IDENTIFIED WITH mysql_native_password BY ‘canal’; -
賦予該用戶權限,ALL=所有權限
GRANT ALL PRIVILEGES ON . TO ‘canal’@’%’ -
進入my.cnf檔案,(docker部署的mysql進入容器后,cd etc/mysql 即可到達my,cnf路徑下,然后vim my.cnf即可)
在my.cnf的[mysqld]下添加
log-bin = mysql-bin
binlog-format = ROW
server_id = 1
添加后的樣子

4. 然后重啟mysql容器即可
至此,canal監聽單個mysql server完畢,
第四步:啟動canal
window啟動:

linux啟動:
把整個下載下來的canal.deployer-1.1.5放到linux目錄,然后進入到bin目錄下
輸入 【./startup.sh】

第五步: 效果演示
- 啟動canal

- 啟動kafka消費者

- 修改被監聽的mysql下的某條記錄

- 看一下kafka消費者的變化

注意:修改完組態檔,要把example檔案夾下的meta.dat洗掉
第六步:如何配置多個實體,監聽多個mysql server
- 進入conf檔案夾,把example多復制幾個,改成不同的名

- 進入到canal.properties組態檔中

每個example配置各自的mysql和kafka的topic即可,當然也可以使用同一個mysql server 和 kafka, 這個看個人
第七步:springboot整合canal
下面這個博主寫的不錯,可以看下如何通過springboot整合
轉載:https://blog.csdn.net/yehongzhi1994/article/details/107880162.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/403922.html
標籤:其他
上一篇:云計算相關知識點
