環境如下:
mysql 5.6.49
rabbitmq 3.7.14
Erlang 21.3
canal 安裝和啟動 見上篇文章 canal快速安裝啟動
但是這個拿到的數據,不知道怎么處理 看看如果丟到mq,我從mq取到的數據格式
{
"data":[
{
"id":"23",
"name":"sdfs",
"age":"10",
"sex":"1",
"created_at":"2010-09-09 11:11:11",
"updated_at":"2020-08-14 23:57:34"
}
],
"database":"test",
"es":1597420654000,
"id":1,
"isDdl":false,
"mysqlType":{
"id":"int(11)",
"name":"varchar(255)",
"age":"int(11)",
"sex":"int(255)",
"created_at":"timestamp",
"updated_at":"timestamp"
},
"old":[
{
"name":"er",
"updated_at":"2020-07-25 09:27:35"
}
],
"pkNames":[
"id"
],
"sql":"",
"sqlType":{
"id":4,
"name":12,
"age":4,
"sex":4,
"created_at":93,
"updated_at":93
},
"table":"user",
"ts":1597422036430,
"type":"UPDATE"
}
這個就很好用了,直接拿data字段進行更新就行了
type 會有 UPDATE DELETE INSERT
canal 官方文檔 說是隊列只支持 kafka 和 rocketmq
但是現在的版本已經支持 rabbitmq了
vim conf/canal.properties
canal.mq.servers = 192.168.33.60 canal.mq.vhost=/ canal.mq.exchange=exchange_user_sync canal.mq.username=admin canal.mq.password=admin canal.serverMode = rabbitmq
vim conf/example/instance.properties
canal.instance.master.address=192.168.33.60:3306 改為我的數據庫ip # username/password 默認就是這樣的,按照官方的例子授權 都可以不用改了,如果自己授權其他用戶改動 canal.instance.dbUsername=canal canal.instance.dbPassword=canal canal.instance.connectionCharset = UTF-8 # enable druid Decrypt database password canal.instance.enableDruid=false canal.mq.topic=example mq路由 到時候 交換機和隊列綁定要設置route為 example

