Canal部署使用

Posted by BY lingjun on October 28, 2019 本文总阅读量

Canal部署使用

Canal:MySQL binlog 增量订阅&消费组件,是基于MySQL二进制日志的高性能数据同步系统。

Canal 所需条件
Canal-Server jdk1.8
Canal-Client python3
Mysql log-bin=on,binlog-format=ROW

Canal 工作原理

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

    Canal Server:能够解析MySQL Binlog并订阅数据更改
    Canal Client:可以实现将更改广播到任何地方

Canal-Server 部署安装:

1、下载canal

  • wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.deployer-1.1.4.tar.gz

2、解压缩

  • mkdir /data/canal
  • tar zxvf canal.deployer-1.1.4.tar.gz -C /data/canal

3、配置修改

  • vi /data/canal/conf/example/instance.properties
    canal.instance.mysql.slaveId=174
    canal.instance.gtidon=false
    canal.instance.master.address=127.0.0.1:3306
    canal.instance.master.journal.name=mysql-bin.000009
    canal.instance.master.position=20665255
    canal.instance.master.timestamp=
    canal.instance.master.gtid=
    canal.instance.rds.accesskey=
    canal.instance.rds.secretkey=
    canal.instance.rds.instanceId=
    canal.instance.filter.table.error =true
    canal.instance.tsdb.enable=true
    canal.instance.dbUsername=canal
    canal.instance.dbPassword=*******
    canal.instance.defaultDatabaseName =testdb
    canal.instance.connectionCharset = UTF-8
    canal.instance.enableDruid=false
    canal.instance.filter.regex=.*\\..*
    canal.instance.filter.black.regex=
    canal.mq.topic=example
    canal.mq.partition=0
    

4、启停服务

  • sh bin/startup.sh
  • sh bin/stop.sh

5、查看日志

  • 查看server日志: tail -100f /data/canal/logs/canal/canal.log
  • 查看instance日志:tail -100f /data/canal/logs/example/example.log

Canal-Admin

canal-admin设计上是为canal提供整体配置管理、节点运维等面向运维的功能,提供相对友好的WebUI操作界面,方便更多用户快速和安全的操作

Canal-Client

Canal 特别设计了 client-server 模式,交互协议使用 protobuf 3.0 , client 端可采用不同语言实现不同的消费逻辑
Canal Clinet 支持多语言.<python,java,c#,go,php>