我是靠谱客的博主 大胆寒风,最近开发中收集的这篇文章主要介绍canal mysql 实例_docker中搭建canal监听mysql例子,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

canal是众所周知的阿里监听解析mysql的binlog的工具,由于在本机使用时不方便直接运行,所以使用docker来部署mysql+canal,也可以加上canal-admin,下面直接展示:

部署mysql

本来mysql在容器启动时可以添加参数配置log-bin和binlog-format但无法配置server_id导致容器无法启动,所以使用默认配置启动容器再进入容器修改配置方式

这里可以不映射相关路径,根据需求决定

//创建一个容器内网络

docker network create my_network

//构建mysql

docker run --name mysql-es --net my_network -v /youdir:/var/lib/mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.32

然后需要进入docker内部修改配置文件,之所以没有使用映射配置文件路径,因为配置映射后可能导致默认配置文件丢失情况,正式使用时也可以重新打包mysql,不用每次都进去修改。

//进入docker中

docker exec -it mysql-es /bin/bash

//修改相关配置

cd /etc/mysql/mysql.conf.d/

echo 'log-bin=mysqlbin'>> mysqld.cnf

echo 'server_id=1' >> mysqld.cnf

echo 'binlog-format=ROW'>> mysqld.cnf

exit

//重启该容器

docker restart mysql-es

在任意客户端连接该mysql执行

CREATE USER canal IDENTIFIED BY 'canal';

GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';

-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;

FLUSH PRIVILEGES;

启动canal

这里分为使用canal-admin和不适用两种部署方式

1.使用canal-admin

先启动canal-admin,这里没有让canal-admin再接入mysql所以未对其加入mysql参数配置docker run --name mycanal-admin --net my_network --link mycanal:mycanal -e server.port=8089 -e canal.adminUser=admin -e canal.adminPasswd=admin --link mysql-es:db -p 8089:8089 -d canal/canal-admin:v1.1.4

再启动canaldocker run --name mycanal --net my_network -e canal.auto.scan=false -e canal.destinations=test -e canal.instance.master.address=db:3306 -e canal.instance.dbUsername=canal -e canal.instance.dbPassword=canal -e canal.instance.connectionCharset=UTF-8 -e canal.instance.tsdb.enable=true -e canal.instance.gtidon=false -e canal.admin.manager=mycanal-admin:8089 -e canal.admin.port=11110 -e canal.admin.user=admin -e canal.admin.passwd=4ACFE3202A5FF5CF467898FC58AAB1D615029441 -p 11112:11112 -p 11111:11111 -p 11110:11110 --link mysql-es:db -d canal/canal-server:v1.1.4

这里canal.admin.passwd参数,由于canal.admin设置密码是admin,所有要使用mysql执行select password(‘admin’)查看对应的加密后的值填入

之所以先启动admin再启动canal-server,因为如果canal-server配置中有admin相关参数,而在启动时无法连接到admin会导致启动失败。

至此浏览器登录localhost:8089,用户名:admin,密码:123456

可以看到正常显示

另外在canal-server启动时已经加入canal.destinations该参数相关配置,所以若是启动正常,可以直接在canal-admin管理界面看到一个正常启动的instance,若是没有看到,有可能提示instance配置文件不存在,此时直接在管理界面,手动添加一个instance,名称为创建容器时canal.destinations的参数赋值的名称即可

2.不使用canal-admin方式

因为canal-admin占用内存不小,在同时开启多个容器,比如es+mysql+canal+kibana+canal-admin,在本机往往撑不住,此时就放弃canal-admin,直接启动canal:docker run --name sicanal --net my_network -e canal.auto.scan=false -e canal.destinations=test -e canal.instance.master.address=db:3306 -e canal.instance.dbUsername=canal -e canal.instance.dbPassword=canal -e canal.instance.connectionCharset=UTF-8 -e canal.instance.tsdb.enable=true -e canal.instance.gtidon=false -p 11112:11112 -p 11111:11111 -p 11110:11110 --link mysql-es:db -d canal/canal-server:v1.1.4

至于相关日志和相关参数调整可以进入容器内部自行调整和查看。

到此已经完成完成搭建部分的基础逻辑,后续客户端执行调用可参照官方文档根据自身语言进行后续编写

最后说下这只是本机测试和开发时可以用的一个实现方式,正式环境还要考虑容器内部文件存储映射,内存管理等等因素

本作品采用《CC 协议》,转载必须注明作者和本文链接

最后

以上就是大胆寒风为你收集整理的canal mysql 实例_docker中搭建canal监听mysql例子的全部内容,希望文章能够帮你解决canal mysql 实例_docker中搭建canal监听mysql例子所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部