1.什么是canal
canal 的原理相对比较简单:
- canal 模拟 mysql slave 的交互协议,伪装自己为mysql slave,向 mysql master发送 dump 协议
- mysql master 收到 dump 请求,开始推送 binary log 给 slave (也就是 canal)
- canal 解析 binary log 对象(原始为 byte 流)
2.服务器端的配置
2.1.配置MySQL
2.1.1.修改配置文件
打开 MySQL 根目录,修改 my-default.ini 文件。
添加如下内容至文件中
|
|
添加结果如图所示:
2.1.2.新建一个名为 canal 的用户,赋予其相应的权限
SQL 语句如下:
|
|
语句中的 localhost 在实际应用中需要改成 canal 服务器的 ip 地址。如果你和我一样使用本机进行配置,使用 localhost 即可。
2.2.下载 canal
下载地址:https://github.com/alibaba/canal/releases
我们下载下图中标红的两个文件。
在你喜欢的位置(我的是D:\WOrkSapce\)建立一个名为 canal 的文件夹,将这两个压缩包放到里面,然后分别解压到各自的文件夹即可。
2.3.修改 canal 配置文件
进入 D:\WorkSpace\canal\canal.deployer-1.0.24\conf\example 目录下
找到 instance.properties 文件,将数据库参数修改成你自己的信息。
|
|
2.4.启动 canal 服务端
进入 D:\WorkSpace\canal\canal.deployer-1.0.24\bin 目录下,输入:
|
|
启动 canal 服务端,得到结果如下图所示:
3.客户端的配置
3.1.导入 maven 项目
打开 eclipse,【File】->【Import】
选择 【Maven】 -> 【Existing Maven Projects】
找到你刚才下载解压的 canal-canal-1.0.24 ,确定
你会发现这些项目已经导入进来了
3.2.打开并运行 example
打开 canal.example ,找到 ClusterCanalClientTest ,运行
3.3.更新数据库并测试
打开 MySQL 终端,输入:
|
|
这时查看 ClusterCanalClientTest 的终端,发现 binlog 信息已经被解析出来了
4.参考链接
alibaba/canal 项目介绍:
https://github.com/alibaba/canal/wiki