最近项目里预研这方面,自己也搜了下网上的资料,有些资料写的不是很清楚,自己摸索成功后,特地整理了一下部署文档,以免大家多走弯路
mysql+canal+kafka均采用单机部署,版本号如下
配置步骤如下:
1、mysql开启binlog日志
修改配置文件/etc/my.cnf
#添加的部分,server-id随便写
server-id = 12345
log-bin = mysql-bin
binlog_format = ROW
#必须为FULL,MySQL-5.7后才有该参数
binlog_row_image = FULL
expire_logs_days = 10
修改保存后,重启mysql,命令为service mysqld restart
2、zookeeper启动和配置
这里不多说,注意的是要复制配置文件zoo_sample.cfg到zoo.cfg,在bin目录下
#启动
zkServer.sh start
#查看状态
zkServer.sh status
#停止
zkServer.sh stop
**
3、kafka配置
**
解压tar文件,在解压后的目录下,
vim config/server.properties
#改为当前kafka地址
listeners=PLAINTEXT://192.168.62.32:9092
advertised.listeners=PLAINTEXT://192.168.62.32:9092
#改为zookeeper实际地址
zookeeper.connect=192.168.62.24:2181
保存,启动
nohup bin/kafka-server-start.sh config/server.properties &
创建用于监控mysql数据变化的主题,主题名为canal-test
./bin/kafka-run-class.sh kafka.admin.TopicCommand --create --zookeeper 192.168.62.24:2181 --replication-factor 1 --partitions 1 --topic canal-test
4、cannal配置
解压后,有conf和bin等文件夹
在加压后的目录下,
(1) vim conf/canal.properties
#tcp, kafka, RocketMQ,选择接收数据变化的插件类型
canal.serverMode = kafka
#修改为kafka地址
canal.mq.servers = 192.168.62.32:9092
去掉canal.instance.parser.parallelThreadSize = 16这个配置项的注释,也就是启用此配置项,和实例解析器的线程数相关,不配置会表现为阻塞或者不进行解析
(2) vim conf/example/instance.properties
#mysql地址
canal.instance.master.address=192.168.62.32:3306
#mysql登录用户名和密码
canal.instance.dbUsername=root
canal.instance.dbPassword=123456
#监控变化的表,如果为
canal.instance.filter.regex=test.role
#监控的kafka主题名
canal.mq.topic=canal-test
保存后,启动canal,
在bin目录下
#启动
./startup.sh
#停止
./stop.sh
对表test.role的数据进行增删改操作,
同时,在kafka目录下,执行查看主题消费的命令
./bin/kafka-console-consumer.sh --bootstrap-server 192.168.62.32:9092 --from-beginning --topic canal-test
可查看到变化的数据,包括增删改三种情况,type表示数据变化的类型,table表示监控的表名