第 3 章 Db2 的 Debezium 连接器
Debezium 的 Db2 连接器可以捕获 Db2 数据库表中的行级更改。有关与此连接器兼容的 Db2 数据库版本的详情,请参考 Debezium 支持的配置页面。
这个连接器主要由 SQL Server 的 Debezium 实施而利用,它使用基于 SQL 的轮询模型将表置于"捕获模式"。当表处于捕获模式时,Debebe Db2 连接器会为该表的每一行级更新生成并流传输更改事件。
处于捕获模式的表具有一个关联的 change-data 表,Db2 创建它。对于处于捕获模式的表的每个更改,Db2 都会向表的相关 change-data 表添加有关该更改的数据。change-data 表包含一行状态的条目。它还具有用于删除的特殊条目。Debezium Db2 连接器从 change-data 表中读取更改事件,并将事件发送到 Kafka 主题。
当 Debezium Db2 连接器连接到 Db2 数据库时,连接器会读取连接器配置为捕获更改的表的一致性快照。默认情况下,这是所有非系统表。有连接器配置属性,允许您指定要放入捕获模式的表,或者从捕获模式中排除哪些表。
快照完成后,连接器开始向处于捕获模式的表发出提交更新的更改事件。默认情况下,更改特定表的事件进入一个 Kafka 主题,其名称与表相同。应用程序和服务消耗从这些主题更改事件。
连接器需要使用抽象语法表示法(ASN)库,该库作为 Linux 的 Db2 的标准部分提供。要使用 ASN 库,您必须有 IBM InfoSphere Data Replication (IIDR)的许可证。您不必安装 IIDR 来使用 ASN 库。
使用 Debezium Db2 连接器的信息和流程进行组织如下:
3.1. Debezium Db2 连接器概述
Debezium Db2 连接器基于 ASN Capture/Apply 代理,用于在 Db2 中启用 SQL 复制。捕获代理:
- 为处于捕获模式的表生成 change-data 表。
- 以捕获模式监控表,并将更改事件存储在对应的 change-data 表中。
Debezium 连接器使用 SQL 接口来查询 change-data 表以更改事件。
数据库管理员必须将要捕获更改的表置于捕获模式。为方便起见,在 C 中有 Debezium 管理用户定义的功能(UDF),您可以编译,然后使用 进行以下管理任务:
- 启动、停止和重新初始化 ASN 代理
- 将表置于捕获模式
- 创建复制(ASN)模式和 change-data 表
- 从捕获模式中删除表
或者,您可以使用 Db2 控制命令来完成这些任务。
在感兴趣的表处于捕获模式后,连接器会读取对应的 change-data 表,以获取表更新的更改事件。连接器会为每行级别的插入、更新和删除操作发出一个更改事件到与更改表相同的 Kafka 主题。这是您可以修改的默认行为。客户端应用程序读取与感兴趣的数据库表对应的 Kafka 主题,并可响应每行级别的更改事件。
通常,数据库管理员在表生命周期中将表置于捕获模式。这意味着连接器没有对表所做的任何更改的完整历史记录。因此,当 Db2 连接器第一次连接到特定的 Db2 数据库时,它首先对处于捕获模式的每个表执行 一致的快照。连接器完成快照后,连接器流会从进行快照的点更改事件。这样,连接器从处于捕获模式的表的统一视图开始,且不会丢弃执行快照时所做的任何更改。
Debezium 连接器可以容错失败。当连接器读取并生成更改事件时,它会记录 change-data 表条目的日志序列号(LSN)。LSN 是更改事件在数据库日志中的位置。如果连接器因任何原因而停止,包括通信失败、网络问题或崩溃,则继续读取它离开的 change-data 表。这包括快照。也就是说,如果连接器在重启连接器开始新快照时没有完成快照。