交代下自身环境
电脑是macbookpro14,m1pro的芯片
mysql8.0+通过docker部署的
1.拉取镜像
docker pull canal/canal-server
2.启动镜像(第一次启动只为挂载文件)
docker run --name canal -d canal/canal-server
3.拷贝配置文件(我们将配置文件挂载到本地)
docker cp canal:/home/admin/canal-server/conf/canal.properties /Users/xxxx/docker/canal
docker cp canal:/home/admin/canal-server/conf/example/instance.properties /Users/xxxx/docker/canal
4.关闭删除容器
#关闭容器
docker stop canal
#移除容器
docker rm canal
5.更改配置,基本都是默认的(address属性尽量写成本机的内网ip,本人在部署的时候因为写的127.0.0.1导致canal连接mysql被拒绝,排查了很久)
#mysql地址
canal.instance.master.address=127.0.0.1:3306
#用户名
canal.instance.dbUsername=canal
#密码
canal.instance.dbPassword=canal
#编码方式
canal.instance.connectionCharset = UTF-8
6.重新启动canal服务
docker run --name canal -p 11111:11111 -d -v /Users/xxxx/docker/canal/canal/instance.properties:/home/admin/canal-server/conf/example/instance.properties -v /Users/xxxx/docker/canal/canal/canal.properties:/home/admin/canal-server/conf/canal.properties -v /Users/xxxx/docker/canal/canal/logs/:/home/admin/canal-server/logs/ canal/canal-server:v1.1.4
7.canal这边就基本部署完成了,更改mysql的配置即可,主要是在mysql的配置文件中添加一些配置开启二进制日志(为什么要开启二进制,自己百度一下吧这里不做教学只是记录一下自己部署的过程,踩了很多坑,按照我的一步一步部署肯定是没问题的)
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=66 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复
8.检查一下二机制日志是否开启成功
#查看二进制日志状态,返回 ON 表示 binlog 启动成功
show variables like 'log_bin';
#查看下输出的方式ROW代表行,这里我们就用ROW就好了不需要去深入了解大数据的东西作为一个java开发会用就好
show variables like 'binlog_format';
9.创建canal用户(尽量不要用root毕竟安全最重要吗,配置文件默认的是canal,这里对应创建一下就好了)
grant SELECT, REPLICATION SLAVE, REPLICATION CLIENT on *.* to 'canal'@'%' identified by "canal";
10.可以去java端测试了 ,我截了个图代码就不贴了有需要私聊或者评论看到会回复的