2.3.1 canal 架构
![](https://i-blog.csdnimg.cn/blog_migrate/e05c69a7847264dcc6ae05081ef85a33.png)
2.3.2 canal 的下载和安装
https://github.com/alibaba/canal/releases
我们直接/2.资料/02-工具下的
canal.deployer-1.1.4.tar.gz
拷贝到
/opt/sortware
目录
下,然后解压到
/opt/module/canal
包下
注意:
canal
解压后是散的,我们在指定解压目录的时候需要将
canal
指定上
2.4 canal 单机版
2.4.1 修改 conf/canal.properties 的配置
![](https://i-blog.csdnimg.cn/blog_migrate/4a87e1a38f0bb5bf882c1db5716b2564.png)
➢
这个文件是 canal 的基本通用配置,canal 端口号默认就是 11111
➢
修改 canal 的输出 model,默认 tcp,改为输出到 kafka
![](https://i-blog.csdnimg.cn/blog_migrate/71b29b4d070259a2e1b32570e4b44493.png)
tcp 就是输出到 canal 客户端,通过编写 Java 代码处理
➢
修改 Kafka 集群的地址
![](https://i-blog.csdnimg.cn/blog_migrate/d9cf069f4c46c06c3aa5c68d6a1f3a53.png)
➢
如果创建多个实例
通过前面 canal 架构,我们可以知道,一个 canal 服务中可以有多个 instance,conf/
下的每一个 example 即是一个实例,每个实例下面都有独立的配置文件。默认只有一个实
例 example,如果需要多个实例处理不同的 MySQL 数据的话,直接拷贝出多个 example,
并对其重新命名,命名和配置文件中指定的名称一致,然后修改 canal.properties 中的
canal.destinations=实例 1,实例 2,实例 3。
![](https://i-blog.csdnimg.cn/blog_migrate/c9f14577f57ef0a134dde3a3ec518c5f.png)
2.4.2 修改 instance.properties
我们这里只读取一个 MySQL 数据,所以只有一个实例,这个实例的配置文件在
conf/example 目录下
![](https://i-blog.csdnimg.cn/blog_migrate/ca6cae893234e107b0ad25b55b6bcf17.png)
➢
配置 MySQL 服务器地址
![](https://i-blog.csdnimg.cn/blog_migrate/900cb2e5fe9472418405523cda65deaa.png)
➢
配置连接 MySQL 的用户名和密码,默认就是我们前面授权的 canal
➢
修改输出到 Kafka 的主题以及分区数
注意:默认还是输出到指定 Kafka 主题的一个 kafka 分区,因为多个分区并行可能会打乱
binlog 的顺序
如果要提高并行度,首先设置 kafka 的分区数>1,然后设置 canal.mq.partitionHash 属性
2.4.3 单机 canal 测试
![](https://i-blog.csdnimg.cn/blog_migrate/8153e89570cee265dc8a114b48fc34d1.png)
➢ 启动 Kafka 消费客户端测试,查看消费情况
![](https://i-blog.csdnimg.cn/blog_migrate/fd1bd4188f8bf79e5368add451b82b7a.png)
➢ 运行/opt/module/rt_dblog 中生成模拟数据
2.5 canal 高可用(了解)
这种
zookeeper
为观察者监控的模式,
只能实现高可用,而不是负载均衡
,即同一时点只
有一个
canal-server
节点能够监控某个数据源,只要这个节点能够正常工作,那么其他监控这
个数据源的
canal-server
只能做
stand-by
,直到工作节点停掉,其他
canal-server
节点才
能抢占。因为有一个
stand-by
也要占用资源,同时
canal
传输数据宕机的情况也比较少,所
以好多企业是不配置
canal
的高可用的。
2.5.1 停止单机 canal 进程
![](https://i-blog.csdnimg.cn/blog_migrate/0a3f46e44b0f9720479e32e824c89849.png)
2.5.2 在 hadoop202 上修改 canal.properties
➢
配置 zookeeper
![](https://i-blog.csdnimg.cn/blog_migrate/756b6bc09612408a33c8947588c3263f.png)
➢
避免发送重复数据(否则在切换 active 的时候会重复发送数据)
![](https://i-blog.csdnimg.cn/blog_migrate/8a458f515ac454b0179dc092703c1683.png)
2.5.3 把 canal 目录分发给其他虚拟机
[atguigu@hadoop202 module]$ xsync canal/
2.5.4 测试
➢
先在 hadoop202 启动 canal,再在 hadoop203 上启动 canal
[atguigu@hadoop202 canal]$ bin/startup.sh
➢
启动 kafka 消费客户端
[atguigu@hadoop202 kafka]$ bin/kafka-console-consumer.sh --bootstrap-server
hadoop202:9092 --topic gmall2020_db_c
➢
在数据库 gmall2020 随便一张表中修改一条数据,查看效果
➢
挂掉 202 再次修改数据,查看效果