学习 Canal(一):Canal 服务部署

Canal阿里巴巴中间件团队 开发的基于 MySQL 增量日志(binlog)解析的服务

MySQL binlog 用于主备复制,Canal 伪装为 MySQL Slave 向 MySQL Master 请求 binlog 并解析

关于 MySQL 主备复制,可以参考《高性能 MySQL(第3版)》的第 10 章复制

系统要求

Java 1.6 以上版本

MySQL 5.7.13

下载

GitHub 下载:https://github.com/alibaba/canal/releases

当前最新版本为 v1.0.25

# 创建目录
mkdir canal.deployer-1.0.25 && cd canal.deployer-1.0.25

# 下载
wget https://github.com/alibaba/canal/releases/download/v1.0.25/canal.deployer-1.0.25.tar.gz

# 解压缩
tar -zxf canal.deployer-1.0.25.tar.gz  

MySQL 配置

编辑 MySQL 配置文件

[mysqld]
# 开启
log-bin = mysql-bin  
# ROW 格式
binlog-format = ROW  
# 不能与 Canal 的 slaveId 重复
server_id = 1  

参考:https://dev.mysql.com/doc/refman/5.7/en/replication-options-binary-log.html

登录 MySQL:

mysql -h mysql_master -uroot -p  

为 Canal 用户授予 SELECTREPLICATION SLAVEREPLICATION CLIENT 权限:

GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';  
FLUSH PRIVILEGES;  

Canal 配置

编辑 conf/example/instance.properties 文件:

canal.instance.master.address = 127.0.0.1:3306  
canal.instance.master.journal.name =  
canal.instance.master.position =  
canal.instance.master.timestamp =

canal.instance.dbUsername = canal  
canal.instance.dbPassword = canal  
canal.instance.defaultDatabaseName =  
canal.instance.connectionCharset = UTF-8

canal.instance.filter.regex = .*\\..*  

参考:https://github.com/alibaba/canal/wiki/AdminGuide

启停

bin/startup.sh

bin/stop.sh