1.canal简介与安装

canal是什么?

canal译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费

工作原理

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

使用场景

  • 通过canal 连接其他数据库进行数据同步
  • 连接kafka rocketmq 消息中间件订阅binlog日志的改变
  • 连接其他实时计算框架如flink spark streaming等
  • 缓存同步 直接订阅binlog日志的变更 更新缓存数据库 如redis

安装

  1. MySQL中必须要打开binlog日志功能并且选择binlog日志的格式为row 配置serverId

    [mysqld]
    log-bin=mysql-bin # 开启 binlog
    binlog-format=ROW # 选择 ROW 模式
    server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复
    
  2. 因为canal是伪装MySQL的slave发送dump协议来进行binlog日志的订阅 需要为canal创建一个查询和副本同步的权限的账号

    CREATE USER canal IDENTIFIED BY 'canal';  
    GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
    FLUSH PRIVILEGES;
    
  3. 下载canal相关的包 https://github.com/alibaba/canal/tags

  4. 解压缩canal包 需要注意的是canal的压缩包解压缩出来是直接一堆文件,需要先建一个目录保存解压缩之后的文件

    mkdir /usr/local/canal
    tar -zxvf canal.deployer-1.1.6.tar.gz -C /usr/local/canal/
    
  5. 查看canal conf目录配置文件

    -rwxrwxrwx. 1 root root  319 Jun 22  2021 canal_local.properties # canal admin相关配置
    -rwxrwxrwx. 1 root root 6509 Oct  9  2021 canal.properties #canal配置文件
    drwxrwxrwx. 2 root root   33 Jul 10 04:36 example # 对应了canal配置文件用一个destinations中的配置
    -rwxrwxrwx. 1 root root 4429 May 20 15:26 logback.xml # 日志配置
    drwxrwxrwx. 2 root root   39 Jul 10 04:36 metrics # 监控
    drwxrwxrwx. 3 root root  149 Jul 10 04:36 spring # spring相关
    
    #################################################
    ######### 		destinations		#############
    #################################################
    # 多个由,分割 如example1,exmple2
    # 对应监听的实例配置文件在conf目录下创建exmaple1,example2目录
    canal.destinations = example
    # conf root dir
    canal.conf.dir = ../conf
    
    
  6. 修改example目录下的配置文件 instance.properties

    canal.instance.master.address=node1:3306 #修改成master的MySQL地址
    canal.instance.master.journal.name=
    canal.instance.master.position=
    canal.instance.master.timestamp=
    canal.instance.master.gtid=
    
    # MySQL连接信息
    canal.instance.dbUsername=canal
    canal.instance.dbPassword=canal
    canal.instance.connectionCharset = UTF-8
    # enable druid Decrypt database password
    canal.instance.enableDruid=false
    
    # mq config 如果需要连接MQ 以下是MQ相关配置
    # 主题名称
    canal.mq.topic=example
    # dynamic topic route by schema or table regex
    #canal.mq.dynamicTopic=mytest1.user,topic2:mytest2\\..*,.*\\..*
    # 分区信息
    canal.mq.partition=0
    # hash partition config
    #canal.mq.enableDynamicQueuePartition=false
    #canal.mq.partitionsNum=3
    #canal.mq.dynamicTopicPartitionNum=test.*:4,mycanal:6
    #canal.mq.partitionHash=test.table:id^name,.*\\..*
    
    
  7. 查看canal启动日志 log/exmaple/example.log

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值