使用canal偷取MySQL的二进制日志

前提

安装完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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180913G1U9RV00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券