Canal:Canal
是阿里开源的一款基于Mysql数据库binlog的增量订阅和消费组件,通过它可以订阅数据库的binlog日志,然后进行一些数据消费,如数据镜像、数据异构、数据索引、缓存更新等。相对于消息队列,通过这种机制可以实现数据的有序化和一致性。
1. 首先docker拉去canal镜像,这里不加版本号,默认为latest
docker pull canal/canal-server
2. 查看镜像是否拉去成功
docker images
3. 拉取完成后,先启动下canal,主要是为了从里面copy出配置文件
#启动镜像
docker run --name canal -d canal/canal-server
#进入容器 查看配置文件路径
docker exec -it canal bash
#找到文件位置后 exit退出容器 将容器内部文件copy到外部 copy到/docker/canal/conf
docker cp canal:/home/admin/canal-server/conf/canal.properties /docker/canal/conf
docker cp canal:/home/admin/canal-server/conf/example/instance.properties /docker/canal/conf
4.文件copy完成后主要是修改instance这个文件。第一个红框是你需要监听数据库的地址和端口;第二个红框是你数据库的用户和密码,这个用户信息一定是要有全部权限的用户,非root用户;第三个是匹配数据表的规则,我这里默认为全部表。
![](https://img-blog.csdnimg.cn/604356a9eeb2493faaa79841e0aeff01.png)
![](https://img-blog.csdnimg.cn/2cbf1aaee42e4db089a5b64e331e9233.png)
修改完成后 ,将之前的canal容器关闭,重新起一个新的容器.
#关闭容器
docker stop canal
#移除容器
docker rm canal
#启动新的 这里-v是将外部的文件挂载到容器内部 这样就不用每次启动都要配置参数了
docker run --name canal -p 11111:11111 -d \
-v /docker/canal/conf/instance.properties:/home/admin/canal-server/conf/example/instance.properties \
-v /docker/canal/conf/canal.properties:/home/admin/canal-server/conf/canal.properties \
-v /docker/canal/log/:/home/admin/canal-server/logs/ \
canal/canal-server:v1.1.4