首先用yum install docker在Linux搭建Docker
1.然后设置子网
docker network create --subnet=192.168.0.0/16 canalNetWork
子网作用:创建网络时使用--subnet 选项。 如果未指定--subnet 则Docker daemon会自动为网络选择并分配子网,这可能会导致与您基础结构中的另一个子网(该子网不受--subnet 管理)重叠。 当容器连接到该网络时,这种重叠可能导致连接问题或故障。
2.然后创建容器
docker run -itd --name canal-server --net canalNetWork --ip 192.168.XX.XX -p 11111:11111 canal/canal-server
1跟2执行后,创建的Canal容器连接宿主机的MYSQL会连接失败,所以改成下面这句创建
docker run -itd --name canal-server -p 11111:11111 canal/canal-server
查看Mysql的Bin_Log有没有打开以及模式
show variables like 'log_bin';#On是打开
show global variables like "binlog_format";#看到结果MIXED是混合
set global binlog_format='ROW';#设置为ROW模式
在Mysql创建Canal连数据库的帐号,报
Column count of mysql.useris wrong. Expected 43, found 42. Created with MySQL 50552, nowrunning 50636. Please use mysql_upgrade to fix thiserror.
这个是因为Mysql版本兼容的问题,执行以下命令更新即可
cd /usr/local/mysql/bin
./mysql_upgrade -uroot -pxxxxxx
创建Mysql帐号:
CREATE USER canal IDENTIFIED BY 'canal';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
进入Canal-server容器
docker exec -it canal-server /bin/bash
在容器内,Canal的目录放在/home/admin/canal-server
编辑/home/admin/canal-server/conf/canal.properties 配置同步模式跟rocketmq的地址
cat -n canal.properties |grep "canal.serverMode" 获取这个配置所在行
然后用vi canal.properties +行号,就能直接跳到所在行
两个配置 canal.serverMode 和rocketmq.namesrv.addr
再编辑/home/admin/canal-server/conf/example/instance.properties
配置Mysql数据源及表对应topic的映射关系
canal.instance.master.address=宿主机IP:3306
canal.instance.filter.regex配置要监听的表
canal.mq.dynamicTopic配置表跟topic的映射关系
本文介绍了如何在Linux上使用yum安装Docker,并创建自定义子网。接着,详细演示了如何创建并运行Canal服务器容器,以及配置MySQL的binlog开启和模式设置。在过程中遇到了因MySQL版本不兼容导致的错误,通过执行升级命令解决了问题。最后,创建了用于Canal连接的MySQL账户,并配置了Canal的相关参数,确保了数据同步和RocketMQ的连接。
755

被折叠的 条评论
为什么被折叠?



