简介
canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费
工作原理
- canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送 dump 协议
- MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )
- canal 解析 binary log 对象(原始为 byte 流)
环境
mysql 5.7
ip:192.168.1.1
修改MySQL配置,开启 Binlog
systemctl stop mysqld
vim /etc/my.cnf
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复
systemctl start mysqld
新建MySQL用户,授权 canal 链接 MySQL 账号具有 MySQL slave 的权限
CREATE USER canal IDENTIFIED BY 'Canal123!@#';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
FLUSH PRIVILEGES;
下载安装
wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.deployer-1.1.4.tar.gz
mkdir -p /opt/canal
tar zxvf canal.deployer-1.1.4.tar.gz -C /opt/canal
vim /opt/canal/conf/example/instance.properties
canal.instance.mysql.slaveId=2
canal.instance.master.address = 192.168.1.1:3306
canal.instance.dbUsername=canal
canal.instance.dbPassword=Canal123!@#
#编辑conf下的canal_local.properties文件,canal_local.properties是canal.properties的简化版,正常情况使用canal_local.properties就够了,但是默认启动会加载canal.properties,所以需要将canal.properties删除,或者把canal_local.properties覆盖canal.properties,或者用sh startup.sh local启动
cd /opt/canal/conf
rm -rf canal.properties
cp -a canal_local.properties canal.properties
vim canal.properties
#此处最好将本机ip填上
canal.register.ip = 192.168.1.1
#此处是填web页面的管理地址,注意:即便是装到一台服务器,也不要用127.0.0.1,否则可能会有问题
canal.admin.manager = 192.168.1.1:8089
canal.admin.port = 11110
canal.admin.user = admin
canal.admin.passwd = 4ACFE3202A5FF5CF467898FC58AAB1D615029441
canal.admin.register.auto = true
canal.admin.register.cluster =
启动服务,最好先启动web管理端,再启动本服务
cd /opt/canal/bin && sh startup.sh