canal使用
*原理
canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议
mysql master收到dump请求,开始推送binary log给slave(也就是canal)
canal解析binary log对象(原始为byte流)
1.开启binlog模式
修改mysqld.cnf配置文件
docker exec -it mysql /bin/bash
cd /etc/mysql/mysql.conf.d
vi mysqld.cnf

配置如下:
log-bin/var/lib/mysql/mysql-bin
server-id=12345
使用root账号创建用户并授予权限(用于测试)
create user canal@'%' IDENTIFIED by 'canal';
GRANT SELECT,ch哦那个其 REPLICATION SLAVE, REPLICATION CLIENT,SUPER ON *.* TO 'canal'@'%';
FLUSH PRIVILEGES;
最后重启mysql;
2.canal的配置
docker exec -it canal /bin/bash
cd canal-server/conf/
vi canal.properties
cd example/
vi instance.properties
canal.properties 是canal自身的配置,instance.properties是需要同步数据的数据库连接配置。
配置instance.properties文件
1)配置要监听的数据
2)配置canal.instance.filter.regex
canal.instance.filter.regex配置有很多种方式,可以参考
https://github.com/alibaba/canal/wiki/AdminGuide
3.canal微服务搭建
1)下载jar包,下载地址https://github.com/alibaba/canal/releases
将下载好的文件解压,找到start-canal目录,cmd进入命令行模式,直接输入mvn install即可
2)创建项目在pom.xml文件中添加依赖
<dependency>
<groupId>com.xpand</groupId>
<artifactId>starter-canal</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
3)配置application.yml
server:
port: 18082
spring:
application:
name: canal
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:7001/eureka
instance:
prefer-ip-address: true
feign:
hystrix:
enabled: true
#hystrix 配置
hystrix:
command:
default:
execution:
timeout:
#如果enabled设置为false,则请求超时交给ribbon控制
enabled: true
isolation:
strategy: SEMAPHORE
#canal配置
canal:
client:
instances:
example:
host: 192.168.211.132
port: 11111

浙公网安备 33010602011771号