我很高兴地宣布 Debezium 2.6.1.Final 现已可用。此版本是第一个维护版本,侧重于解决 2.6.0.Final 版本的一些关键稳定性问题,包括 Debezium Server 的类路径加载问题、MongoDB 静默停止收集更改,以及 Oracle Infinispan 缓冲区实现的竞争条件。

让我们花些时间来深入了解这些以及更多内容……​

新功能和改进

Debezium 2.6.1.Final 还引入了许多改进和功能,让我们逐一来看。

Oracle RAW 数据类型到 STRING 转换器

Debezium 将 RAW 列类型视为一系列字节,因此,包含 RAW 列的更改事件使用 BYTES 的 schema 类型。这是一个合理的默认设置,因为 Debezium 不知道应用程序使用 RAW 列的目的,并且它会原样打包列中的数据。然而,这可能不适合希望将数据作为 STRING 类型而不是 BYTES 类型发出的消费者应用程序。

为了帮助用户,我们引入了一个新的 RawToStringConverter,它会自动将 RAW 列作为 STRING 基于类型发出,而不是默认的 BYTESDBZ-7753)。

要配置此转换器,只需添加以下配置

converters=raw-to-string
converters.raw-to-string.type=io.debezium.connector.oracle.converters.RawToStringConverter
converters.raw-to-string.selector=.*.MY_TABLE.MY_RAW_COLUMN

selector 属性允许转换器通过提供正则表达式的逗号分隔列表,来专门定位一个或多个表中的一个或多个 RAW 列。

selector 属性是可选的,如果省略,转换器将应用于所有 RAW 列。

修复和稳定性改进

Debezium Server 快照已修复

如果您在 2.6.0.Final 中尝试使用 Debezium Server 执行或重新执行快照阶段,该过程将因获取锁的错误而失败。这个问题很快就被识别出来,因为它严重影响了在基于 2.6.0.Final 的 Debezium Server 下使用任何 Debezium 连接器的能力。

我们已调整了我们解析新 Snapshotter API 所需组件的方式,以便当类路径上存在多个连接器时,解析能够正确选择正确的组件。此外,我们还改进了 Debezium Server 测试套件,以专门查找此类问题,从而避免发布包含类似问题的构建。

Debezium Server 用户应升级到 2.6.1.Final,不要使用 2.6.0.Final。

其他修复

  • 增量快照:当数据库有 1000 张表时读取重复数据 DBZ-7716

  • SQLServerConnectorIT.shouldNotStreamWhenUsingSnapshotModeInitialOnly 检查旧的日志消息 DBZ-7729

  • 快照因无效锁错误而失败 DBZ-7732

  • 在 Oracle 11 中,V$THREAD 上查询的 CON_ID 列不可用 DBZ-7737

  • Redis NOAUTH 身份验证错误,当指定 DB 索引时 DBZ-7740

  • 在 Infinispan 中获取 Oracle 缓冲区中最旧的事务可能导致 NoSuchElementException DBZ-7741

  • MySQL Debezium 连接器重置后未进行快照。 DBZ-7743

  • MongoDb 连接器无法与负载均衡集群一起工作 DBZ-7744

  • Pod 安全上下文未从模板设置 DBZ-7749

  • 应用 MySQL binlog 客户端版本 0.29.1 - bugfix:反序列化 gtid 事务长度时读取长值 DBZ-7757

  • BufferedChangeStreamCursor 会吞噬流式异常 DBZ-7759

  • Sql-Server 连接器在初始启动/处理记录后,在后续启动时失败 DBZ-7765

  • 有效的 resume token 被视为无效,这会导致某些快照模式下进行新快照 DBZ-7770

总共有 14 个问题 在 Debezium 2.6.1.Final 中得到解决。更改列表也可以在我们的 发布说明 中找到。

非常感谢社区中所有为本次发布辛勤工作的贡献者:Andrey PustovetovAnisha MohantyChris CranfordChris RecalisJakub CechacekJiri PechanecLourens NaudéMario Fiore VitaleRobert RoldanSelman Genç

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