我很高兴地宣布 Debezium 1.4.0.Alpha2 发布!
1.4 发布线的第二个版本提供了一些有用的新功能:
-
PostgreSQL
Snapshotter接口的新 API 钩子 -
使用
ExtractNewRecordStateSMT 的add.fields和add.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.headers 和 add.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
orderdrop CONSTRAINT”输入时没有可行的替代 DBZ-2760 -
Macos 上的测试失败 DBZ-2762
关于 Debezium
Debezium 是一个开源的分布式平台,可以将现有数据库转变为事件流,使应用程序能够几乎即时地看到并响应数据库中已提交的每个行级更改。Debezium 构建在 Kafka 之上,并提供了 Kafka Connect 兼容的连接器,用于监控特定的数据库管理系统。Debezium 将数据更改的历史记录在 Kafka 日志中,这样您的应用程序可以随时停止和重新启动,并可以轻松地消费在未运行时错过的所有事件,确保所有事件都被正确且完整地处理。Debezium 在 Apache 许可证 2.0 下是 开源 的。