https://github.com/alibaba/canal
第一步:首先开启mysql数据库的binglog权限,怎么开呢,找到my.cnf,里面加入下面的语句
[mysqld]
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复
创建一个用户名和密码,确保是最大权限就行,后面用于配置文件中 填写用户名和密码,监控用的。
第二步:在服务器上下载canal-deploy 包
下载什么版本自己选择
wget https://github.com/alibaba/canal/releases/download/canal-1.0.17/canal.deployer-1.0.17.tar.gz
解压后,配置2个文件
canal.properties : 这个文件定义全局性质,全局配置
里面需要修改如下内容
# tcp, kafka, RocketMQ 定义数据输出sink方式,此处我们选择kafka
canal.serverMode = kafka
##################################################
######### MQ #############
##################################################
canal.mq.servers= 127.0.0.1:9092 //此处是kafka的地址
instance.properties 单个数据源的配置
canal.instance.mysql.slaveId=12345 不要写1就行,多个的化不要重复,随便写
# position info
canal.instance.master.address=127.0.0.1:3306 要监控的实例IP地址和端口
# username/password 要监控实例的用户名和密码
canal.instance.dbUsername=root
canal.instance.dbPassword=123456
# table regex 选填:默认是这个实例下所有的库和所有的表,也可以根据需要进行白名单和黑名单,这样就能分很多哦topic出来。
canal.instance.filter.regex=.*\\..*
# table black regex
canal.instance.filter.black.regex=
# mq config 此处定义的mq也就是上面定义的kafka或者其他mq的topic名称
canal.mq.topic=example
第三步:启动kafka
测试的时候,自己先在服务器下载一个kafka,启动里面的zookeeper和kafka,然后打开一个消费者观察就行
消费者开启:bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic example --from-beginning
kafka正常启动后,启动canal bin/start-up.sh
然后在canal的logs目录下查看instance.properties中定义的topic名称的文件夹,也就是example,打开看里面的日志有没有报错。
第四步:测试
尝试修改127.0.0.1 实例下的mysql表数据或者库,在kafka消费者里面看内容。
内容1:增加
{"data":[{"id":"10"}],"database":"test_canal","es":1576932184000,"id":1,"isDdl":false,"mysqlType":{"id":"int(11)"},"old":null,"pkNames":["id"],"sql":"","sqlType":{"id":4},"table":"testuser","ts":1577200831211,"type":"INSERT"}
内容2:删除
{"data":[{"id":"1"}],"database":"test_canal","es":1577200931000,"id":3,"isDdl":false,"mysqlType":{"id":"int(11)"},"old":null,"pkNames":["id"],"sql":"","sqlType":{"id":4},"table":"testuser","ts":1577200931733,"type":"DELETE"}
内容3:修改
{"data":[{"id":"13"}],"database":"test_canal","es":1577201023000,"id":4,"isDdl":false,"mysqlType":{"id":"int(11)"},"old":[{"id":"11"}],"pkNames":["id"],"sql":"","sqlType":{"id":4},"table":"testuser","ts":1577201023478,"type":"UPDATE"}
内容4:ddl
{"data":null,"database":"test_canal","es":1577201122000,"id":6,"isDdl":true,"mysqlType":null,"old":null,"pkNames":null,"sql":"ALTER TABLE `testuser`\r\nMODIFY COLUMN `name` double(255,0) NULL DEFAULT NULL AFTER `id`","sqlType":null,"table":"testuser","ts":1577201122644,"type":"ALTER"}
以上的步骤就都能监控到了
当然还可以配置管理页面的,同样是下载jar包从canal官网
然后,按照上面把配置文件交给管理页面管理就行,其他的基本都一样,就不演示了。
很开心,因为周六尝试的时候总是报错,晚上又尝试了一下正常了,周六是因为配置文件配的kafkaIP有问题,另外就是一个坑
不能用服务器自带的mysql,最好自己下载一个mysql,按照上面的步骤来。