文章目录
7. 业务数据采集模块
7.1 采集通道
7.1.1 业务数据通道

7.2 采集工具
7.2.1 Maxwell简介
7.2.1.1 Maxwell概述
Maxwell 是由美国Zendesk公司开源,用Java编写的MySQL变更数据抓取软件。它会实时监控Mysql数据库的数据变更操作(包括insert、update、delete),并将变更数据以 JSON 格式发送给 Kafka、Kinesi等流数据处理平台。官网地址:http://maxwells-daemon.io/
7.2.1.2 Maxwell输出数据格式
注:Maxwell输出的json字段说明:
| 字段 | 解释 |
|---|---|
| database | 变更数据所属的数据库 |
| table | 表更数据所属的表 |
| type | 数据变更类型 |
| ts | 数据变更发生的时间 |
| xid | 事务id |
| commit | 事务提交标志,可用于重新组装事务 |
| data | 对于insert类型,表示插入的数据;对于update类型,标识修改之后的数据;对于delete类型,表示删除的数据 |
| old | 对于update类型,表示修改之前的数据,只包含变更字段 |
7.2.2 Maxwell原理
Maxwell的工作原理是实时读取MySQL数据库的二进制日志(Binlog),从中获取变更数据,再将变更数据以JSON格式发送至Kafka等流处理平台。
7.2.2.1 MySQL二进制日志
二进制日志(Binlog)是MySQL服务端非常重要的一种日志,它会保存MySQL数据库的所有数据变更记录。Binlog的主要作用包括主从复制和数据恢复。Maxwell的工作原理和主从复制密切相关。
7.2.2.2 MySQL主从复制
MySQL的主从复制,就是用来建立一个和主数据库完全一样的数据库环境,这个数据库称为从数据库。
7.2.2.2.1 主从复制的应用场景如下
(1)做数据库的热备:主数据库服务器故障后,可切换到从数据库继续工作。
(2)读写分离:主数据库只负责业务数据的写入操作,而多个从数据库只负责业务数据的查询工作,在读多写少场景下,可以提高数据库工作效率。
7.2.2.2.2 主从复制的工作原理如下
(1)Master主库将数据变更记录,写到二进制日志(binary log)中
(2)Slave从库向mysql master发送dump协议,将master主库的binary log events拷贝到它的中继日志(relay log)
(3)Slave从库读取并回放中继日志中的事件,将改变的数据同步到自己的数据库。

7.2.2.3 Maxwell原理
很简单,就是将自己伪装成slave,并遵循MySQL主从复制的协议,从master同步数据。重播的数据是JSON格式,不会将数据写入表中,而是将数据传给kafka。
Maxwell数据同步实践

本文介绍Maxwell数据抓取工具的原理与部署流程,重点讲解如何利用Maxwell监控MySQL变更数据,并将其以JSON格式发送至Kafka等流处理平台。
最低0.47元/天 解锁文章
1173





