Canal的使用

Canal——数据同步 阅读详情

Canal的使用

Canal概述

canal是用java开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件。目前,canal主要支持了MySQL的binlog解析,解析完成后才利用canal client 用来处理获得的相关数据。(数据库同步需要阿里的otter中间件,基于canal)。

使用场景

  • 原始场景:作为异地数据库之间的数据同步

  • 更新缓存

  • 抓取业务新增变化表,用于制作拉链表

  • 实时抓取业务数据中的新增变化数据,用于制作实时统计

    Canal原理

    Mysql的主从复制原理:

    1. Master主库将改变记录,写到二进制日志(binary log)中

    2. Slave从库向mysql master发送dump协议,将master主库的binary log events拷贝到它的中继日志(relay log);

    3. Slave从库读取并重做中继日志中的事件,将改变的数据同步到自己的数据库。

    Canal原理:

    img

1.canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议

2.mysql master收到dump请求,开始推送binary log给slave(也就是canal)

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

Mysql的BinLog

  • 什么是Binlog日志?

MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。

一般来说开启二进制日志大概会有1%的性能损耗 。二进制有两个最重要的使用场景: 

其一:MySQL Replication在Master端开启binlog,Mster把它的二进制日志传递给slaves来达到master-slave数据一致的目的。 

其二:自然就是数据恢复了,通过使用mysqlbinlog工具来使恢复数据。

二进制日志包括两类文件:二进制日志索引文件(文件名后缀为.index)用于记录所有的二进制文件,二进制日志文件(文件名后缀为.00000*)记录数据库所有的DDL和DML(除了数据查询语句)语句事件。

  • binLog日志的开启

    • 1.修改mysql的配置文件 /etc/my.conf

      添加如下

    log-bin=mysql-bin  // 这个表示binlog日志的前缀是mysql-bin  ,以后生成的日志文件就是 mysql-bin.123456 的文件后面的数字按顺序生成。 每次mysql重启或者到达单个文件大小的阈值时,新生一个文件,按顺序编号。
    
    • 2.mysql binlog的格式,那就是有三种,分别是STATEMENT,MIXED,ROW。在配置文件中可以选择配置
binlog_format=row

​ STATEMENT,MIXED,ROW的区别:

  1. statement :语句级,binlog会记录每次一执行写操作的语句。 相对row模式节省空间,但是可能产生不一致性,比如update tt set create_date=now() 如果用binlog日志进行恢复,由于执行时间不同可能产生的数据就不同。

​ 优点: 节省空间

​ 缺点: 有可能造成数据不一致。

  1. row 行级, binlog会记录每次操作后每行记录的变化。

​ 优点:保持数据的绝对一致性。因为不管sql是什么,引用了什么函数,他只记录执行后的效果。

​ 缺点:占用较大空间。

  1. mixed statement的升级版,一定程度上解决了,因为一些情况而造成的statement模式不一致问题 ,在某些情况下譬如:

​ 当函数中包含 UUID() 时;

	包含 AUTO_INCREMENT 字段的表被更新时;

​ 执行 INSERT DELAYED 语句时;

​ 用 UDF 时;

​ 会按照 ROW的方式进行处理

​ 优点:节省空间,同时兼顾了一定的一致性。

​ 缺点:还有些极个别情况依旧会造成不一致,另外statement和mixed对于需要对binlog的监控的情况都不方便。

  1. 在mysql中赋予权限:
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%' IDENTIFIED BY 'canal' ;
  1. 修改 /etc/my.conf 文件
server-id= 1
log-bin=mysql-bin
binlog_format=row
binlog-do-db=xxx  //指得你要监控的数据库

  1. 重启mysql

Canal的安装

  1. 去https://github.com/alibaba/canal/releases 下载安装版本

  2. 把canal.deployer-1.1.2.tar.gz拷贝到linux,解压缩

  3. 修改 canal配置及

    vim conf/canal.properties, 此配置为Canal的默认配置,主要关注端口号

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VLg0nvLe-1589105749433)(C:\Users\txc\AppData\Roaming\Typora\typora-user-images\image-20200510180920445.png)]
    配置canal监控的实例,destination可以配置多个,在客户端的代码中destination要对应

在这里插入图片描述我
10. vim conf/example/instance.properties。instance.properties是针对要追踪的mysql的实例配置

11.启动canal,./bin/startup.sh

  1. 启动客户端抓取数据
  2. canal的数据结构
Entry
    Header
        version         [协议的版本号,default = 1]
        logfileName     [binlog文件名]
        logfileOffset   [binlog position]
        serverId        [服务端serverId]
        serverenCode    [变更数据的编码]
        executeTime     [变更数据的执行时间]
        sourceType      [变更数据的来源,default = MYSQL]
        schemaName      [变更数据的schemaname]
        tableName       [变更数据的tablename]
        eventLength     [每个event的长度]
        eventType       [insert/update/delete类型,default = UPDATE]
        props           [预留扩展]
        gtid            [当前事务的gitd]
    entryType           [事务头BEGIN/事务尾END/数据ROWDATA/HEARTBEAT/GTIDLOG]
    storeValue          [byte数据,可展开,对应的类型为RowChange]    
RowChange
    tableId             [tableId,由数据库产生]
    eventType           [数据变更类型,default = UPDATE]
    isDdl               [标识是否是ddl语句,比如create table/drop table]
    sql                 [ddl/query的sql语句]
    rowDatas            [具体insert/update/delete的变更数据,可为多条,1个binlog event事件可对应多条变更,比如批处理]
        beforeColumns   [字段信息,增量数据(修改前,删除前),Column类型的数组]
        afterColumns    [字段信息,增量数据(修改后,新增后),Column类型的数组] 
        props           [预留扩展]
    props               [预留扩展]
    ddlSchemaName       [ddl/query的schemaName,会存在跨库ddl,需要保留执行ddl的当前schemaName]
Column 
    index               [字段下标]      
    sqlType             [jdbc type]
    name                [字段名称(忽略大小写),在mysql中是没有的]
    isKey               [是否为主键]
    updated             [是否发生过变更]
    isNull              [值是否为null]
    props               [预留扩展]
    value               [字段值,timestamp,Datetime是一个时间格式的文本]
    length              [对应数据对象原始长度]
    mysqlType           [字段mysql类型]

超详细的Canal入门,看这篇就够了! Canal入门看这篇就够了! 阅读详情

相关推荐

canal使用指南(一)

Canal的使用指南。实现一个简单纯净的client-service,暂时不接入mq。 文章目录一、什么是canal二、准备工作三、canal服务端搭建3.1 配置文件3.1.1 canal.properties3.1.2 instance 实例配置3.2 开始启动3.3 查看日志四、客户端实现 一、什么是canal canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务.

imVainiycos的博客 1万+

canal 使用详解

译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费工作原理canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送 dump 协议MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )canal 解析 binary log 对象(原始为 byte 流)EntryHeaderlogfileName [binlog文件名]

zhouzhiwengang的专栏 1万+

Windows 搭建 Canal admin 和 Canal Server

windows 搭建 Canal admin UI 和Canal Server 实战

Julie的博客 2088

超详细的canal使用总结

超详细的canal使用总结 canal的介绍 ​ canal,译意为水道/管道/沟渠,从官网的介绍中可以知道,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。 ​ 这是一张官网提供的示意图: 官网的解释最权威,我就直接引用一下官网的原话,另,附上官网地址:https://github.com/alibaba/canal 基于日志增量订阅和消费的业务包括 数据库镜像 数据库实时备份 索引构建和实时维护(拆分异构索引、倒排索引等) 业务 cache 刷新 带业务逻辑的增量数据处理

小飞的博客 1万+

canal===docker部署canal

一、canal介绍 canal译为水道,管道,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。 canal的工作原理就是把自己伪装成MySQL slave,模拟MySQL slave的交互协议向MySQL Mater发送 dump协议,MySQL mater收到canal发送过来的dump请求,开始推送binary log给canal,然后canal解析binary log,再发送到存储目的地,比如MySQL,Kafka,Elastic Search等等。 canal的作用:

Elaina_fang✨✨✨的博客 3048

【canal 中间件】canal 常见的启动方式

看到 successful 之后,就代表 canal-server 启动成功,然后就可以在 canal-admin 上进行任务分配了。canal-ployer 实际上就是 canal-server 的压缩文件,可以在本地启动。在 canal-admin 里面找不到数据库文件被删除,似乎不推荐使用外部数据库。事实上,这个可以不用指定数据库。canal-admin 在 Docker 中的详细安装教程请查看。使用以下命令执行脚本,启动 canal-admin 容器。canal-admin 文件存放在容器的。

weixin_44814196的博客 2537

canal简介及canal部署、原理和使用介绍

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

wt334502157的博客 3万+

【canal 中间件】canal 实时监听 binlog

看到 successful 之后,就代表 canal-server 启动成功,然后就可以在 canal-admin 上进行任务分配了。canal-server 和 canal-admin 在 Docker 里面的详细教程查看。注意,在没有修改配置文件并启动 MySQL 容器情况下,MySQL 会警告配置文件。在 MySQL 容器运行后,使用以下命令将创建的。在 canal 启动成功后,查看 admin 日志。在 canal 启动成功后,查看启动日志。进入 MySQL, 利用。注意,MySQL 容器的。

weixin_44814196的博客 2442

Canal 整合 canal-admin ,canal-adapter

一.修改数据库配置 1.修改my.cnf配置: log-bin=mysql-bin #设置日志位置 binlog-format=ROW #设置日志模式,记录每条数据修改内容 server_id=6 #唯一不能和canal的slave一样,1.1.4版本以后无需配置,增加自增机制 #binlog-do-db= #制定可以同步的库,不写默认全部同步 #binlog-ignore-db= #忽...

yu13843271857的博客 8530

canal使用详解

canal实现数据同步

congge 2万+

从论文到生产:iSLIP优先级匹配算法在SDN交换机中的20年演进史

本文回顾了iSLIP优先级匹配算法在SDN交换机中的20年演进历程,从斯坦福大学的原始论文到现代芯片实现。通过独特的指针滑动和迭代循环机制,iSLIP算法显著提升了交换机的吞吐量和公平性,解决了传统FIFO调度的队头阻塞问题。文章详细探讨了算法在硬件实现中的工程挑战、开源实践及未来AI时代的智能调度方向。

weixin_29230649的博客 331

canal使用

我们都知道一个系统最重要的是数据,数据是保存在数据库里。但是很多时候不单止要保存在数据库中,还要同步保存到Elastic Search、HBase、Redis等等。这时我注意到阿里开源的框架Canal,他可以很方便地同步数据库的增量数据到其他的存储应用。我们先看官网的介绍canal,译意为水道/管道/沟渠,主要用途是基于MySQL 数据库增量日志解析,提供增量数据订阅和消费。这里我们可以简单地把canal理解为一个用来同步增量数据的一个工具。

qq_35197991的博客 3111

Altium Concord Pro 的应用范围,安装,和使用范围

Altium Concord Pro 的应用范围,安装,和使用范围。保证满足两者软件的最低安装要求。 Altium Concord Pro 是配合Digapcb,和MCAD,Altium 和相应机械设计软件的基础和交换桥梁

hanzhaos的博客 1121

canal是什么canal怎么使用

译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。

weixin_46229190的博客 2458

AEB(自动紧急制动)

AEB系统对静止物体的误判率受多种因素影响,包括传感器精度、算法复杂性以及环境条件等。通过多传感器融合、算法优化、硬件升级以及环境适应性增强等技术手段,可以有效减少误判问题。美国和欧洲的AEB法规均强调了技术性能和安全性,但具体要求有所不同。美国的NHTSA规定更注重高速和复杂场景下的紧急制动能力,而欧盟的ECE R152法规则更侧重于基础的AEB功能覆盖范围。

百态·数智思维 | 聚焦大数据、量化与未来AI 2550

数学文化赏析MOOC笔记【2023】

深圳大学UOOC课程《数学文化赏析》课程笔记

simplenthpower的博客 1752

Canal原理及其使用

1 什么是canal   canal是用java开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件。目前,canal主要支持了MySQL的binlog解析,解析完成后才利用canal client 用来处理获得的相关数据。(数据库同步需要阿里的otter中间件,基于canal) 2 canal使用场景   (1)阿里otter(阿里用于进行异地数据库之间的同步框架)中间件的一部分,这是原始场景   (2)更新缓存:如果有大量的请求发送到mysql的话,mysql查询速度慢,QPS上不去,

fighting 3万+

DCMM评估报告模板样例

这篇DCMM评估报告对某数据管理公司2020年的数据管理能力进行了全面分析。报告显示,该公司在数据战略方面取得初步进展,但在数据治理和数据架构方面仍存在明显不足,包括缺乏有效治理流程、数据质量监控不足,以及数据标准化和转换灵活性不足等问题。评估报告提出了针对性改进建议,包括完善数据战略、建立治理流程、加强质量监控和提升数据转换灵活性等,为提升数据管理成熟度提供了重要指导。

cdfunlove的博客 166

Canal组件学习使用

本篇博文是canal的科普和实战干货文章。主要有三大部分,canal使用的原理,canal服务端安装使用、canal管理的安装使用、canal的与mq、kafka、rdb、java客户端的集成使用。

liushangzaibeijing的博客 3092

基于YOLO-world训练模型的完整教程:从数据准备到微调训练

本文提供了YOLO-world模型训练的完整教程,涵盖从环境配置到微调训练的全流程。首先介绍了YOLO-world项目的安装与配置步骤,包括依赖安装和CUDA环境设置;接着详细说明了数据集的准备方法,包括COCO格式数据集的组织结构和自定义数据集的类别定义;然后阐述了配置文件的修改要点,包括超参数调整和数据集路径设置;最后讲解了训练命令的使用方法及常见问题的解决方案。本教程旨在帮助读者快速掌握YOLO-world模型的训练技能,适用于计算机视觉领域的研究人员和开发者。

FJN110的博客 1108

小卫星多普勒频偏MATLAB代码

多普勒频偏是由于发射机和接收机之间的相对运动而引起的频率变化。对于小卫星,由于其速度和高度的变化,多普勒频偏会变得更加明显。本文将探讨小卫星多普勒频偏的原理、影响因素以及补偿方法。多普勒频偏的原理当发射机和接收机之间存在相对运动时,接收到的信号频率会发生变化。这种频率变化称为多普勒频偏。其原理可以描述如下:设发射机和接收机之间的距离为 d,发射信号的频率为 f0,发射机和接收机的相对速度为 v。则接收到的信号频率 f 为:其中 c 为光速。

qq_59747472的博客 245

canal-admin的高可用使用,单机使用,HA使用,阿里的canal的UI界面,管理canal的实例,以及问题

一、软件下载 1、介绍 canal的主要的作用就是通过MySQL的binlog日志文件,同步数据到MQ,MQ包含mysql、kafka、tcp等等 canal-admin是一个webUI界面,通过界面配置的方式,管理canal的配置文件,方便易于管理。 2、下载 使用的有点击下载:canal.deployer-1.1.4.tar.gz 和 canal.admin-1.1.4.tar....

剑雨江湖 1万+

吊打BEVFormer!GaussianBeV实战:用3D高斯开启BEV分割新范式

GaussianBeV是一种基于3D高斯建模的BEV分割新方法,在自动驾驶感知任务中实现了SOTA性能。其核心创新在于将场景元素表示为3D高斯分布,通过均值、协方差和权重精确描述物体位置、形状和置信度,相比传统BEV方法具有更强的空间建模能力。文章详细介绍了GaussianBeV的原理、环境配置、训练推理流程及其在自动驾驶和城市3D重建中的应用,并讨论了优化方向和未来发展趋势。该方法在nuScenes等数据集上表现出色,为BEV分割任务提供了新的解决方案。

m0_71589036的博客 106

Canal使用

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

2302_78998188的博客 819

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

canal介绍和使用docker安装canal

概述 1.1 背景 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。 基于日志增量订阅和消费的业务包括 数据库镜像 数据库实时备份 索引构建和实时维护(拆分异构索引、倒排索引等) 业务 cache 刷新 带业务逻辑的增量数据处理 当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x ,

qq_41358574的博客 3637

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【Canal】canal简介

【Canal】canal简介

qq_41466440的博客 2074

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: Redis简介学习
下一篇: SQL的规范
keepHungery
博客等级 码龄8年 115粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值