4.2. 更新数据库并查看 更新 事件
现在,您已了解 Debezium MySQL 连接器如何捕获 inventory
数据库中的 create 事件,现在您将更改其中一个记录并查看连接器如何捕获它。
通过完成此步骤,您将了解如何查找有关数据库提交中更改内容的详细信息,以及如何比较更改事件,以确定何时发生更改。
流程
在运行 MySQL 命令行客户端的终端中,运行以下语句:
mysql> UPDATE customers SET first_name='Anne Marie' WHERE id=1004; Query OK, 1 row affected (0.05 sec) Rows matched: 1 Changed: 1 Warnings: 0
mysql> UPDATE customers SET first_name='Anne Marie' WHERE id=1004; Query OK, 1 row affected (0.05 sec) Rows matched: 1 Changed: 1 Warnings: 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看更新的
customers
表:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 切换到运行
kafka-console-consumer
的终端,以查看 新的 第五个事件。通过更改
customers
表中的记录,Debezium MySQL 连接器会生成新事件。您应该看到两个新的 JSON 文档:一个用于事件 键,另一个用于新事件 的值。以下是 更新 事件 的密钥 详情(针对可读性格式化):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个键 与之前事件 的密钥 相同。
在这里,新事件 的值为。
schema
部分没有更改,因此仅显示payload
部分(针对可读性格式化):Copy to Clipboard Copied! Toggle word wrap Toggle overflow Expand 表 4.1. 更新 事件值有效负载中的字段描述 项 描述 1
before
字段显示数据库提交前所在行中存在的值。原始first_name
值为Anne
。2
after
字段显示更改事件后行的状态。first_name
值现在是Anne Marie
。3
source
字段结构有许多与以前相同的值,但ts_sec
和pos
字段已更改(在其他情况下,该文件
可能已改变)。4
op
字段值现在为u
,表示此行因为更新而改变。5
ts_ms
,ts_us
,ts_ns
字段显示一个时间戳,表示 Debezium 处理此事件的时间。通过查看
payload
部分,您可以了解有关 更新 事件的几个重要事项:-
通过比较
before
和after
结构,您可以确定受影响的行中实际更改的内容,因为提交。 -
通过查看
源
结构,您可以找到有关 MySQL 的更改记录的信息(提供可追溯性)。 -
通过将事件的
payload
部分与同一主题(或不同主题)中的其他事件进行比较,您可以确定事件是否发生在之前、之后,还是作为与其他事件相同的 MySQL 提交的一部分。
-
通过比较