Canal 扩展篇

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

1.Canal介绍

GitHub - alibaba/canal: 阿里巴巴 MySQL binlog 增量订阅&消费组件

Canal 主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费,工作原理如下:

Canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送 dump 协议

MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 Canal )

Canal 解析 binary log 对象(原始为 byte 流)

可以用于以下业务场景:

  • 数据库镜像

  • 数据库实时备份

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

  • 业务 cache 刷新

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

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

2.原理

3.canal使用(基于docker)

1. 准备MySql主库

1.在服务器新建文件夹 mysql/data,新建文件 mysql/conf.d/my.cnf

其中my.cnf 内容如下

[mysqld]

log_timestamps=SYSTEM

default-time-zone='+8:00'

server-id=1

log-bin=mysql-bin

binlog-do-db = mall # 要监听的库

binlog_format=ROW        

配置解读:

① server-id :指定当前服务的id,必须指定,否则会报错

② log-bin :设置binlog文件的存放地址和文件名,叫做mysql-bin,此处指定的目录前缀是mysql容器的数据存放目录,所以可以在挂载目录中看到相关的文件,命名格式是mysql-bin.000001开始慢慢叠加

③ binlog-do-db :指定针对哪个数据库记录binlog的events事件,此处记录mall库

如果在 MySQL 配置中没有显式地配置 binlog-do-db 参数,那么 MySQL 的二进制日志(binlog)将会记录所有数据库的变更操作。

binlog-do-db 参数用于指定需要被记录到 binlog 中的数据库。通过配置 binlog-do-db,你可以选择只记录指定的数据库的变更操作,而忽略其他数据库的变更操作。

如果没有配置 binlog-do-db 参数,或者将其设置为一个空值(例如 binlog-do-db=),那么 MySQL 将会监听并记录所有数据库的变更操作到 binlog 中。

需要注意的是,即使没有配置 binlog-do-db 参数,你仍然可以通过其他方式(如 MySQL 的权限控制)来限制用户对数据库的操作权限,从而间接地控制 binlog 中的记录内容

4. binlog_format

在 MySQL 配置中,binlog_format 是用于配置二进制日志(binlog)的格式。binlog 是 MySQL 中用于记录数据库的变更操作的日志文件。

binlog_format 可以设置为以下几种值:

1. STATEMENT:以 SQL 语句的形式记录数据库的变更操作。这种格式记录的是每个执行的 SQL 语句,可以通过 replay SQL 语句的方式来还原数据变更。但是,由于某些情况下,同一个 SQL 语句在不同的数据库上执行可能会产生不同的结果,所以在使用 STATEMENT 格式时需要注意一致性问题。

2. ROW:以行的形式记录数据库的变更操作。这种格式记录的是每一行数据的变更情况,包括被修改、插入或删除的数据。ROW 格式记录了更加详细和精确的变更信息,但相对于 STATEMENT 格式来说,会占用更多的存储空间。

3. MIXED:混合模式,根据具体的情况自动选择 STATEMENT 或 ROW 格式来记录数据库的变更操作。MIXED 模式会根据 SQL 语句的类型和特性来决定使用哪种格式,以达到性能和存储空间的平衡。

binlog_format 的选择需要根据实际需求和应用场景来决定。不同的格式具有不同的优缺点,需要根据具体情况来进行权衡和选择

2.启动数据库

docker run --name mysql01 \ -p 3306:3306 \ -v /opt/mysql/conf.d:/etc/mysql/conf.d \ -v /opt/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ -d mysql:8.0 

3.校验是否开启成功

show variables like 'log_%';

show variables like 'binlog_format';

show variables like 'server_id';

--查看所有日志

show binlog events;

--查看最新的日志

show master status

-- 查询指定的binlog日志

show binlog events in 'XTZJ-20221008CY-bin.000020'

--清空所有的 binlog 日志文件

reset master 

 

DML与DDL的区别

MySQL中,DML(Data Manipulation Language)和DDL(Data Definition Language)是两种不同类型的SQL语句,它们分别用于不同的数据库操作目的:

DML(数据操作语言): DML语句主要用于对数据库表中的实际数据进行操作,主要包括以下几种命令:

  1. INSERT:向表中插入新的行数据。

  2. UPDATE:更新表中已存在的行数据。

  3. DELETE:从表中删除满足特定条件的行数据。

  4. SELECT:从表中检索数据,虽然SELECT不改变数据本身,但因其属于对数据的操作,所以也被归类于DML。

DML操作通常发生在事务中,可以被用户手动控制事务的开启、提交和回滚,确保数据的一致性和完整性。

DDL(数据定义语言): DDL语句主要用于创建、修改或删除数据库的结构元素,例如:

  1. CREATE:创建新的数据库、表、索引、视图等。

  2. ALTER:更改现有数据库对象的结构,例如增加或删除列,修改列的数据类型,重命名表等。

  3. DROP:删除数据库对象,如表、索引、视图等。

  4. TRUNCATE:清空表的内容,但保留表的结构。

4.安装canal

1.新建文件夹logs, 新建文件canal.properties instance.properties docker.compose.yml

如下图

canal配置文件:

canal.rar - 蓝奏云

修改canal.properties内容如下

修改instance.properties内容如下        

2.启动容器        (在canal路径下)

docker-compose up -d        

3.查看结果(交换机和队列需要自己创建)

随数据库操作:

DockerCompose方式部署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的数据同步不是全量的,而是增量。 阅读详情

相关推荐

Canal——数据同步

Canal——数据同步

weixin_43241803的博客 5942

大数据同步工具Canal

目录1 什么是canal2 canal能做什么3 如何搭建canal3.1 首先有一个MySQL服务器3.2 安装canal 1 什么是canal 我们先看官网的介绍 canal,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。 这句介绍有几个关键字:增量日志,增量数据订阅和消费。 这里我们可以简单地把canal理解为一个用来同步增量数据的一个工具。 接下来我们看一张官网提供的示意图: canal的工作原理就是把自己伪装成MySQL slave,模拟MySQL

赵广陆 7345

canal server初始化源码分析

canal服务端初始化源码分析

程序媛-jjl的博客 1449

canal介绍

canal主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费的一种中间件

wuyuzhou_12345的博客 6054

【技术派后端篇】使用 Canal 实现 MySQL 与 ES 数据同步的技术实践

通过本文,我们详细了解了使用 Canal 实现 MySQL 到 ES 数据同步的全过程,包括基础知识、软件安装、Canal 配置以及全量和增量数据同步实战。希望这些内容能为大家在实际项目中应用该技术提供帮助。如果项目中遇到类似场景,基本可以直接参考本文的方法进行操作。

专注Java和MySQL领域知识分享 2346

Canal完全入门手册

本文旨在帮助初次使用Canal项目者快速入门上手 环境要求 CentOS 7 MySQL 5.7 若您未安装MySQL 5.7,可以参考作者的《CentOS7安装MySQL5.7》 点此跳转文章 创建Canal账号 在您满足上面环境要求之后,我们需要创建一个供后续Canal项目使用的账号。 您也可以使用root账号,直接跳过这一步,但不建议您这么做。 With great power comes great responsibility ...

记录与分享 1372

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的博客 1815

Canal扩展篇

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

y666__的博客 1817

Canal 扩展

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

z1231234321的博客 819

红外弱小目标检测:IPI算法解读及MATLAB复现

参考文献:[1]C. Gaoet al., “Infrared Patch-Image Model for Small Target Detection in a Single Image,” vol. 22, no. 12, pp. 4996–5009, 2013. 本文整理????论文笔记,并附MATLAB实现代码。 一、阅读笔记 1. 摘要 IPI算法是单帧检测算法; 利用背景的非局部子相关性(non-local self-correlation ofbackground),将目标检测转..

小草莓的魔法笔记 1万+

基于PLC的冲压件自动生产线电气系统设计【附数据】

考虑到生产线的高效运行和维护简便性,选择了三菱FX系列的可编程逻辑控制器(PLC)作为核心控制单元,该型号的PLC因其高可靠性和强大的功能集,在工业自动化领域有着广泛的应用。最后,在完成初步的软件开发后,进行了多轮次的模拟测试和现场调试,逐步修正了存在的问题,最终达到了预期的功能要求。例如,对于进料环节,选用了光电传感器以精确检测物料的位置;此外,为了适应不同尺寸的工件加工需求,还特别设计了一套可调节的夹具系统,不仅提高了生产线的灵活性,同时也降低了更换模具的成本。✅ 感恩科研路上每一位志同道合的伙伴!

lagougongzuoshi的博客 1291

【Canal】从原理、配置出发,从0到1完成Canal搭建

前几天在网上冲浪的时候发现了一个比较成熟的开源中间件——Canal。在了解了它的工作原理和使用场景后,顿时产生了浓厚的兴趣。今天,就让我们跟随阿Q的脚步,一起来揭开它神秘的面纱吧。

阿Q的小窝 1万+

分布式存储系统关于GDPR条例中的数据清除原则

文章目录前言HDFS存储系统数据的完全删除基于加解密的输入输出流的数据保护方案 前言 关于GDPR是什么,可能许多同学之前并不太了解,至少笔者在之前也是不清楚的。GDPR全称为通用数据保护条例,General Data Protection Regulation。它是一项来自欧盟的关于计算机数据保护相关的条约,旨在规范系统如何收集,管控用户私人数据的种种行为。但是当前的一些存储系统并没有完全符合...

走在前往架构师的路上 3623

canal是什么canal怎么使用

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

weixin_46229190的博客 2452

双层优化入门(1)—基本原理与求解方法(附matlab代码)

双层优化问题(Bilevel Programming Problems),也被称为双层规划,最早由Stackelberg与1934年在经济学相关研究中提出,因此也被称为Stackelberg问题。双层规划问题一般具有层次性、独立性、冲突性、优先性和自主性等特点。 本文介绍了双层优化的原理与求解方法,并提供了相应的matlab代码供参考学习。

配电网和matlab的博客 5万+

遥感新手别纠结!实测ENVI 5.3、5.6、6.0三个免费版,教你混搭安装避坑

本文为遥感新手提供ENVI 5.3、5.6、6.0三个免费版的实测对比与混搭安装指南,帮助用户构建零成本高效工作流。详细解析各版本功能差异、共存安装技巧及常见问题解决方案,特别适合课程作业、毕业论文分析和遥感入门练习。

weixin_30819085的博客 472

Canal使用详解

Canal是阿里巴巴开发的MySQL binlog增量订阅&消费组件,Canal是基于MySQL二进制日志的高性能数据同步系统。在阿里巴巴集团中被广泛使用,以提供可靠的低延迟增量数据管道。Canal Server能够解析MySQL Binlog并订阅数据更改,而Canal Client可以将更改广播到任何地方,例如数据库和。Canal支持所有平台,细粒度系统监视,通过不同方式解析和预订MySQL Binlog,以及高性能、实时数据同步。

技术人集结地 4208

工作之余的随想:AI 会终结 SAP 顾问吗?

本文是笔者工作之余的一些胡思乱想。昨晚(准确的说是今日凌晨),我又熬了一个夜。没办法,接到一个影响客户项目上线的紧急 incident,花了我好长时间,竟然一点头绪都没有。苦苦思索的过程,时间过得飞快。一转眼就晚上11:30 了。要说我 2007 年还在研三实习期间,就进入了 SAP 行业,到今天已经摸爬滚打 18 年了,按理说也算身经百战了,可以说处理过很多 SAP 客户使用系统时遇到的各种稀奇古怪的问题。但即便这样,我也时常在工作中遇到一开始感到无从下手的问题。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1262

【Canal】实现原理和搭建方案

canal.adapter,相当于canal的客户端,会从canal-deployer中获取数据,然后对数据进行同步,可以同步到MySQL、Elasticsearch和HBase等存储中去。(1)全局配置:conf/application.properties(也可以是conf/application.yml,连接 Canal-Server、配置同步目标、全局参数)下载canal.deployer,可以直接监听MySQL的binlog,把自己伪装成MySQL的从库,只负责接收数据,并不做处理。

weixin_44823875的博客 932

YOLOv8改进:卷积篇 | 保姆级探索动态蛇形卷积 (Dynamic Snake Convolution) 的实现与应用

动态蛇形卷积是一种新的卷积操作,它能够更好地捕捉图像中的细节信息。传统卷积核的形状和大小是固定的,而动态蛇形卷积则允许卷积核在不同的位置动态调整其形状,以更好地适应输入数据的特点。这种灵活性使得动态蛇形卷积在处理复杂背景和细节丰富的图像时具有显著优势。我们先定义一个基本的动态蛇形卷积模块。这个模块将作为YOLOv8卷积层的替代。为了全面集成动态蛇形卷积,我们需要修改YOLOv8的模型定义,将所有的基础卷积层替换为我们的SnakeConv模块。

一键难忘的博客 5481

2023 数字IC设计秋招复盘——数十家公司笔试题、面试实录

由于是本人的亲身经历,所以想通过付费专栏获得一些收益。扣除平台的抽成后,我会将最终收益的一半捐献给贫困山区助学基金。专栏内容: 1. 几十场笔试真题的原题纯净版与个人解答版。 2. 几十场面试实录,包含提问、解答与个人复盘建议。 3. 个人整理的知识点总结。 4. 求职准备、简历制作方面的建议。

w0shishabi的博客 1万+

Canal 中配置 Kafka详解

在 Canal 中配置 Kafka 是一个非常常见的应用场景,通常用于将 MySQL 的数据变更实时同步到 Kafka 消息队列中,供下游系统进行消费。下面我将重点介绍的配置步骤,因为它更强大和灵活。

专注于技术分享 1656

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

canal的配置详解

一、canal的配置加载方式介绍配置之前,先了解下canal的配置加载方式:canal配置方式有两种:ManagerCanalInstanceGenerator: 基于manager管理的配置方式,目前alibaba内部配置使用这种方式。大家可以实现CanalConfigClient,连接各自的管理系统,即可完成接入。SpringCanalInstanceGenerator:基于本地spring ...

ChengYanan的博客 3万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

认识Canal

认识Canal

m0_61787196的博客 928

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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 等组件来消费。

流华追梦的专栏 6658

一文学会Canal监听MySQL

Canal监听Mysql

CODEING一场空的博客 1078
上一篇: 消息的可靠性·
下一篇: MQ如何保证消息的幂等性
涵冰...
博客等级 码龄4年 2438粉丝 243原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涵冰...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值