前提
安装完MySQL(我安装的是5.7),安装JDK(canal依赖)
开启MySQL的binlog
开启binlog,并且将binlog的格式改为Row,这样就可以获取到CURD的二进制内容。配置/etc/my.cnf,在[mysqld]增加
1 | log-bin=mysql-bin #添加这一行就ok |
验证binlog是否开启
登录MySQL,使用命令:
1 | show variables like 'log_%'; |
若 log_bin显示为 on ,则说明开启。
给canal分配MySQL的账号
给canal分配一个MySQL的账号,方便canal偷取MySQL的binlog。
1 | CREATE USER canal IDENTIFIED BY 'canal'; |
查看是否给canal账号分配权限
1 | show grants for '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
1 | 下载 |
canal和instance配置文件
一个canal里面可能会有多个instance,也就说一个instance可以监控一个mysql实例,多个instance也就可以对应多台服务器的mysql实例。也就是一个canal就可以监控分库分表下的多机器MySQL。
(1)canal.properties
canal/config 中的canal.properties文件,是全局性的canal服务器配置 ,修改内容如下:
1 | ################################################# |
(2)instance.properties
位于 canal/example/instance.properties,是具体的某个instances实例的配置,未涉及到的配置都会从canal.properties上继承,内容如下:
1 | ################################################# |
创建test数据库
查看MySQL上是否有test数据库,没有则创建
开启canal
进入canal/bin,执行:./startup.sh。
使用 ps -ef|grep canal 验证是否开启。
Java client代码
创建SpringBoot工程,引入依赖:
1 | <dependency> |
创建TestCanal类:
1 | package com.xbq.canal.test; |
运行此类。在MySQL test数据库中创建student表,对其进行增删改,可以发现控制台上打印:有数据库啦……
参考
[缓存一致性和跨服务器查询的数据异构解决方案canal
欢迎关注我的公众号~ 搜索公众号: 翻身码农把歌唱 或者 扫描下方二维码: