Debezium 3.3.0.Alpha2 已发布,带来了关键修复和强大的增强功能!
亮点包括心跳处理修复、从精确的 oplog 位置开始 MongoDB 流式传输的能力、更快的 PostgreSQL TOAST 性能、JDBC sink 中扩展的 TSVECTOR 支持,以及 PostgreSQL 中改进的发布 DDL 处理。Debezium Platform 也通过更清晰的错误消息、细粒度的 UI 日志记录以及更好的源/目标定义获得了主要的可用性提升。
新功能和改进
以下描述了 Debezium 3.3.0.Alpha2 中所有值得关注的新功能和改进。要获取完整列表,请务必阅读 发布说明 以获取更多详细信息。
心跳不再持续发出
在 Debezium 3.3.0.Alpha1 中,用户报告了在使用 heartbeat.action.query 时出现问题,即 Debezium 会持续发出心跳事件,而不管配置的间隔。此回归现已修复,heartbeat.action.query 现在应该可以再次遵循配置的 heartbeat.interval.ms (DBZ-9340)。
从特定位置启动 MongoDB
Debezium 用户现在可以通过在连接器配置中指定新的连接器配置属性 capture.start.op.time,来从 MongoDB oplog 中的特定位置启动 MongoDB 源连接器。此新配置属性应为一个 long 数据类型值,表示 Bson 时间戳 (DBZ-9240)。
| 在连接器配置中保留此配置属性将导致连接器在重启时尝试从指定位置恢复。 建议在使用此功能时,一旦连接器开始流式传输更改,就移除该属性,以便将来任何重启都能遵循连接器偏移量中的恢复位置。 |
JDBC Sink 支持 PostgreSQL TSVECTOR 数据类型
PostgreSQL Publication DDL 超时
虽然我们通常不记录内部配置属性,但我们在过去添加了一个新的内部 PostgreSQL 连接器配置属性 internal.create.slot.command.timeout,用于在创建连接器复制槽时应用 90 秒的默认超时。这是为了解决阻塞事务的问题,这些事务会阻止连接器前进,因为在事务活动期间无法创建复制槽。
我们在 Debezium 3.3 中扩展了此超时的覆盖范围,使其适用于创建和修改 PostgreSQL 连接器 Publication 的 DDL 操作 (https://issues.redhat.com/browse/DBZ-9310)。如果您注意到创建/更新 Publication 或槽时出现超时,您可能需要增加此配置属性(默认为 90)或将其设置为 0 以禁用超时功能。
改进 PostgreSQL TOAST 列性能
Debezium for PostgreSQL 的 pgoutput 解码器使用一种特定模式来确定 TOAST 列的值是否与预定义的标记对象列表匹配,这些对象表示值在更改事件中不存在。然而,当事件负载包含大型文本或二进制数据时,由于在比较之前计算哈希值的开销,这种模式的效率不高。
为了提高性能,该实现现在使用直接相等性检查,避免了对大型 TOAST 列负载进行昂贵的哈希计算(DBZ-9345)。此更改减少了处理具有大文本或二进制数据的事件时的处理开销。
SQL Server 心跳改进
SQL Server 的心跳行为现在将在 CDC 表中没有更改时发出心跳事件 (DBZ-9364)。这应该有助于确保,即使由于非捕获表的更改而导致数据库中的 LSN 继续推进,偏移量也能保持同步。
其他更改
-
增量快照偏移量在任务重启时无法加载 DBZ-9209
-
Debezium Server Azure Event Hubs sink 重复所有之前的事件 DBZ-9304
-
归档日志仅模式在没有更多可用数据时不会暂停挖掘 DBZ-9306
-
为连接创建 REST 资源 DBZ-9313
-
使用多个任务时,事件可能会被错误地处理多次 DBZ-9338
-
允许重做线程刷新 SCN 调整可配置 DBZ-9344
-
获取事务事件计数可能导致 NullPointerException DBZ-9349
-
确保 dbz 服务器启动时 JAVA_OPTS 环境变量正确 DBZ-9352
-
当字段的 schema 类型为 BYTES 时,ReselectColumnsPostProcessor 出现问题 DBZ-9356
-
MariaDB 无法解析使用 RENAME COLUMN IF EXISTS 语法的 ALTER TABLE DBZ-9358
-
当表结构更改并抛出 ORA-01466 时,Oracle 无法重新选择列 DBZ-9359
-
在创建操作中,单引号被双引号括起来 DBZ-9366
-
使用归档日志仅模式时,挖掘上限计算错误 DBZ-9370
-
由于 record.key 序列化错误,Kafka 生产者异常未正确记录 DBZ-9378
关于 Debezium
Debezium 是一个开源的分布式平台,可以将现有数据库转变为事件流,使应用程序能够几乎即时地看到并响应数据库中已提交的每个行级更改。Debezium 构建在 Kafka 之上,并提供了 Kafka Connect 兼容的连接器,用于监控特定的数据库管理系统。Debezium 将数据更改的历史记录在 Kafka 日志中,这样您的应用程序可以随时停止和重新启动,并可以轻松地消费在未运行时错过的所有事件,确保所有事件都被正确且完整地处理。Debezium 在 Apache 许可证 2.0 下是 开源 的。