我很高兴地宣布 Debezium 1.4.0.Alpha2 发布!

1.4 发布线的第二个版本提供了一些有用的新功能:

  • PostgreSQL Snapshotter 接口的新 API 钩子

  • 使用 ExtractNewRecordState SMT 的 add.fieldsadd.headers 配置重命名字段

总的来说,社区为这个版本修复了 37 个问题。让我们仔细看看其中的一些亮点。

PostgreSQL Snapshotter 完成钩子

PostgreSQL Snapshotter API 是一个允许自定义快照过程的契约。该 API 在 0.9.3.Final 版本中引入,并在之后发布的版本中持续演进。

添加了一个新的向后兼容的完成钩子

void snapshotCompleted()

当快照完成后,快照过程会调用这个新的钩子,允许实现清理在流式传输更改之前可能分配的任何资源。

ExtractNewRecordState SMT 字段重命名支持

ExtractNewRecordState SMT 的一个特性是转换可以保留原始消息的部分内容到转换后消息的头部或负载中。此版本扩展了此功能,允许在将字段添加到消息头部或负载时指定新名称。

例如,要使用新的重命名功能将源数据库的事件时间戳添加到消息头部,SMT 配置将是

transforms=unwrap
transforms.unwrap.type=io.debezium.transforms.ExtractNewRecordState
transforms.unwrap.add.headers=source.ts_ms:timestamp

add.headersadd.fields 配置选项的格式已得到改进,以支持字段的逗号分隔列表,语法为 <OLD_FIELD>[:NEW_FIELD]。上面发出的消息的头部现在将包含 __timestamp 而不是默认的 __source.ts_ms 字段。

此语法改进仍然向后兼容。

Bug 修复

此外,还修复了许多 Bug,例如:

  • Oracle 在运行 flashback query 时抛出“no snapshot found based on specified time” DBZ-1446

  • PK 定义先于列定义时出现异常 DBZ-2580

  • 当 Debezium 正在流式传输时,Patroni 无法停止 PostgreSQL DBZ-2617

  • ChangeRecord 信息未与 TableSchema 连接 DBZ-2679

  • MySQL 连接器在零日期时失败 DBZ-2682

  • Oracle LogMiner 不支持分区表 DBZ-2683

  • DB2 在 OCP 中启动不稳定 DBZ-2693

  • 删除列导致 SqlServerConnector 中的 NPE DBZ-2716

  • 时间戳默认值使用 'yyyy-mm-dd' 格式导致 MySQL 连接器失败 DBZ-2726

  • 写入连接超时应重试 DBZ-2727

  • 在“min”列上出现“no viable alternative at input”错误 DBZ-2738

  • SQLServer CI 错误在 SqlServerConnectorIT.whenCaptureInstanceExcludesColumnsAndColumnsRenamedExpectNoErrors:1473 DBZ-2747

  • debezium-connector-db2: DB2 SQL 错误:DB2 for z/OS 上的 SQLCODE=-206 DBZ-2755

  • 在“alter table order drop CONSTRAINT”输入时没有可行的替代 DBZ-2760

  • Macos 上的测试失败 DBZ-2762

Chris Cranford

Chris 是 IBM 的一名软件工程师,之前在 Red Hat 工作,他致力于 Debezium 项目,并每天都在深入研究 Oracle 和 Change Data Capture 的各个方面。他此前曾从事 Hibernate(领先的开源 JPA 持久化框架)方面的工作,并且继续为 Quarkus 做贡献。Chris 居住在美国北卡罗来纳州。

   


关于 Debezium

Debezium 是一个开源的分布式平台,可以将现有数据库转变为事件流,使应用程序能够几乎即时地看到并响应数据库中已提交的每个行级更改。Debezium 构建在 Kafka 之上,并提供了 Kafka Connect 兼容的连接器,用于监控特定的数据库管理系统。Debezium 将数据更改的历史记录在 Kafka 日志中,这样您的应用程序可以随时停止和重新启动,并可以轻松地消费在未运行时错过的所有事件,确保所有事件都被正确且完整地处理。Debezium 在 Apache 许可证 2.0 下是 开源 的。

参与进来

我们希望您觉得 Debezium 有趣且有用,并希望尝试一下。在 Twitter @debezium 上关注我们,在 Zulip 上与我们聊天,或加入我们的 邮件列表 与社区交流。所有代码都在 GitHub 上开源,因此请在本地构建代码,帮助我们改进现有连接器并添加更多连接器。如果您发现问题或有改进 Debezium 的想法,请告诉我们或 记录一个问题

版权所有 © Debezium 及其作者。保留所有权利。有关我们的商标详情,请访问我们的 商标政策商标列表。第三方商标属于其各自所有者,在此提及并不表示任何认可或关联。
×