什么?通过maxwell读取binlog日志,把mysql变化数据传入redis!

Maxwell 数据采集工具详解 Maxwell是一款用于MySQL数据库的开源实时变更数据捕获(CDC)工具。它能够读取MySQL的binlog,将数据变更捕获并以JSON格式推送到Kafka、Kinesis等目标系统,广泛应用于数据同步、实时处理、审计日志等场景。Maxwell具备实时性强、开源免费、多目标支持等优点,但也存在配置复杂、依赖binlog等限制。通过合理的部署和优化,Maxwell可以在复杂的数据处理系统中提供高效的实时数据捕获和推送服务。 阅读详情

Maxwell简介

Maxwell是一个能实时读取MySQL二进制日志binlog,并生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其它平台的应用程序。它的常见应用场景有ETL、维护缓存、收集表级别的dml指标、增量到搜索引擎、数据分区迁移、切库binlog回滚方案等。Maxwell给出了一些无需重新构建整个平台的事件来源的好处。大家可以通过官网下载合适的版本进行使用。Maxwell主要提供了下列功能:

  • 支持 SELECT * FROM table 的方式进行全量数据初始化
  • 支持在主库发生failover后,自动恢复binlog位置(GTID)。
  • 可以对数据进行分区,解决数据倾斜问题,发送到kafka的数据支持database、table、column等级别的数据分区。
  • 工作方式是伪装为Slave,接收binlog events,然后根据schemas信息拼装,可以接受ddl、xid、row等各种event。

MaxWell安装

Maxwell安装相对比较简单,本次主要是修改maxwell的配置文件。1.上传maxwell并解压到指定目录使用linux连接服务器工具,把maxwell.1.24.1.tar.gz上传到/soft目录下。[root@localhost bin]# tar -xvf maxwell.1.24.1.tar.gz -C /opt/maxwell

在把maxwell安装完成后,再在mysql数据库中配置maxwell用户和库。

Mysql服务配置(my.conf)

在/etc/my.conf添加以下内容,在安装mysql时,已在my.cnf文件中添加了相应内容。

[mysqld]
server_id=23
log-bin=bin-log
binlog_format=row

解释:MySQL必须开启了binlogs,即log-bin指定了目录binlog_format必须是rowserver_id指定mysql的全局唯一id

在修改mysql conf后,需要重启mysql服务

[root@localhost ~]#systemctl stop mysql
[root@localhost ~]#systemctl start mysql

或者[root@localhost ~]#service mysqld restart

Maxwell用户权限配置

Maxwell需要储存它自己的一些状态数据,启动参数schema_database选型来指定,默认是maxwell。MySQL 用户及权限配置(SQL) 创建maxwell用户,并设置密码为’123456’。mysql> CREATE USER ‘maxwell’@’%’ IDENTIFIED BY ‘123456’;

创建maxwell数据库,存储maxwell工具的一些状态数据。mysql> CREATE DATABASE IF NOT EXISTS maxwell default charset utf8 COLLATE utf8_general_ci;

对maxwell用户进行授权。

mysql> GRANT ALL on *.* to 'maxwell'@'%' identified by 'XXXXXX';
mysql> GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE on *.* to 'maxwell'@'%';

Maxwell的配置文件

  1. 在/opt/maxwell目录下创建一个config.properties文件,写入指定配置:
    [root@localhost maxwell]#vim config.properties
#[mysql]
user=maxwell    #连接mysql用户名
password=123456  #连接mysql的密码
host=192.168.1.22   # mysql的主机名(IP地址)
port=3306   #mysql端口
#[producer]
producer=redis
redis_host=127.0.0.1  
#redis服务器ip地址
redis_port=6379         
#redis的端口,默认是6379
redis_database =0       
#redis中数据库,默认为0
rredis_key=maxwell
redis_stream_json_key=message 
redis_type=pubsub

主要参数解释:

#[mysql]下的参数主要是连接mysql配置信息,填写上述创建的maxwell用户。

#[producer]下的参数是生产者相关信息

producer :生产者类型,可是kafka、redis等,本次使用

redisredis_XX : redis相关配置信息,其中redis_host本文填写的为127.0.0.1,是因为在redis配置文件中,bind配置的为127.0.0.1,如果在config.properties填写实际ip地址,maxwell会无法访问。

redis_type :选择redis的数据生成模式,目前支持[ pubsub | xadd | lpush | rpush ],默认值为pubsub。

通过以下命令启动maxwell

[root@localhost ~]#/opt/maxwell/bin/maxwell --config config.properties --filter=exclude:.,include:lipp.* --daemon

参数说明:

config:指定配置文件,一般在参数较多时,需要把相关配置写到配置文件中。

filter:过滤设置,可以通过exclude和include关键字设置排除和包含哪些数据。

daemon:指定后台运行

测试发布/订阅模式

通过上一步配置,设置的redis_type=pubsub,此模式表示创建一个发布主题,当mysql数据库发生变化时,变化的内容将被maxwell转入到redis中发布到maxwell频道,当所有订阅了此频道的订阅者都将会收到相应变化消息。

通过以上步骤,启动mysql、redis和maxwell后,开始进行简单测试1.在client1 通过redis_cli登录到redis并订阅maxwell

[root@client1 ~]# redis-cli 
127.0.0.1:6379> SUBSCRIBE maxwell
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "maxwell"
3) (integer) 1

2.在client2中登录mysql并向lipp数据库中表增加数据。

[root@client2 ~]# mysql -uroot -p111111
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 300
Server version: 5.7.23-log MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use lipp;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> insert into t1 values(1,'test101');

3.在client1可以看到maxwell channel的输出

1) "message"
2) "maxwell"
3) "{\"database\":\"lipp\",\"table\":\"t1\",\"type\":\"insert\",\"ts\":1584279262,\"xid\":7726,\"commit\":true,\"data\":{\"id\":1,\"name\":\"test101\"}}"

测试list模式

1.修改maxwell目录下的conf.preporties文件中redis_type=lpush,后重启maxwell服务。

maxwell                          RUNNING   pid 11366, uptime 0:00:08

2.在client1 通过redis_cli登录redis中,并查看当前库中有多少key

[root@client1 ~]# redis-cli 
127.0.0.1:6379> DBSIZE
(integer) 0

目前0号库中没有key。

3.在client2 登录mysql数据库中,并在指定表插入数据。

mysql> insert into t1 values(1,'wangwu');
Query OK, 1 row affected (0.00 sec)

4.在client1中通过dbsize再次查看数据库大小

127.0.0.1:6379> DBSIZE
(integer) 1

通过keys 查看key名称,并通过type查看key的类型。

127.0.0.1:6379> keys *
1) "maxwell"
127.0.0.1:6379> type maxwell
list

当key的类型问list时,可以使用list相关命令进行对key操作。通过llen查看key的长度

127.0.0.1:6379> llen maxwell
(integer) 1

通过lrange命令查看key的内容

127.0.0.1:6379> LRANGE maxwell 0 10
1)"{\"database\":\"lipp\",\"table\":\"t1\",\"type\":\"insert\",\"ts\":1584286244,\"xid\":15381,\"commit\":true,\"data\":{\"id\":1,\"name\":\"wangwu\"}}"

通过lpop或rpop 弹出key中的值

127.0.0.1:6379> LPOP maxwell
"{\"database\":\"lipp\",\"table\":\"t1\",\"type\":\"insert\",\"ts\":1584286244,\"xid\":15381,\"commit\":true,\"data\":{\"id\":1,\"name\":\"wangwu\"}}"

通过修改redis_type的参数为pubsub和lpush,可以实现监控mysql数据库变化,通过发布订阅模式,实现数据同步功能。通过list方式可以获取最新的数据的变化和数据变化数量等需求。

本文只是演示了maxwell读取binlog到redis,其实maxwell可以实现多种producer方式,如kafka,pubsub、redis、自定义等。具体可以通过官网了解,也可以到github了解。

通过maxwell读取binlog日志,把mysql变化数据传入redis Maxwell简介 Maxwell是一个能实时读取MySQL二进制日志binlog,并生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其它平台的应用程序。它的常见应用场景有ETL、维护缓存、收集表级别的dml指标、增量到搜索引擎、数据分区迁移、切库binlog回滚方案等。Maxwell给出了一... 阅读详情

相关推荐

MySQL数据库

MySQL 基础知识点摘要 查询语句区别 WHERE vs HAVING:WHERE在分组前过滤行,不能直接使用聚合函数;HAVING在分组后过滤分组数据,可使用聚合函数 UNION vs UNION ALL:UNION自动去重但性能较慢,UNION ALL保留所有记录且性能更快 IN vs EXISTS:IN先执行子查询再匹配,适合主查询结果集大;EXISTS主查询每行执行子查询,适合主查询结果集小 数据操作区别 DELETE:删除指定行,记录日志,不重置自增ID,空间标记为可重用 TRUNCATE:清空

weixin_54017681的博客 382

maxwell 输出消息到 redis

Reference - Maxwell’s Daemon:https://maxwells-daemon.io/config/ redis-producer:https://maxwells-daemon.io/config/#redis-producer 您提供的命令是一个Docker命令,用于运行Zendesk Maxwell这个容器化应用程序。Maxwell是一个变更数据捕获(CDC)工具,用于从MySQL数据库捕获变更事件并将它们发布到其他系统,如Redis、Kafka等。下面是对该命令的详细解

小丁的博客 1419

【实时数仓】业务数据采集之Maxwell的介绍、底层原理、安装及初始化、监控功能、采集服务和MySQL的binlog

将业务数据从MySQL数据库采集到kafka属于CDC(Change Data Capture)操作,实现CDC有两种方式全表扫描:使用sqoop,会丢失一些数据,只能拿到数据的最终状态。如订单状态:待支付、已支付、待发货、已发货、已收货、评价、完成。使用sqoop只会获取“完成”状态的订单,这种现象称为“状态丢失”。对于离线统计没有统计订单状态的需求,只得到最终结果即可,但对实时计算来说,订单的状态变化十分重要。基于Binglog获取新增和变化的数据:常见框架有阿里的canal、maxwell。整体流程如

weixin_43923463的博客 3233

如何使用 maxwell 同步到 redis?

接下来,你需要一个消费者程序来监听消息队列(如Kafka),读取Maxwell发送的变更事件,并将这些事件同步到Redis。这个消费者程序可以用Java编写,使用相应的消息队列客户端库(如Kafka的Java客户端)来读取消息,并使用Jedis或Lettuce等Redis客户端库来与Redis交互。,简称CDC)的工具,它可以将MySQL的binlog事件转换成JSON格式,并发送到消息系统中,如Kafka、RabbitMQ等。Maxwell可以将捕获的变更事件发送到消息队列系统,如Kafka。

小丁的博客 1309

《数据同步-Maxwell系列》maxwell订阅MySQL的binlog日志并生产到Kafka传输数据

2.Canal只能抓取最新数据,对已存在的历史数据没有办法处理。Maxwell提供一个bootstrap功能,可以直接引导出完整的历史数据用于初始化。1.Canal有server+client模式,Maxwell只有一个server把数据发送到消息队列或redis。4.Canal在server+client模式下,可以自定义数据格式。3.Maxwell不支持HA,需要自行开发。但支持断电还原,即错误解决后重启继续上次位置读取数据。6.Maxwell需要在数据库中建立Maxwell库。

https://blog.datasource.space 2332

【信息科学与工程学】计算机科学与自动化 第二百零一十一 软件开发模型01

编号类型模型领域模型中的知识点/因素/参数关联知识和法律法规1传统顺序模型瀑布模型 (Waterfall)通用软件开发、硬件紧密耦合系统、政府/军工项目、需求稳定的传统信息系统严格线性阶段:可行性研究→需求分析(SRS,含功能/非功能/接口/约束,使用IEEE 830模板)→系统设计(概要设计HLD:架构、模块划分、数据库ER图;详细设计LLD:伪代码、类图、接口定义)→实现(编码规范、代码审查、静态分析工具SonarQube)→测试(单元测试JUnit、集成测试、系统测试、验收测试UAT,测试计划提前编写

weixin_49199313的博客 167

实时数仓之Maxwell读取MySQL binlog日志到Kafka

1.启动MySQL 2.创建maxwell的数据库和用户 3.在MySQL中创建一个测试数据库和表 前3步详细步骤见实时数仓之Maxwell读取MySQL binlog日志 4.启动zookeeper [hadoop@hadoop001 ~]$ cd ZKHOME/bin[hadoop@hadoop001bin]ZK_HOME/bin [hadoop@hadoop001 bin]ZKH​OME/b...

xuxu96 1633

图书管理系统数据库设计:事务隔离、并发更新与高可用表结构实战

数据库事务隔离与并发控制是关系型数据库的核心基础概念,直接影响库存扣减、状态流转等关键业务的正确性。其底层依赖于锁机制、MVCC多版本并发控制及隔离级别配置,在MySQL中具体体现为SELECT ... FOR UPDATE、UPDATE WHERE原子条件、CHECK约束与触发器等工程化手段。技术价值在于保障数据一致性与系统可靠性,广泛应用于图书馆管理、电商库存、订单履约等强一致性场景。本文聚焦真实图书管理系统,深入解析借阅归还过程中的库存负值、状态机越界、索引失效等高频并发问题,结合MySQL 8.0+

weixin_34242331的博客 457

MaxWell监控本地数据库/RDS数据库的配置与使用

MaxWell监控本地数据库/RDS数据库的配置与使用 背景:maxwell的核心原理是根据mysql的binlog,模拟mysql的从机,通过监控binlog的变化来进行数据的同步传输工作 步骤:maxwell监控指定目标的mysql数据库,写入数据到kafka/redis,通过传输工具进行同步更新数据 第一步 安装 # 备注 maxwell1.30不支持java8 # 下载 https://github.com/zendesk/maxwell/releases/download/v1.29.2/maxw

不断努力的数据汪 2290

Maxwell15 16官方教程

电机设计仿真软件ansoft maxwell 官方教程。非常适合自学

一文搞定 GitHub SSH Key:生成、配置、好处全攻略

本文详细介绍了如何配置GitHub SSH Key,实现免密安全认证。主要内容包括:SSH协议的四大优势(免密登录、安全性高、稳定省心、支持自动化);Git身份配置步骤;检查本地SSH Key;生成RSA密钥对;添加密钥到SSH代理;复制公钥到GitHub;测试连接。配置完成后,开发者可通过SSH地址克隆仓库,实现push/pull全程免密操作。该方案显著提升Git使用效率,同时保障安全性,是开发者必备技能。

qq_62904883的博客 960

binlog日志_什么?通过maxwell读取binlog日志,把mysql变化数据传入redis!

Maxwell简介Maxwell是一个能实时读取MySQL二进制日志binlog,并生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其它平台的应用程序。它的常见应用场景有ETL、维护缓存、收集表级别的dml指标、增量到搜索引擎、数据分区迁移、切库binlog回滚方案等。Maxwell给出了一些无...

weixin_39622289的博客 154

FPGA实战:从零构建eMMC控制器(Verilog篇)

本文详细介绍了如何使用Verilog从零构建FPGA上的eMMC控制器,涵盖eMMC接口基础、命令系统解析、关键模块设计及性能优化技巧。通过实战案例,帮助开发者掌握高速数据存储解决方案,提升嵌入式系统开发能力。

weixin_26802933的博客 298

Flink通过Maxwell读取mysql的binlog发送到kafka再写入mysql

JDK1.8MySQLZookeeperKakfaMaxweillIDEA查看binlog 状态,是否开启 如果log_bin显示为ON,则代表已开启。如果是OFF 说明还没开启。[Linux] 编辑 /etc/my.cnf 文件,在[mysqld]后面增加 重启mysql 服务 再次查看binlog 状态[Windows] 编辑 mysql安装目录 下 my.ini 文件,在[mysqld]后面增加 如上 linux 一样 2.2.2启动 Kakfa 2.2.3创建 kafka-t

小健的博客 2026

SPSS&Mplus—共同方法偏差(Common Method Bias)控制与检验

共同方法偏差(Common Method Bias)的控制方法:程序控制(Procedural)和统计控制(Statistical)。

m0_54401011的博客 1万+

CMOS反相器版图设计全解析:PMOS/NMOS布局与VDD/VSS连接门道

版图设计是芯片从电路原理图迈向物理实现的必经桥梁,而CMOS反相器作为最基础的数字单元,恰好是理解这一过程的最佳切入点。在版图绘制中,PMOS与NMOS因导电类型和迁移率差异,需要在N阱与P衬底上分别规划,并呈现出不同的有源区尺寸。真正决定版图好坏的关键,往往在于VDD/VSS的完整连接——不仅要接通源漏,还要通过阱接触和衬底接触固定阱与衬底电位,防止寄生PN结正偏和闩锁效应。合理布局电源地线轨道、优化接触孔数量,能显著降低寄生电阻与电迁移风险。这些原理不仅适用于反相器,也是所有CMOS数字标准单元版图设计

weixin_29159441的博客 305

大数据之使用Maxwell采集MySQL的binlog日志并上传到Kafka

本题来源于2022 年全国职业院校技能大赛(高职组)“大数据技术与应用”赛项(电商)- 实时数据采集。Maxwell是如何监控到数据的,Maxwell读取MySQL的binlog数据并将其转换为易于读取和处理的JSON格式。具体地,它通过连接到MySQL实例的MySQL Slave复制进程来读取binlog数据流,并解析每个事务的事件,生成一个包含当前事件的JSON对象,并将其输出到目标输出源(例如Kafka)。在大数据分析和数据同步场景中,这种机制可以大大简化数据的采集和处理,并实现实时的数据同步。

Eternity.Arrebol的博客 2569

制造业私有化LLM部署实战:从RAG到智能体,构建企业专属知识大脑

大型语言模型(LLM)作为人工智能的核心技术,通过在海量文本数据上进行预训练,具备了强大的语言理解和生成能力。其原理在于基于Transformer架构,通过自注意力机制捕捉长距离语义依赖。这一技术价值在于能将非结构化信息转化为可计算、可推理的知识,从而赋能企业实现知识的高效管理与应用。在制造业等强数据安全与知识密集型领域,私有化部署的LLM结合检索增强生成(RAG)和智能体(Agent)技术,能够深入业务流程,构建安全、专属的智能知识中枢。本文聚焦于如何利用Qwen、LangChain、向量数据库等技术栈,

weixin_42523711的博客 249

启动redis和启动maxwell

redis-server /etc/redis.conf /opt/module/maxwell-1.27.1/bin/maxwell --config /opt/module/maxwell-1.27.1/config.properties --daemon

weixin_56765170的博客 362

企业微信/飞书/钉钉扫码连WiFi保姆级教程(附访客授权技巧)

本文提供了一份企业微信、飞书、钉钉扫码连接WiFi的实战部署教程。通过集成标准Radius协议与OAuth 2.0,企业可实现基于身份的无密码网络认证,并详细介绍了访客授权、权限分级等精细化管理技巧,有效提升无线网络的安全性与员工体验。

t4y5u6i7o的博客 1196

UNet 改进(22):结合Transformer结构

保留了UNet的经典编码器-解码器结构在瓶颈层使用Transformer替代传统的卷积层采用跳跃连接保持空间细节信息使用双卷积块(DoubleConv)作为基础构建模块。

2401_82355416的博客 775

Maxwell采集MySQL的binlog日志

提示:本文是在Linux上的操作。

m0_70673163的博客 982

华为MetaERP在财务模块(GL/AP/AR/FA)及子账模块效率优化、月末关账加速、与外部系统对账方面,已形成一套**“并行+实时+智能化”**的完整技术方案

华为MetaERP推出"并行+实时+智能化"技术方案,显著提升财务模块效率:1)采用三级并行策略和内存计算,使子账模块单任务处理时间从142分钟降至9分钟;2)通过并行关账架构将月末关账时间从68小时压缩至7.2小时;3)运用AI智能对账提升效率50%,并支持异步流程和区块链审计。典型场景测试显示月结耗时下降89%,CPU利用率提升116%。方案建议分阶段实施,注意依赖分析、任务粒度设计和性能监控,避免过度并行。该方案已有效解决大型集团财务处理效率低、关账慢、对账难等痛点。

金牌架构师 561

Maxwell 和 canal 工具对比

➢ Maxwell 没有 canal 那种 server+client 模式,只有一个 server 把数据发送到消息队列 或 redis。如果需要多个实例,通过指定不同配置文件启动多个进程。 ➢ Maxwell 有一个亮点功能,就是 canal 只能抓取最新数据,对已存在的历史数据没有办 法处理。而 Maxwell 有一个 bootstrap 功能,可以直接引导出完整的历史数据用于初 始化,非常好用。 ➢ Maxwell 不能直接支持 HA,但是它支持断点还原,即错误解决后重启继续上次点儿读 取数据。 ➢

xie670705986的博客 1398

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

OV9734 DATASHEET,完整规格书

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

MySQL-To-JSON 的 Kafka 生产者

Maxwell 是一个读取 MySQL binlogs 并将修改行字段的更新写入 Kafka, Kinesis, RabbitMQ, Google Cloud Pub/Sub 或 Redis (Pub/Sub or LPUSH) 以作为 JSON 的应用程序。 Maxwell 拥有可对底层进行操作的操作栏(operational bar),可生成一致、...

weixin_34041003的博客 543

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

MAXWELL系列(一)-利用maxwell 解析binlog 到 redis

今天猪脚是maxwell,zendesk公司开源https://github.com/zendesk/maxwell 先看架构,和他竞争的有Debezium Connector for MySQL 废话不多说,搭建目标任务 mysql的binlog 到redis (192.168.0.1 ~~~~~~~192.168.0.3) 1:下载https://github.co...

weixin_33686714的博客 692

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

上一篇: 被说烂了的Java垃圾回收算法,我带来了最“清新脱俗”的详细图解
下一篇: 混不上管理层,加不动班,说好的前程似锦却不见未来,中年Java架构师的崩溃之路!
JavaCaiy
博客等级 码龄6年 1万+粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值