当前位置:网站首页>maxwell 概念

maxwell 概念

2022-08-11 05:35:00 吃再多糖也不长胖

maxwell 定义

maxwell 是用java编写的实时抓取MYSQL软件,实时读取MYSQL 二进制日志Binlog并生成JSON格式,用作生产者发送给Kafka、Redis等应用。

Maxwell原理

将自己伪装成MYSQL的一个salve,然后以salve的身份从master 复制数据。

Mysql 主从复制过程

master主库改变记录,写到二进制日志binary log 文件。
salve 从库I/O线程向mysql master 发送dump协议,将master主库的binary log events 拷贝到从库的中继日志relay log
salve 有个sql thread 会读取中继日志,顺序执行该日志中的sql事件,从而与主库保持一致。

binary log分类

binary log 有三种格式:statement,row,mixed

statement

语句级别,binlog每次记录执写操作的语句,比较节约空间,但是可能产生的结果不一样,例如update test set create_date=now().如果用binlog回复日志的话, 这也执行时间不同,产生的数据就不同。

row

行级别,binlog记录每次操作后的每行记录的变化,优点:保持数据的一致性,因为不管执行了什么操作,都只是记录执行后的效果。缺点:占用较大空间

mixed

混合级别,statement 升级版,默认还是statement,但是当函数包含UUID()时;包含AUTO_INCREMENT字段的表被更新时;执行INSERT DELAYED语句时;用UDF时;会按照ROW 的方式进行处理。优点:节约空间的同时还兼顾了一定的一致性。缺点:还存在个别情况会造成不一致。

maxwell 选择的binlog格式

maxwell要做监控分析,选择row格式比较适合,强一致性。

maxwell和canal对比

语言: 都是java编写
数据格式:canal格式自由,maxwell只能发送json消息
数据采集模式:canal只支持增量采集,maxwell支持全量和增量
数据落地:canal要定制才行,maxwell支持kafka等多种平台
ha:都支持

原网站

版权声明
本文为[吃再多糖也不长胖]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_43859562/article/details/126248189