Maxwell1.29.x type事件类型(bootstrap-start、bootstrap-complete、bootstrap-insert、insert、update、delete)

介绍

Maxwell 能够将 MySQL 的 binlog 解析为 JSON 格式的变更事件,通过 事件类型 标识数据变更的不同阶段或操作类型,如下:

  • bootstrap-start
  • bootstrap-complete
  • bootstrap-insert
  • insert
  • update
  • delete

全量同步事件(bootstrap 开头)

当 Maxwell 首次连接到 MySQL 或配置了 bootstrap 模式时,会先进行全量数据同步(读取已有数据),再监听增量变更。这三类事件用于标识全量同步的过程:

bootstrap-start

  • 含义:全量同步开始的标志事件。
  • 触发时机:Maxwell 开始全量读取某个表的数据时发出。
  • 事件内容:包含数据库名(database)、表名(table)等元信息,无具体数据。

例子:

{
    "type": "bootstrap-start",
    "database": "test",
    "table": "user",
    "ts": 1620000000
}

bootstrap-insert

  • 含义:全量同步过程中读取的表中已有数据,本质是“历史数据的插入事件”。
  • 触发时机:Maxwell 逐条读取表中现有数据时,每条数据对应一个该事件。
  • 事件内容:包含表的全量字段和值,类似 insert 事件,但类型为 bootstrap-insert。

例子:

{
    "type": "bootstrap-insert",
    "database": "test",
    "table": "user",
    "data": { "id": 1, "name": "Alice", "age": 20 },
    "ts": 1620000001
}

bootstrap-complete

  • 含义:全量同步完成的标志事件。
  • 触发时机:Maxwell 完成某个表的全量数据读取后发出。
  • 事件内容:与 bootstrap-start 对应,标识全量同步结束。

例子:

{
    "type": "bootstrap-complete",
    "database": "test",
    "table": "user",
    "ts": 1620000002
}

作用:通过这三类事件,下游系统可以区分“历史全量数据”和“实时增量变更”,便于初始化数据或全量校验。

增量变更事件

全量同步完成后,Maxwell 会持续监听 MySQL 的 binlog,将实时数据变更解析为以下事件:

insert

  • 含义:插入事件,标识有新数据插入表中。
  • 事件内容:data 字段包含插入的完整记录(所有字段和值)。

例子:

{
    "type": "insert",
    "database": "test",
    "table": "user",
    "data": { "id": 3, "name": "Charlie", "age": 25 },
    "ts": 1620000003
}

update

  • 含义:更新事件,标识表中已有数据被修改。
  • 事件内容:
    • data 字段:更新后的最新数据(所有字段)。
    • old 字段(可选):更新前的旧数据(仅包含被修改的字段,需 MySQL 开启 binlog_row_image=FULL 才能获取完整旧值)。

例子:

{
    "type": "update",
    "database": "test",
    "table": "user",
    "data": { "id": 1, "name": "Alice", "age": 21 },  // 新值
    "old": { "age": 20 },  // 旧值(仅修改的字段)
    "ts": 1620000004
}

delete

  • 含义:删除事件,标识表中数据被删除。
  • 事件内容:data 字段包含被删除的记录(删除前的完整数据)。

例子:

{
    "type": "delete",
    "database": "test",
    "table": "user",
    "data": { "id": 2, "name": "Bob", "age": 22 },  // 被删除的记录
    "ts": 1620000005
}

总结

事件类型 触发场景 核心作用
bootstrap-start 全量同步开始 标识某张表的全量读取开始
bootstrap-insert 全量同步过程中 输出表中已有的历史数据(全量初始化)
bootstrap-complete 全量同步结束 标识某张表的全量读取完成
insert 实时插入新数据 捕获新增记录
update 实时更新数据 捕获记录的修改(包含新旧值)
delete 实时删除数据 捕获被删除的记录

这些事件可以被 Kafka、RabbitMQ 等消息中间件接收,下游系统(如 Flink、Spark、Elasticsearch 等)通过消费这些事件实现数据同步、实时分析等功能。


原文出处:/show_1GW1fV0FPDak.html