前提
安装完MySQL(我安装的是5.7),安装JDK(canal依赖)
开启MySQL的binlog
开启binlog,并且将binlog的格式改为Row,这样就可以获取到CURD的二进制内容。配置/etc/my.cnf,在[mysqld]增加
验证binlog是否开启
登录MySQL,使用命令:
若 log_bin显示为 on ,则说明开启。
给canal分配MySQL的账号
给canal分配一个MySQL的账号,方便canal偷取MySQL的binlog。
查看是否给canal账号分配权限
下载解压canal
地址:https://github.com/alibaba/canal/releases ,目前稳定版是 v1.1.0,下载 canal.deployer-1.1.0.tar.gz。解压到 canal目录下(没有该目录 就新建)
注:canal 是纯Java写的,所有需要依赖JDK环境,我这边使用的是:1.8.0_65-b17
canal和instance配置文件
一个canal里面可能会有多个instance,也就说一个instance可以监控一个mysql实例,多个instance也就可以对应多台服务器的mysql实例。也就是一个canal就可以监控分库分表下的多机器MySQL。
(1)canal.properties
canal/config 中的canal.properties文件,是全局性的canal服务器配置 ,修改内容如下:
(2)instance.properties
位于 canal/example/instance.properties,是具体的某个instances实例的配置,未涉及到的配置都会从canal.properties上继承,内容如下:
创建test数据库
查看MySQL上是否有test数据库,没有则创建
开启canal
进入canal/bin,执行:./startup.sh。
使用 ps -ef|grep canal 验证是否开启。
Java client代码
创建SpringBoot工程,引入依赖:
创建TestCanal类:
运行此类。在MySQL test数据库中创建student表,对其进行增删改,可以发现控制台上打印:有数据库啦……
参考
缓存一致性和跨服务器查询的数据异构解决方案canal
领取专属 10元无门槛券
私享最新 技术干货