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

posted @ 2020-11-11 14:43  无法停留  阅读(492)  评论(0)    收藏  举报