【学习Docker(八)】Docker Canal的安装与卸载
创始人
2024-05-31 23:23:29
0

座右铭:《坚持有效输出,创造价值无限》

最近想了解下canal,自行搭建并完成数据同步。经过了几天的踩坑之旅,今天终于搭建成功了。

环境:canalv1.1.5、MySQL8.0、JDK1.8

安装MySQL

创建存放目录

mkdir /docker-local
mkdir /docker-local/mysql8

之前安装过MySQL,但是没有配置conf,使用canal需要指定一个serveid

docker run --privileged=true -it \-p 3306:3306 --name mysql \-e MYSQL_ROOT_PASSWORD=123456 \-v /docker-local/mysql8/conf:/etc/mysql/conf.d \-v /docker-local/mysql8/data:/var/lib/mysql \-d mysql:8.0.26

编辑my.cnf

cd /docker-local/mysql8/conf
vim my.cnf
[mysqld]
server-id=1

保存,重启mysql

docker restart mysql

创建用户

创建用户,方便canal使用

CREATE USER canal IDENTIFIED BY 'canal';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
FLUSH PRIVILEGES;

注意:安装canal还需要开启binlog,因为mysql8.0默认是开启的,并且是row模式,所以我这里没有其他操作。

安装canal

创建存放目录

mkdir docker-local/canal
cd /docker-local/canal/

拉取镜像

docker pull canal/canal-server:v1.1.5

运行

docker run --name canal -d canal/canal-server:v1.1.5

复制容器中的配置文件到本地

docker cp canal:/home/admin/canal-server/conf/canal.properties /docker-local/canal
docker cp canal:/home/admin/canal-server/conf/example/instance.properties /docker-local/canal

修改instance.properties

vim instance.properties

在这里插入图片描述

停止

docker stop canal && docker rm canal

重新运行

docker run --name canal -p 11111:11111 \
-v /docker-local/canal/instance.properties:/home/admin/canal-server/conf/example/instance.properties \
-v /docker-local/canal/canal.properties:/home/admin/canal-server/conf/canal.properties \
-v /docker-local/canal/log/:/home/admin/canal-server/logs/ \
-d canal/canal-server:v1.1.5

查看启动日志

cat log/canal/canal.log

在这里插入图片描述

cat /docker-local/canal/log/example/example.log

遇到的问题

connect /192.168.64.139:3306 failure

Caused by: java.io.IOException: connect /192.168.64.139:3306 failure

发现canal连不上mysql

修改firewalld配置文件

vim /etc/firewalld/zones/public.xml

增加3306端口


在这里插入图片描述

重启firewalld

systemctl restart firewalld

再次查看日志

在这里插入图片描述

部署成功

问题原因

在centos7上部署docker容器,其网络模式采用的是bridger模式。

启动docker时,docker进程会创建一个名为docker0的虚拟网桥,用于宿主机与容器之间的通信。当启动一个docker容器时,docker容器将会附加到虚拟网桥上,容器内的报文通过docker0向外转发。

如果docker容器访问宿主机,那么docker0网桥将报文直接转发到本机,报文的源地址是docker0网段的地址。而如果docker容器访问宿主机以外的机器,docker的SNAT网桥会将报文的源地址转换为宿主机的地址,通过宿主机的网卡向外发送。

当docker容器访问宿主机时,如果宿主机服务端口会被防火墙拦截,无法连通宿主机,出现No route to host的错误。

而访问宿主机所在局域网内的其他机器,由于报文的源地址是宿主机ip,因此,不会被目的机器防火墙拦截,所以可以访问。

也可以开放对应的端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

卸载canal

docker stop canal && docker rm canal
rm -rf /docker-local/canal

这里,我一直认为我本地可以连接到mysql,就不用开启端口了。
至此,就搭建完成了。

相关内容

热门资讯

我来教大家“掼蛋大师辅助器ap... 亲,掼蛋大师这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,掼蛋大师的开挂软件,名...
我来教大家“开心联盟辅助器ap... 您好,开心联盟这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中打...
我来教大家“友愉棋牌辅助器ap... 您好,友愉棋牌这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中打...
我来教大家“全盛棋牌辅助器ap... 亲,全盛棋牌这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,全盛棋牌的开挂软件,名...
我来教大家“情怀三三麻将辅助器... 我来教大家“情怀三三麻将辅助器app官方下载最新版本更新”详细分享开挂一、情怀三三麻将AI软件牌型概...
我来教大家“无锡好运麻将辅助器... 亲,无锡好运麻将这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,无锡好运麻将的开挂...
我来教大家“推筒子辅助器app... 您好,推筒子这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中打牌...
我来教大家“比奇堡辅助器app... 我来教大家“比奇堡辅助器app官方下载最新版本更新”详细分享开挂1、让任何用户在无需AI插件第三方神...
我来教大家“新兴茶苑辅助器ap... 我来教大家“新兴茶苑辅助器app官方下载最新版本更新”详细分享开挂1、让任何用户在无需AI插件第三方...
我来教大家“欢乐互动辅助器ap... 我来教大家“欢乐互动辅助器app官方下载最新版本更新”详细分享开挂1、让任何用户在无需AI插件第三方...
我来教大家“东方互娱辅助器ap... 亲,东方互娱这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,东方互娱的开挂软件,名...
我来教大家“天天乐清麻将辅助器... 我来教大家“天天乐清麻将辅助器app官方下载最新版本更新”详细分享开挂一、天天乐清麻将AI软件牌型概...
我来教大家“唐三彩辅助器app... 我来教大家“唐三彩辅助器app官方下载最新版本更新”详细分享开挂一、唐三彩AI软件牌型概率发牌机制”...
我来教大家“Y0辅助器app官... 我来教大家“Y0辅助器app官方下载最新版本更新”详细分享开挂一、Y0AI软件牌型概率发牌机制”必胜...
我来教大家“天天互娱辅助器ap... 亲,天天互娱这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,天天互娱的开挂软件,名...
我来教大家“悟空竞技麻将辅助器... 亲,悟空竞技麻将这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,悟空竞技麻将的开挂...
我来教大家“情怀开化麻将辅助器... 我来教大家“情怀开化麻将辅助器app官方下载最新版本更新”详细分享开挂一、情怀开化麻将AI软件牌型概...
我来教大家“龙炎互娱辅助器ap... 我来教大家“龙炎互娱辅助器app官方下载最新版本更新”详细分享开挂一、龙炎互娱AI软件牌型概率发牌机...
我来教大家“闲逸碰胡辅助器ap... 亲,闲逸碰胡这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,闲逸碰胡的开挂软件,名...
我来教大家“友聚麻将辅助器ap... 我来教大家“友聚麻将辅助器app官方下载最新版本更新”详细分享开挂一、友聚麻将AI软件牌型概率发牌机...