Maxwell简介、部署、原理和使用介绍

1.Maxwell概述简介

1-1.Maxwell简介

Maxwell是由美国Zendesk公司开源,使用Java编写的MySQL变更数据抓取软件。他会实时监控Mysql数据库的数据变更操作(包括insert、update、delete),并将变更数据以JSON的格式发送给Kafka、Kinesis、RabbitMQ、Redis、Google CloudPub/Sub、文件或其它平台等等流数据处理平台

Maxwell项目官方网站:https://maxwells-daemon.io/ Maxwell项目Github官网:https://github.com/zendesk/maxwell

1-2.Maxwell输出数据格式转化介绍

原始SQL转化为json

字段说明:

1-3.Maxwell使用场景

Maxwell 的常见应用场景有数仓ETL的数据同步 、维护缓存、收集表级别的dml 指标、增量到搜索引擎、数据分区迁移、切库 binlog 回滚方案等等

2.Maxwell架构原理

Maxwell的实现原理很简单,就是将自己伪装成MySQL的Slave,并遵循Mysql主从复制的协议,从master中同步数据。

实时读取Mysql数据库的二进制日志--Binlog,从中获取变更数据,再将变更数据以Json的格式发送至Kafka等等流处理平台( Kafka并非唯一输出途径 )

3.Maxwell安装部署

【注意】:

Maxwell-1.30.0及以上的版本不再支持JDK1.8,而JDK1.8支持的最后一个版本为1.29.2

3-1.解压安装

3-2.配置Maxwell的元数据库

  • server-id=1

    • 数据库id
  • log-bin=mysql-bin

    • 启动Binlog,该参数的值会作为binlog的文件名前缀
  • binlog_format=row

    • binlog类型,maxwell要求为row类型
  • binlog-do-db=wangtingdb

    • 启动binlog的数据库,需根据实际情况修改配置

3-3.配置Maxwell

注意:若Maxwell发送数据的目的地是kafka集群,需要首先将kafka集群启动

3-4.命令启动停止服务

4.Maxwell功能使用

4-1.增量同步数据测试

将消息格式化显示便于理解:

查看Kafka变化

查看Kafka变化

4-2.Maxwell全量数据同步

使用 Maxwell-bootstrap 命令

Maxwell提供了bootstrap命令功能来进行历史数据的全量同步,( 但依然前提要运行一个maxwell )

【注意】:

  1. 虽然是4条数据但对应了6条消息
  2. 第一条type为bootstrap-start和最后一条type为bootstrap-complete的数据,是bootstrap开始和结束的标志,不包含数据,中间的type为bootstrap-insert的才是包含数据
  3. 一次bootstrap输出的所有记录的ts都是相同的,为bootstrap开始的时间1676444947 -> 2023-02-15 15:09:07