Alibaba canal组件的安装及使用

Table of Contents

一、前言:环境准备

蓝色字体可点击,安装包下载


二、名词解释

  • canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费
  • canal-admin 设计上是为canal提供整体配置管理、节点运维等面向运维的功能,提供相对友好的WebUI操作界面,方便更多用户快速和安全的操作
  • Canal Kafka RocketMQ QuickStart canal 1.1.1版本之后, 默认支持将canal server接收到的binlog数据直接投递到MQ, 目前默认支持的MQ系统有:

三、canal + SpringBoot模式

3.1 canal准备


  • 对于自建 MySQL , 需要先开启 Binlog 写入功能,配置 binlog-format 为 ROW 模式,my.cnf 中配置如下

    1
    2
    3
    4
    [mysqld]
    log-bin=mysql-bin # 开启 binlog
    binlog-format=ROW # 选择 ROW 模式
    server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复

    注意:针对阿里云 RDS for MySQL , 默认打开了 binlog , 并且账号默认具有 binlog dump 权限 , 不需要任何权限或者 binlog 设置,可以直接跳过这一步

  • 授权 canal 链接 MySQL 账号具有作为 MySQL slave 的权限, 如果已有账户可直接 grant

    1
    2
    3
    4
    CREATE USER canal IDENTIFIED BY 'canal';  
    GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
    -- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
    FLUSH PRIVILEGES;

3.2 canal启动


  • 下载 canal, 访问 release 页面 , 选择需要的包下载, 如以 1.1.4 版本为例
    wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.deployer-1.1.4.tar.gz

  • 解压完成后,进入 canal 目录,可以看到如下结构
    image

  • 配置修改

    vim conf/example/instance.properties
    
    #position info,需要改成自己的数据库信息
    canal.instance.master.address = 127.0.0.1:3306 
    canal.instance.dbUsername = root  
    canal.instance.dbPassword = 123456
    # mq config
    canal.mq.topic=mytopic
  • 启动
    sh bin/startup.sh

  • 查看 server 日志
    tail -f logs/canal/canal.log

  • 查看 instance 的日志
    tail -f logs/example/example.log

  • 关闭
    sh bin/stop.sh

3.3 让canal成为SpringBoot组件


  • 下载SpringBoot canal项目 项目地址
    image

  • 修改配置文件
    canal-test/application.properties
    image
    注意:红框中的配置要与canal配置文件instance.properties所在目录匹配

  • 启动canal-test
    image

  • 测试,修改本地库数据,查看控制台
    image


四、canal + canal-admin + MQ模式(单节点)

zookeeper+kafka安装过程省略

4.1 canal-admin准备


  • canal-admin的限定依赖:

    • MySQL,用于存储配置和节点等相关数据
    • canal版本,要求>=1.1.4 (需要依赖canal-server提供面向admin的动态运维管理接口)
  • 部署

    1. 下载 canal-admin, 访问 release 页面 , 选择需要的包下载, 如以 1.1.4 版本为例

    2. wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.admin-1.1.4.tar.gz

    3. 解压完成后,进入 canal-admin 目录,可以看到如下结构
      image

    4. 配置修改
      vim conf/application.yml

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      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: canal
      password: canal
      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: 123456
    5. 初始化元数据库

      mysql -h127.1 -uroot -p
      # 导入初始化SQL
      > source conf/canal_manager.sql
    6. 启动
      sh bin/startup.sh

    7. 查看 admin 日志
      tail -f logs/admin.log

      此时代表canal-admin已经启动成功,可以通过 http://127.0.0.1:8089/ 访问,默认密码:admin/123456
      image

    8. 关闭
      sh bin/stop.sh

4.2 canal-server启动


  • 修改配置文件
    vim conf/canal_local.properties

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # register ip
    canal.register.ip = 172.17.7.81 #canal服务所在服务器IP

    # canal admin config
    canal.admin.manager = 172.17.7.81:8089
    canal.admin.port = 11110
    canal.admin.user = admin
    canal.admin.passwd = 6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9
    # admin auto register
    canal.admin.register.auto = true
    canal.admin.register.cluster =
  • 配置密码
    上面配置的webUI的密码暗文需要到mysql的数据库查询的,我们配置的密码是123456,所以需要到数据库产生

    1
    2
    3
    4
    5
    6
    7
    mysql> select password(123456);
    +-------------------------------------------+
    | password(123456) |
    +-------------------------------------------+
    | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
    +-------------------------------------------+
    1 row in set, 1 warning (0.00 sec)
  • 启动canal服务
    要使用canal-admin,所以在启动方面也有一点不同,在bin目录下执行startup.sh 传入参数local
    1
    2
    3
    4
    5
    6
    7
    # 启动方法一:
    sh bin/startup.sh local


    # 启动方法二:
    # ---将canal_local.properties配置文件的名字改成canal.properties(删除原有的)
    sh bin/startup.sh

4.3 webUI的使用


  1. 官方介绍文档

  2. Server管理截图

    • 新增
      image

    • 配置Server 操作->配置

      • 载入模板,修改模板
        image
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        # tcp, kafka, RocketMQ
        canal.serverMode = kafka
        ##################################################
        ######### MQ #############
        ##################################################
        canal.mq.servers = 127.0.0.1:9092
        canal.mq.retries = 0
        canal.mq.batchSize = 16384
        canal.mq.maxRequestSize = 1048576
        canal.mq.lingerMs = 100
        canal.mq.bufferMemory = 33554432
        canal.mq.canalBatchSize = 50
        canal.mq.canalGetTimeout = 100
        canal.mq.flatMessage = true
        canal.mq.compressionType = none
        canal.mq.acks = all
        #canal.mq.properties. =
        canal.mq.producerGroup = test
        # Set this value to "cloud", if you want open message trace feature in aliyun.
        canal.mq.accessChannel = local
    • 保存,并返回
      image


  1. Instance管理截图
    image

    • 新增、配置Instance
      image

      1
      2
      3
      4
      5
      6
      7
      # position info
      canal.instance.master.address=127.0.0.1:3306
      # username/password
      canal.instance.dbUsername=root
      canal.instance.dbPassword=12345678s
      # mq config
      canal.mq.topic=mytopic
    • 保存并返回
      image

4.4 测试

image


五、至此单节点canal秘籍已练成!开森

借鉴文章如下(侵删):
canal-admin的高可用使用,单机使用,HA使用,阿里的canal的UI界面,管理canal的实例
让canal成为SpringBoot组件

相关文章

评论系统未开启,无法评论!