canal工作原理
- canal 依靠mysql主从备份的原理,模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议
- MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )
- canal 解析 binary log 对象(原始为 byte 流)
核心逻辑可见源码:
com.alibaba.otter.canal.parse.inbound.AbstractEventParser.java中start方法
配置mysql开启binlog日志
修改my.ini文件(如果是安装在windows上,文件目录默认是C:\ProgramData\MySQL\MySQL Server 5.7)
log-bin=D:\mysql-binlog\mysql-bin
binlog-format=ROW
查看binlog日志开启状态
SHOW VARIABLES LIKE '%log_bin%';
查看binlog日志最新的日志文件及位置
SHOW MASTER STATUS
查询默认保存时间
SHOW VARIABLES LIKE 'expire_logs_days';
如果为0的话,则默认不清理binlog日志
安装部署canal-admin
canal-admin版本1.1.8,下载地址是https://github.com/alibaba/canal/releases/download/canal-1.1.8-alpha-2/canal.admin-1.1.8-SNAPSHOT.tar.gz
jdk版本是11.0.24 ( 如果是jdk8的话,会出现一些问题,以前走过的坑),可以去oracle官网下载
选择一个mysql数据库做为canal-admin的内置数据库
在数据库中执行conf目录下的canal_manager.sql 脚本文件
修改conf 目录下的application.yml配置文件,填写数据库信息
注意:adminPasswd是端口11110服务的密码,后续安装canal-deploye的时候会说到
在bin目录执行
sh startup.sh
web服务默认的端口是8089,访问ip:8089
默认的用户名密码是:admin/123456,后续也可以修改密码
至此canal-admin已经搭建完毕
安装部署 canal.deployer
canal-deployer版本1.1.8,下载地址是
修改conf下的canal.properties
#################################################
######### common argument #############
#################################################
# tcp bind ip
canal.ip = 172.18.10.27 // 本机ip即可
# register ip to zookeeper
canal.register.ip = 172.18.10.27 // 本机ip即可
canal.port = 11111
canal.metrics.pull.port = 11112
# canal instance user/passwd
# canal.user = canal
# canal.passwd =# canal admin config
canal.admin.manager = 172.18.10.27:8089 //这里是连接canal-admin服务的地址,这里由于canal-admin,canal-deployer安装在同一台服务器上
canal.admin.p