天天看点

Canal安装部署

一、canal介绍

    canal 是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费

    工作原理:

  • canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议
  • MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )
  • canal 解析 binary log 对象(原始为 byte 流)

   官网地址:https://github.com/alibaba/canal

二、服务器准备

       192.168.158.211

       192.168.158.212 

三、软件准备:

  1、Mysql要求

       当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x

       建议配置 binlog 模式为 row

        vim  /etc/my.cnf

[mysql]
binlog-format=ROW #选择 row 模式    
           

Canal 的原理是把自己模拟成 MySQL Slave,所以这里一定需要为 canal 使用的用户在数据库赋相关权限

CREATE USER canal IDENTIFIED BY 'canal'; 

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

FLUSH PRIVILEGES;

show grants for 'canal';  ###查看权限
           

三、软件准备:

  2、下载解压软件包

      资源包地址:https://github.com/alibaba/canal/releases 

      以1.1.4为例:https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.deployer-1.1.4.tar.gz  (server:监听binlog)

                            https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.admin-1.1.4.tar.gz      (admin:server配置中心)

                            https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.adapter-1.1.4.tar.gz    (client:监听server,可以代码实现)

       下载ZK:     https://archive.apache.org/dist/zookeeper/zookeeper-3.6.1/apache-zookeeper-3.6.1-bin.tar.gz (zk:HA注册中心)

       安全起见建议canal在非root用户下安装运行

useradd canal

passwd canal    
                             
mkdir /usr/local/canal               ### 创建canal安装目录
 
chown -R canal:canal /usr/local/canal   ### 目录授权
           

四.单节点模式

 1、服务器

角色 机器
Canal Server   (canal.deployer) 192.168.158.211
MySQL 192.168.158.211

 2、部署&配置

mkdir /usr/local/canal/deployer

tar -zxvf canal.deployer-1.1.4.tar.gz -C /usr/local/canal/deployer

cd /usr/local/canal/deployer
 
           

  编辑 conf/example/instance.properties ,修改如下 3 个属性值:

canal.instance.master.address=192.168.158.211:3306
 canal.instance.dbUsername=canal
 canal.instance.dbPassword=canal
           
 PS: example 仅是为 instance 起的一个别名,该名称可自定义;当需要定义多个 instance 时,可参考 conf/example 文件夹的范式,在相同的目录下复制多个与 conf/example 仅名称不同的文件夹,并修改文件夹里的内容。再把 instance 名称(即刚创建的文件夹名)追加到 conf/canal.properties 文件的 canal.destinations 属性值中,多个值之间以英文半角的逗号分隔               

   启动

sh bin/startup.sh

tail -f logs/example/example.log

tail -f logs/canal/canal.log
           

五.高可用模式

  1、服务器

角色 机器
ZooKeeper 192.168.158.211  (ZK最好是集群,此处略)
Canal Admin    (canal.admin) 192.168.158.211、192.168.158.212
Canal Server   (canal.deployer) 192.168.158.211、192.168.158.212
MySQL 192.168.158.211

 2、部署&配置

 2.1 zk安装 

tar -zxvf apache-zookeeper-3.6.1-bin.tar.gz

mv apache-zookeeper-3.6.1-bin /usr/local/zookeeper

cd /usr/local/zookeeper

cp conf/zoo_sample.cfg conf/zoo.cfg

sh bin/zkServer.sh start
           

2.2 admin部署

mkdir /usr/local/canal/admin

tar -zxvf canal.admin-1.1.4.tar.gz -C /usr/local/canal/admin

cd /usr/local/canal/admin
 
           

  编辑 conf/application.yml,修改数据库配置:

 (ps:如果此处用户名密码为canal/canal则必须为canal授权INSERT权限,否则后台页面添加集群时会报错)

server:
  port: 8089
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8

spring.datasource:
  address: 127.0.0.1:3306
  database: canal_manager
  username: root
  password: 123456
  driver-class-name: com.mysql.jdbc.Driver
  url: jdbc:mysql://${spring.datasource.address}/${spring.datasource.database}?useUnicode=true&characterEncoding=UTF-8&useSSL=false
  hikari:
    maximum-pool-size: 30
    minimum-idle: 1

canal:
  adminUser: admin
  adminPasswd: admin

           

  初始化数据

mysql -h127.0.0.1 -uroot -p

> source conf/canal_manager.sql
           

   启动

sh bin/startup.sh

tail -f logs/admin.log
           

   访问 : http://192.168.158.211:8089    admin/123456

 2.3 deployer部署

mkdir /usr/local/canal/deployer

tar -zxvf canal.deployer-1.1.4.tar.gz -C /usr/local/canal/deployer

cd /usr/local/canal/deployer
 
           

   编辑 conf/canal_local.properties ,修改canal.admin.manager属性值,为admin的地址:192.168.158.211:8089

# register ip
canal.register.ip =

# canal admin config
canal.admin.manager = 192.168.158.211:8089
canal.admin.port = 11110
canal.admin.user = admin
canal.admin.passwd = 4ACFE3202A5FF5CF467898FC58AAB1D615029441
# admin auto register
canal.admin.register.auto = true
canal.admin.register.cluster =
           

  启动

sh bin/startup.sh local

tail -f logs/canal/canal.log
           
 PS: 此处启动命令后加 local,意为使用使用canal-admin的配置

   登录admin,查看自动注册的server

Canal安装部署

2.4 admin配置管理

   1)新建集群(注意zk地址)

Canal安装部署

  2)集群主配置

Canal安装部署

   主要如下 3 个属性值:

   canal.admin.manager = 192.168.158.211:8089

   canal.zkServers = 192.168.158.211:2181

   canal.instance.global.spring.xml = classpath:spring/default-instance.xml (支持HA方式)

 3)修改 conf/canal_local.properties 配置

canal.admin.register.cluster = wallet_cluster
           

 PS:  此处canal.admin.register.cluster再新建,server之后新建server会自动注册到该cluster名下

         重启admin,配置生效

 4)instance配置

Canal安装部署

   主要如下 3 个属性值:

   canal.instance.master.address=127.0.0.1:3306

   canal.instance.dbUsername=canal

   canal.instance.dbPassword=canal

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

 PS:  regex是对库和表的过滤,此正则为perl的正则

PS.其他

   1 两个server组成HA,创建一个instance,该instance只会挂在到一个server上,当关停该server,instance会自动切换到另一个server上

以上!!!