基于 MySQL 数据库增量日志解析工具-canal

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

简介

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

基于日志增量订阅和消费的业务包括:

  • 数据库镜像

  • 数据库实时备份

  • 索引构建和实时维护(拆分异构索引、倒排索引等)

  • 业务 cache 刷新

  • 带业务逻辑的增量数据处理

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

工作原理

MySQL主备复制原理:

  • MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件binary log events,可以通过 show binlog events 进行查看);

  • MySQL slave 将 master 的 binary log events 拷贝到它的中继日志(relay log);

  • MySQL slave 重放 relay log 中事件,将数据变更反映它自己的数据;

img

canal 工作原理:

  1. 基于上述MySQL主备复制原理,canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议;

  2. MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal );

  3. canal 解析 binary log 对象(原始为 byte 流);

  4. 再发送到存储目的地,比如MySQL,Kafka,Elastic Search等等。

    img

安装部署

安装MySQL,开启binlog 以及 gid 同步

cat > /eyc/my.cnf <<EOF
log_bin=/var/log/binlogs/binlog
server-id=1
expire_logs_days=5
binlog_format=row
 
# gtid
gtid_mode=on 
enforce_gtid_consistency=on 
EOF

安装canal

wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.admin-1.1.5.tar.gz
# 解压canal-admin
mkdir  canal-admin
tar -zxvf canal.admin-1.1.5.tar.gz  -C canal-admin/
# 下载canal.deployer
wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.deployer-1.1.5.tar.gz
# 解压canal-deployer
mkdir  canal-deployer
tar -zxvf canal.deployer-1.1.5.tar.gz -C canal-deployer/

修改canal配置文件

admin配置文件:

  • cd canal-admin/conf/

  • vim application.yml

server:
  port: 8089 # web端口,默认8089,
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
 
spring.datasource:
  address: 10.0.x.x:3306 # 数据库ip、端口 
  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     #登陆webui 用户名
  adminPasswd: admin #登陆密码,注意要1.1.5版本需要六位数以上密码,默认密码设置成admin登陆的时候会提示长度错误,默认的canal_manager.sql md5解密出来也是123456

修改server配置文件

vim /data/canal-server/conf/canal_local.properties

#Canal Server 本机地址.需修改
canal.register.ip = *
 
#Canal Admin 连接信息.需修改
canal.admin.manager = *:8089
canal.admin.port = 11110
canal.admin.user = admin
#mysql5 类型 MD5 加密结果 -- admin
canal.admin.passwd = 4ACFE3202A5FF5CF467898FC58AAB1D615029441
 
#自动注册
canal.admin.register.auto = true
#集群名
canal.admin.register.cluster = canal-cluster-1
#Canal Server 名字需修改
canal.admin.register.name = canal-server-1

另一台 Canal Server 也是一样的方式配置,修改 canal.register.ip = 11.8.36.105 和 canal.admin.register.name = canal-server-2即可。

登入集群新建canal-cluster-1,并载入配置模板保存,然后启动两个server

sh /data/canal-server/bin/startup.sh local

java实现

添加依赖

<!-- https://mvnrepository.com/artifact/com.alibaba.otter/canal.client -->
		<dependency>
			<groupId>com.alibaba.otter</groupId>
			<artifactId>canal.client</artifactId>
			<version>1.1.4</version>
		</dependency>
 
		<dependency>
			<groupId>com.google.protobuf</groupId>
			<artifactId>protobuf-java</artifactId>
			<version>3.5.1</version>
		</dependency>

添加yaml

canal:
  host: 127.0.0.1
  port: 11111
  destination: example
  username:
  password:
使用canal配合rocketmq监听mysql的binlog日志 阅读详情

相关推荐

canal-MySQL数据库增量日志解析

canal-MySQL数据库增量日志解析

技术引领业务创新 534

数据实时增量同步工具Canal实战

阿里巴巴B2B公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了同步杭州和美国异地机房的需求,从2010年开始,阿里系公司开始逐步的尝试基于数据库日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务。canal是用java开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件。目前,canal主要支持了MySQL的binlog解析解析完成后才利用canal client来处理获得的相关数据。(数据库同步需要阿里的otter中间件,基于canal)。

悦分享 277

Canal实现MySQL实时同步数据到ES

一、canal简介 canal主要用途是对MySQL数据库增量日志进行解析,提供增量数据的订阅和消费,简单说就是可以对MySQL增量数据进行实时同步,支持同步到MySQL、Elasticsearch、HBase等数据存储中去。 二、canal工作原理 canal会模拟MySQL主库和从库的交互协议,从而伪装成MySQL的从库,然后向MySQL主库发送dump协议,MySQL主库收到dump请求会向canal推送binlog,canal通过解析binlog将数据同步到其他存储中去。...

S&Y_shhy_QQ_1127833416 7344

canal - 数据同步工具

在前面Echarts - 实现图表显示中,我们使用了服务调用(统计表中的信息通过调用用户模块服务来获取)获取统计信息,这样耦合度高,效率相对较低,目前有另一种方法,通过实时同步数据库表的方法实现。例如每天统计登录注册人数,我们只需要把用户表同步到统计库中,实现本地统计就可以了,这样效率更高,耦合度更低,canal就是一个数据库同步工具。也可以将mysql数据库中的数据同步到中间件。 canal是阿里巴巴旗下的一款开源项目,纯java开发。基于数据库增量日志解析,提供增量数据订阅与消费。

weixin_44610169的博客 5848

数据同步工具Canal

Canal 是阿里巴巴开发的一个开源项目,用于实现 MySQL 数据库之间的数据同步和订阅。它主要利用 MySQL 的 binlog 机制,模拟 MySQL Slave 的交互协议,从而达到实时捕获数据库变化的目的。

youziguo的专栏 1308

Canal —— 一款 MySql 实时同步到 ES 的阿里开源神器

Canal 模拟 MySql Slave 的交互协议,伪装自己为 MySql Slave ,向 MySql Master 发送dump 协议。MySql Master 收到 dump 请求,开始推送 binary log 给 Slave (即 Canal )。Canal 解析 binary log 对象(原始为 byte 流)。Canal 对外提供增量数据订阅和消费,提供 Kafka、RocketMQ、RabbitMq、Es、Tcp 等组件来消费。

流华追梦的专栏 6614

mysql batch mode_MySQL数据库增量日志解析工具 Canal 实战

简介canal,阿里开源工具,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费应用场景数据库实时备份业务cache刷新索引构建和实时维护,例:将商品数据推送到es中构建倒排索引带业务逻辑的增量数据处理,例:增量数据推送到第三方平台官网原理MySQL master将数据写入binlogcanal 向master发送dump协议master 收到dump请求,推送binlog给c...

weixin_28849465的博客 322

mysql导入100000000需要多久_MySQL数据库增量日志解析工具 Canal 实战

简介canal,阿里开源工具,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费应用场景数据库实时备份业务cache刷新索引构建和实时维护,例:将商品数据推送到es中构建倒排索引带业务逻辑的增量数据处理,例:增量数据推送到第三方平台官网原理MySQL master将数据写入binlogcanal 向master发送dump协议master 收到dump请求,推送binlog给c...

weixin_31838473的博客 287

mysql日志增量分析_MySQL数据库增量日志解析工具 Canal 实战

简介canal,阿里开源工具,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费应用场景数据库实时备份业务cache刷新索引构建和实时维护,例:将商品数据推送到es中构建倒排索引带业务逻辑的增量数据处理,例:增量数据推送到第三方平台官网原理 MySQL master将数据写入binlogcanal 向master发送dump协议master 收到dump请求,推送binlog给...

weixin_39640762的博客 451

Kettle和Canal

Kettle是一款功能强大的开源ETL工具,它能够进行数据抽取、转换和加载,适用于数据仓库建模等传统ETL场景。Kettle支持多种关系型数据库的数据源,具备可视化web界面,并且支持增量和全量抽取。Kettle家族包括四个产品:Spoon、Pan、CHEF和Kitchen,它们共同构成了Kettle的ETL解决方案。另一方面,Canal是阿里巴巴旗下的一款开源项目,它是一个基于数据库增量日志解析的组件,提供增量数据的实时订阅和消费。

Zero_uou的博客 379

Canal使用

Canal 主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x。

渔阳的博客 499

基于docker-compose部署canal

canal由来及相关介绍 canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。 详见>> Github:https://github.com/alibaba/canal canal部署前

wang_tao219的博客 1583

Canal 扩展篇(阿里开源用于数据同步备份,监控表和表字段(日志))

https://github.com/alibaba/canalCanal 主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费,工作原理如下:Canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送 dump 协议MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 Canal )Canal 解析 binary log 对象(原始为 byte 流)可以用于以下业务场景:数

zhzjn的博客 1812

canal 一个MySQL增量日志解析神器

官方注释对PropertyEditor进行了说明PropertyEditor类为希望允许用户编辑给定类型的属性值的GUI提供支持。PropertyEditor支持显示和更新属性值的各种不同方式。大多数PropertyEditors只需要支持此API中可用的不同选项的子集。Simple PropertyEditors可能只支持getAsText和setAsText方法,不需要支持paintValue或getCustomEditor。更复杂的类型可能无法支持getAsText和setAsText,

Huangjiazhen711的博客 841

Canal的详细解释(小白无痛版!!!)

Binlog,全称Binary Log(二进制日志),是 MySQL 的一种日志文件,主要用来记录数据库的所有写操作,比如INSERTUPDATEDELETE,但是不记录查询操作(SELECT它的作用相当于一个“黑匣子”✈️:👉记录数据库发生过的改变;👉重播这些改变,实现恢复或者同步。

weixin_44748929的博客 3453

一文带你快速入门Canal,看这篇就够了!

前言          我们在做实时数仓时数据往往都是保存到数据库中例如MySQL,当有一条数据新增或修改需要马上将数据同步到kafka中或其他的数据库中,这时候我们需要借助阿里开源出来的Canal,来实现我们功能。 一、什么是Canal 我们看下官网的描述: canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 根据官网的描述我们大约可以理解为Ca

大数据记录 3893

基于MySql BinLog的增量订阅和消费组件 Canal

1、Canal背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求。不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务,从此开启了一段新纪元。 2、Canal原理 2.1mysql主备复制实现 从上层来看,复制分成三步: master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事..

kutianya518的博客 2386

canel-1.1.5 canal.deployer安装

简介 canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 工作原理 canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送 dump 协议 MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal...

云大牛的博客 4807

Canal的基本使用

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

m0_37559973的博客 904
上一篇: kafka生产者与消费者
下一篇: 零信任网络安全
云开发者联盟
博客等级 码龄5年 539粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值