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
MySQL192.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、服务器

角色机器
ZooKeeper192.168.158.211  (ZK最好是集群,此处略)
Canal Admin    (canal.admin)192.168.158.211
Canal Server   (canal.deployer)192.168.158.211、192.168.158.212
MySQL192.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

  

2.4 admin配置管理

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

   

  2)集群主配置

  

   主要如下 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方式)

   ps:有时需要固定ip则需要设置canal.register.ip

 3)修改 conf/canal_local.properties 配置

canal.admin.register.cluster = wallet_cluster

 PS:  此处配置完canal.admin.register.cluster,以后新建的server会自动注册到该cluster名下.

         重启admin,配置生效

 4)instance配置

  

   主要如下 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上

以上!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值