docker安装canal-admin/canal 及使用(监控mysql推送至kafka)

官方文档地址: https://github.com/alibaba/canal/wiki

工作原理
canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送 dump 协议
MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )
canal 解析 binary log 对象(原始为 byte 流)

实现场景: canal-admin管理canal,canal读取mysql的增量bin-log数据,发送至kafka,然后服务端消费kafka队列,实现数据监控功能

1.canal-admin 安装

canal-admin 官方参考文档 : https://github.com/alibaba/canal/wiki/Canal-Admin-Docker

# 下载脚本
wget https://raw.githubusercontent.com/alibaba/canal/master/docker/run_admin.sh 
 
# 以8089端口启动canal-admin
sh  run_admin.sh -e server.port=8089 \
         -e canal.adminUser=admin \
         -e canal.adminPasswd=admin

# 指定外部的mysql作为admin的库
sh  run_admin.sh -e server.port=8089 \
         -e spring.datasource.address=xxx \
         -e spring.datasource.database=xx \
         -e spring.datasource.username=xx 
         -e spring.datasource.password=xx
  • run_admin.sh 中封装的是 docker run 的命令
以下截取run_admin.sh
cmd="docker run -d -it -h $LOCALHOST $CONFIG --name=canal-admin $VOLUMNS $NET_MODE $PORTS $MEMORY canal/canal-admin"
echo $cmd
eval $cmd
  • 实际输出的docker命令
root@picbook-preprod:/opt/kafka/canal# sh  run_admin.sh -e server.port=8089 \
>          -e canal.adminUser=admin \
>          -e canal.adminPasswd=admin
docker run -d -it -h 0 -e server.port=8089 -e canal.adminUser=admin -e canal.adminPasswd=admin --name=canal-admin --net=host -m 1024m canal/canal-admin
  • 如果不想使用host的网络模式的话,可以修改sh文件在其中添加端口映射,或者直接运行以下docker run命令
docker run -d -it -h 0 \
-e server.port=8089 \
-e canal.adminUser=admin \
-e canal.adminPasswd=admin \
--name=canal-admin \
-p 8089:8089 \
-m 1024m canal/canal-admin
  • 1.访问 canal-admin, ip:8089
  • 2.在-集群管理-配置主配置文件


    配置zk地址
主配置1
主配置2
主配置3
  • 2.在-instance管理-配置


    instance管理

2.canal-server 安装

官方参考文档: canal-server: https://github.com/alibaba/canal/wiki/Docker-QuickStart

# 下载脚本
wget https://raw.githubusercontent.com/alibaba/canal/master/docker/run.sh

root@picbook-preprod:/opt/kafka/canal# sh run.sh -e canal.admin.manager=47.111.29.234:8089 \
> -e canal.admin.port=11110 \
> -e canal.admin.port=11110 \
> -e canal.admin.user=admin \
> -e canal.admin.passwd=4ACFE3202A5FF5CF467898FC58AAB1D615029441 \
> -e canal.admin.register.cluster=online
docker run -d -it -h 0 -e canal.admin.manager=47.111.29.234:8089 -e canal.admin.port=11110 -e canal.admin.port=11110 -e canal.admin.user=admin -e canal.admin.passwd=4ACFE3202A5FF5CF467898FC58AAB1D615029441 -e canal.admin.register.cluster=online --name=canal-server --net=host -m 4096m canal/canal-server
  • 执行sh脚本默认使用host网络模式,如果不想使用docker host网络模式,修改sh文件,或者直接使用以下docker run命令
# 其中 4ACFE3202A5FF5CF467898FC58AAB1D615029441 是字符 'admin' 在mysql下password函数加密后的字符串结果

docker run -d -it -h 0 -e canal.admin.manager={canal-admin的ip地址}:8089 \
    -e canal.admin.port=11110 \
    -e canal.admin.port=11110 \
    -e canal.admin.user=admin \
    -e canal.admin.passwd=4ACFE3202A5FF5CF467898FC58AAB1D615029441 \
    -e canal.admin.register.cluster=online \
    --name=canal-server \
    -p 11110:11110 \
    -p 11111:11111 \
    -p 11112:11112 \
    -p 9100:9100 \
    -m 4096m canal/canal-server
  • 运行成功后,canal将自动注册到canal-admin中,在canal-admin web页面中的
    主页/Canal Server/Server 管理 能看到新注册的server

3.测试

测试 canal.serverMode=tcp模式下,canal解析bin-log
执行 https://github.com/alibaba/canal/wiki/ClientExample

测试 canal.serverMode=kafka 模式下,canal解析bin-log->kafka->java服务端消费者消费
执行 https://github.com/sunzsh/canaldemo.git

参考:
https://github.com/alibaba/canal/wiki
https://blog.csdn.net/daziyuanazhen/article/details/106098887

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,542评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,822评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,912评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,449评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,500评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,370评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,193评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,074评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,505评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,722评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,841评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,569评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,168评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,783评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,918评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,962评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,781评论 2 354

推荐阅读更多精彩内容