47.功能 1:数据采集实现(Maxwell)

2024-01-22 22:58

本文主要是介绍47.功能 1:数据采集实现(Maxwell),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

3.1 Maxwell 介绍
Maxwell 是由美国 zendesk 开源,用 java 编写的 Mysql 实时抓取软件, 其抓取的
原理也是基于 binlog。
3.2 Maxwell 和 canal 工具对比
Maxwell 没有 canal 那种 server+client 模式,只有一个 server 把数据发送到消息队列
或 redis。如果需要多个实例,通过指定不同配置文件启动多个进程。
Maxwell 有一个亮点功能,就是 canal 只能抓取最新数据,对已存在的历史数据没有办
法处理。而 Maxwell 有一个 bootstrap 功能,可以直接引导出完整的历史数据用于初
始化,非常好用。
Maxwell 不能直接支持 HA,但是它支持断点还原,即错误解决后重启继续上次点儿读
取数据。
Maxwell 只支持 json 格式,而 Canal 如果用 Server+client 模式的话,可以自定义格
式。
Maxwell 比 Canal 更加轻量级。
3.3 安装 Maxwell
将 2.资料\02-工具下的 maxwell-1.25.0.tar.gz 上传到/opt/software 目录下
解压 maxwell-1.25.0.tar.gz 到/opt/module 目录
[atguigu@hadoop202 module]$ tar -zxvf /opt/software/maxwell-1.25.0.tar.gz -C /opt/module/
3.4 使用前准备工作
在数据库中建立一个 maxwell 库用于存储 Maxwell 的元数据
[atguigu@hadoop202 module]$ mysql -uroot -p123456
mysql> CREATE DATABASE maxwell ;
分配一个账号可以操作该数据库
mysql> GRANT ALL ON maxwell.* TO 'maxwell'@'%' IDENTIFIED BY '123456';
分配这个账号可以监控其他数据库的权限
mysql> GRANT SELECT ,REPLICATION SLAVE , REPLICATION CLIENT ON *.* TO maxwell@'%';
3.5 使用 Maxwell 监控抓取 MySQL 数据
拷贝配置文件
[atguigu@hadoop202 maxwell-1.25.0]$ cp config.properties.example config.properties
修改配置文件

 

注意:默认还是输出到指定 Kafka 主题的一个 kafka 分区,因为多个分区并行可能会打乱
binlog 的顺序
如果要提高并行度,首先设置 kafka 的分区数>1,然后设置 producer_partition_by 属性
可选值 producer_partition_by=database|table|primary_key|random| column
 
在/home/atguigu/bin 目录下编写 maxwell.sh 启动脚本
[atguigu@hadoop202 maxwell-1.25.0]$ vim /home/atguigu/bin/maxwell.sh
/opt/module/maxwell-1.25.0/bin/maxwell --config /opt/module/maxwell-1.25.0/config.properties >/dev/null 2>&1 &
授予执行权限
[atguigu@hadoop202 maxwell-1.25.0]$ sudo chmod +x /home/atguigu/bin/maxwell.sh
运行启动程序
[atguigu@hadoop202 maxwell-1.25.0]$ maxwell.sh

 

启动 Kafka 消费客户端,观察结果
[atguigu@hadoop202 kafka]$ bin/kafka-console-consumer.sh --bootstrap-server
hadoop202:9092 --topic gmall2020_db_m
执行/opt/module/rt_dblog 下的 jar 生成模拟数据

 

3.6 Maxwell 版本的 ODS 层处理
3.6.1 执行不同操作,Maxwell 和 canal 数据格式对比
执行 insert 测试语句
INSERT INTO z_user_info VALUES(30,'zhang3','13810001010'),(31,'li4','1389999999');

 

 

执行 update 操作
UPDATE z_user_info SET user_name='wang55' WHERE id IN(30,31)

 

delete 操作
DELETE FROM z_user_info WHERE id IN(30,31)

 

3.6.2 总结数据特点
日志结构
canal 每一条 SQL 会产生一条日志,如果该条 Sql 影响了多行数据,则已经会通过集
合的方式归集在这条日志中。(即使是一条数据也会是数组结构)
maxwell 以影响的数据为单位产生日志,即每影响一条数据就会产生一条日志。如果
想知道这些日志是否是通过某一条 sql 产生的可以通过 xid 进行判断,相同的 xid 的日志来
自同一 sql。
数字类型
当原始数据是数字类型时,maxwell 会尊重原始数据的类型不增加双引,变为字符串。
canal 一律转换为字符串。
带原始数据字段定义
canal 数据中会带入表结构。maxwell 更简洁。
3.6.3 SparkStreaming 对 Topic 分流业务代码

 

 

 

3.6.4 测试
启动 Redis
启动 Maxwell
运行 BaseDBMaxwellApp 程序
查看 kafka 下的主题
[atguigu@hadoop202 kafka]$ bin/kafka-console-consumer.sh --bootstrap-server
hadoop202:9092 --topic ods_order_info
运行/opt/module/rt_dblog 模拟生成日志

这篇关于47.功能 1:数据采集实现(Maxwell)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/634509

相关文章

C#借助Spire.XLS for .NET实现在Excel中添加文档属性

《C#借助Spire.XLSfor.NET实现在Excel中添加文档属性》在日常的数据处理和项目管理中,Excel文档扮演着举足轻重的角色,本文将深入探讨如何在C#中借助强大的第三方库Spire.... 目录为什么需要程序化添加Excel文档属性使用Spire.XLS for .NET库实现文档属性管理Sp

Python+FFmpeg实现视频自动化处理的完整指南

《Python+FFmpeg实现视频自动化处理的完整指南》本文总结了一套在Python中使用subprocess.run调用FFmpeg进行视频自动化处理的解决方案,涵盖了跨平台硬件加速、中间素材处理... 目录一、 跨平台硬件加速:统一接口设计1. 核心映射逻辑2. python 实现代码二、 中间素材处

Java数组动态扩容的实现示例

《Java数组动态扩容的实现示例》本文主要介绍了Java数组动态扩容的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1 问题2 方法3 结语1 问题实现动态的给数组添加元素效果,实现对数组扩容,原始数组使用静态分配

Python实现快速扫描目标主机的开放端口和服务

《Python实现快速扫描目标主机的开放端口和服务》这篇文章主要为大家详细介绍了如何使用Python编写一个功能强大的端口扫描器脚本,实现快速扫描目标主机的开放端口和服务,感兴趣的小伙伴可以了解下... 目录功能介绍场景应用1. 网络安全审计2. 系统管理维护3. 网络故障排查4. 合规性检查报错处理1.

MySQL快速复制一张表的四种核心方法(包括表结构和数据)

《MySQL快速复制一张表的四种核心方法(包括表结构和数据)》本文详细介绍了四种复制MySQL表(结构+数据)的方法,并对每种方法进行了对比分析,适用于不同场景和数据量的复制需求,特别是针对超大表(1... 目录一、mysql 复制表(结构+数据)的 4 种核心方法(面试结构化回答)方法 1:CREATE

Python轻松实现Word到Markdown的转换

《Python轻松实现Word到Markdown的转换》在文档管理、内容发布等场景中,将Word转换为Markdown格式是常见需求,本文将介绍如何使用FreeSpire.DocforPython实现... 目录一、工具简介二、核心转换实现1. 基础单文件转换2. 批量转换Word文件三、工具特性分析优点局

Springboot3统一返回类设计全过程(从问题到实现)

《Springboot3统一返回类设计全过程(从问题到实现)》文章介绍了如何在SpringBoot3中设计一个统一返回类,以实现前后端接口返回格式的一致性,该类包含状态码、描述信息、业务数据和时间戳,... 目录Spring Boot 3 统一返回类设计:从问题到实现一、核心需求:统一返回类要解决什么问题?

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

Java使用Spire.Doc for Java实现Word自动化插入图片

《Java使用Spire.DocforJava实现Word自动化插入图片》在日常工作中,Word文档是不可或缺的工具,而图片作为信息传达的重要载体,其在文档中的插入与布局显得尤为关键,下面我们就来... 目录1. Spire.Doc for Java库介绍与安装2. 使用特定的环绕方式插入图片3. 在指定位

Java使用Spire.Barcode for Java实现条形码生成与识别

《Java使用Spire.BarcodeforJava实现条形码生成与识别》在现代商业和技术领域,条形码无处不在,本教程将引导您深入了解如何在您的Java项目中利用Spire.Barcodefor... 目录1. Spire.Barcode for Java 简介与环境配置2. 使用 Spire.Barco