MySql的Binlog日志工具分析:Canal、Maxwell、Databus、DTS

article/2025/10/7 4:12:04

点击上方蓝色字体,选择“设为星标

回复”资源“获取更多资源

大数据技术与架构

点击右侧关注,大数据开发领域最强公众号!

暴走大数据

点击右侧关注,暴走大数据!

Canal

定位:基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了mysql。

原理:

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

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

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

整个parser过程大致可分为几步:

  •  Connection获取上一次解析成功的位置(如果第一次启动,则获取初始制定的位置或者是当前数据库的binlog位点)

  • Connection建立连接,发生BINLOG_DUMP命令

  • Mysql开始推送Binary Log

  • 接收到的Binary Log通过Binlog parser进行协议解析,补充一些特定信息

  • 传递给EventSink模块进行数据存储,是一个阻塞操作,直到存储成功

  • 存储成功后,定时记录Binary Log位置

 

  • 数据过滤:支持通配符的过滤模式,表名,字段内容等

  • 数据路由/分发:解决1:n (1个parser对应多个store的模式)

  • 数据归并:解决n:1 (多个parser对应1个store)

  • 数据加工:在进入store之前进行额外的处理,比如join

Maxwell

canal 由Java开发,分为服务端和客户端,拥有众多的衍生应用,性能稳定,功能强大;canal 需要自己编写客户端来消费canal解析到的数据。

maxwell相对于canal的优势是使用简单,它直接将数据变更输出为json字符串,不需要再编写客户端。

Databus

Databus是一种低延迟变化捕获系统,已成为LinkedIn数据处理管道不可或缺的一部分。Databus解决了可靠捕获,流动和处理主要数据更改的基本要求。Databus提供以下功能:

  • 源与消费者之间的隔离

  • 保证按顺序和至少一次交付具有高可用性

  • 从更改流中的任意时间点开始消耗,包括整个数据的完全引导功能。

  • 分区消费

  • 源一致性保存

阿里云的数据传输服务DTS

数据传输服务(Data Transmission Service,简称DTS)是阿里云提供的一种支持 RDBMS(关系型数据库)、NoSQL、OLAP 等多种数据源之间数据交互的数据流服务。DTS提供了数据迁移、实时数据订阅及数据实时同步等多种数据传输能力,可实现不停服数据迁移、数据异地灾备、异地多活(单元化)、跨境数据同步、实时数据仓库、查询报表分流、缓存更新、异步消息通知等多种业务应用场景,助您构建高安全、可扩展、高可用的数据架构。

优势:数据传输(Data Transmission)服务 DTS 支持 RDBMS、NoSQL、OLAP 等多种数据源间的数据传输。它提供了数据迁移、实时数据订阅及数据实时同步等多种数据传输方式。相对于第三方数据流工具,数据传输服务 DTS 提供更丰富多样、高性能、高安全可靠的传输链路,同时它提供了诸多便利功能,极大得方便了传输链路的创建及管理。

个人理解:就是一个消息队列,会给你推送它包装过的sql对象,可以自己做个服务去解析这些sql对象。

阿里文档快速入口:https://help.aliyun.com/product/26590.html

免去部署维护的昂贵使用成本。DTS针对阿里云RDS(在线关系型数据库)、DRDS等产品进行了适配,解决了Binlog日志回收,主备切换、VPC网络切换等场景下的订阅高可用问题。同时,针对RDS进行了针对性的性能优化。出于稳定性、性能及成本的考虑,推荐使用。

欢迎点赞+收藏+转发朋友圈素质三连

文章不错?点个【在看】吧! ????


http://chatgpt.dhexx.cn/article/ebTRDBDX.shtml

相关文章

[架构设计]--让你的数据库流动起来 – 利用MySQL Binlog实现流式实时分析架构

感谢原文作者:https://aws.amazon.com/cn/blogs/china/mysql-binlog-architecture/ 数据分析特别是实时数据分析,已经越来越多的成为各行各业的分析要求与标准 – 例如,(新)零售行业可能希望通过线下POS数据与实时门店…

Flink实战 - Binlog日志并对接Kafka实战

点击上方蓝色字体,选择“设为星标” 回复”资源“获取更多资源 大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 大数据真好玩 点击右侧关注,大数据真好玩! 对于 Flink 数据流的处理,一般都是去直…

mysql 无bin_Mysql无Binlog数据恢复

无全量备份、未开启binlog日志,利用percona工具恢复 delete的数据 今天,利用Percona Data Recovery Tool for InnoDB工具(仅支持InnoDB,MyISAM不支持),可以找回被删除的数据。 原理:在InnoDB引擎,delete删除…

nodejs安装和环境配置

1、node下载 官方下载地址: Node.js 下载node-v16.16.0-x64 2、安装测试 安装一直cmd即可 在主目录下打开cmd node -v 查看node的版本 npm -v 查看npm的版本(新版的node安装自带安装npm) 3、配置全局安装的模块路径和缓存路径 在nodejs文件夹,创建 node_global 和 node_…

Nodejs安装及常见问题

一、安装环境 简单的说 Node.js 就是运行在服务端的 JavaScript。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。Node.js 的包管理器 npm,是全球最大的开源库生态系统。…

nodejs安装的坑后坑

npm改默认位置后报错权限不足 由于不想将npm的模块下载到c盘,虽然某人一直说node才十几兆,但是C盘是真的小,绝对不能放里面了。 本来我的node就是安装在d盘,今天看到了npm改路径的方法,正好就想改一下,没想…

vue安裝及配置 nodejs安装配置

vue安装及配置 vue安装步骤 nodejs安装 安装nodejs环境:https://nodejs.org/en/ 查看node版本:node-v vue3.0需要使用node 8版本以上 npm镜像配置 npm是nodejs内置的资源管理器 npm两个镜像: 淘宝镜像:https://registry.npm.…

win10 Nodejs安装步骤

本人后端 仅供学习参考记录,有不妥之处 望指点。 Nodejs安装步骤 官网 下载安装包 官网地址:https://nodejs.org/zh-cn/ 历史版本地址 Node v14.16.0 (LTS) | Node.js 安装步骤: 双击下载的安装包 安装最新17.2项目有问题 后卸载17.2 …

linux系统宝塔安装nodejs,node安装,nodejs安装,Windows nodejs安装,Linux nodejs安装

node安装,nodejs安装,Windows nodejs安装,Linux nodejs安装 Windows系统: 安装:node-v12.14.0-x86.msi 查看:node -v 返回版本信息,比喻:v0.10.48 Linux系统: 第一种&…

nodejs 安装及环境配置

一、安装nodejs 从nodejs官网找到需版本的nodejs下载。 直接双击下一步安装,建议安装时更换路径,默认使用C盘,我这里更换路径为这个D:\software\nodejs 安装完成之后,检查一下 1.检查node安装版本 命令 node -v2.检查npm版本&a…

Nodejs安装npm

Nodejs安装npm 修改NPM默认安装路径,下载cnpm及设置npm源 修改NPM全局模式的默认安装路径 一般情况下,我们安装 Node.js环境,程序会自动把 NPM全局模块的路径设置在系统盘(通常是在 c盘下),我们在项目开…

nodejs安装

记录知识点滴,以供随时查阅,如有发现错漏和需要补充的地方,欢迎留言说明 nodejs安装 1、官网下载最新版本nodejs的windows安装包2、使用安装包安装 win10系统中安装nodejs 1、官网下载最新版本nodejs的windows安装包 http://nodejs.cn/down…

NodeJS安装(npm包管理器)

1、nodejs下载 windows下的NodeJS安装是比较方便的, 只需要登陆官网(Node.js),直接点击64-bit下载安装 2、安装过程基本直接“NEXT”,NodeJS已经集成了npm,所以npm也一并安装好了 3、在cmd窗口输入node -…

nodejs安装和环境配置-Windows

0.安装过程中遇到的常见问题 访问:https://blog.csdn.net/weixin_52799373/article/details/125718587?spm1001.2014.3001.5502 1.下载node.js 下载地址: https://nodejs.org/en/ 2.安装 2.1 安装 其实就是无脑下一步,第三步的时候可以选择自定义目…

mysql 更新sql 语句怎么写_sql更新语句怎么写

在SQL数据库中的更新语句要使用UPDATE语句来完成,UPDATE语句的作用是改变数据库中现有的数据,从而达到更新数据的目的,其语法是“update set where...”。 在SQL数据库中的更新语句要使用UPDATE语句来完成,UPDATE语句的作用是改变…

mysql更新语句怎么写

本文摘自由千锋教育高教产品研发部编著的**《MySQL数据库从入门到精通》**,转载请注明来源,谢谢! MySQL中update语句用于更新表中的现有数据。亦可用UPDATE语句来更改表中单个行,一组行或所有行的列值。 MySQL中UPDATE语句的语法…

mysql的更新用法_mysql更新语句的详细用法

首先,单个表的UPDATE语句: 更新[LOW_PRIORITY] [IGNORE] tbl_name SET col_name1 = expr1 [,col_name2 = expr2 ...] [WHERE where_definition] [ORDER BY ...] [LIMIT row_count] 第二,多表UPDATE语句: 更新[LOW_PRIORITY] [IGNORE] table_references SET col_name1 = expr…

mysql更新的语句怎么写_mysql更新语句怎么写?

MySQL更新语句也就是MySQL中的update语句,当我们需要更新或者修改表中的数据时,就会使用这个update语句,下面我们就来看一下mysql更新语句的具体写法。 MySQL中update语句用于更新表中的现有数据。亦可用UPDATE语句来更改表中单个行&#xff…

FIDDLER可以用来干啥?!

Fiddler的功能,完全可以用一张图来概括总结,真的是很精辟啊!所以开篇就和大家来分享一下:

rabbitmq中的consumerTag和deliveryTag分别是干啥的,有什么用?

2019独角兽企业重金招聘Python工程师标准>>> 同一个会话, consumerTag 是固定的 可以做此会话的名字, deliveryTag 每次接收消息1,可以做此消息处理通道的名字。 因此 deliveryTag 可以用来回传告诉 rabbitmq 这个消息处理成功 清…