社区正朝着 Debezium 的下一个主要里程碑迈进,我们很高兴地宣布 Debezium 3.0.0.CR1 的可用性!

除了连接器的多项错误修复外,此版本还为 MySQL、Oracle 和 Vitess 连接器带来了一些改进。除非出现任何重大回归,否则我们可以预期 Debezium 3 将在不久的将来发布。

重大变更

团队致力于避免次要版本之间出现任何潜在的破坏性更改;但是,此类更改有时是不可避免的。

PostgreSQL

为 PostgreSQL 引入的向量数据类型名称过于数据库特异。为了提供更通用的向量数据类型支持,名称已调整为支持 PostgreSQL 和 MySQL(DBZ-8183)。

Oracle

已移除多个已弃用的配置属性

  • log.mining.transaction.retention.hours 已替换为 log.mining.transaction.retention.ms

  • log.mining.archive.destination.name 已替换为 archive.destination.name

  • log.mining.archive.log.hours 已替换为 archive.log.hours

在使用已弃用的配置选项时,请务必更新您的 Oracle 连接器配置以保留旧行为(DBZ-8181)。

默认的 log.mining.strategy 值已更改,现在是 online_catalog。由于绝大多数用户通常使用此策略,并且其性能通常优于 redo_log_catalog,我们认为此更改在 Debezium 3 中是合理的。如果您的部署之前依赖于默认的 redo_log_catalog 策略,在升级时您需要显式地将 log.mining.strategy 添加到连接器配置中,并指定值为 redo_log_catalogDBZ-3656)。

SQL Server

当连接器配置了多个数据库并产生多个任务时,SQL Server 的 JMX 信号和通知未能正常工作。为了解决此问题,有必要更改信号和通知 MBean 名称,以确保它们对于每个任务都是唯一的(DBZ-8137)。

新功能和改进

Debezium 3.0.0.CR1 还引入了多项改进和功能,让我们逐一查看。

MySQL 9

Oracle 于 2024 年 7 月 1 日发布了 MySQL 9.0 的首次创新版本。我们很高兴地宣布,我们已测试并验证 MySQL 9.0 可在 Debezium 3.0 中运行并得到支持(DBZ-8030)。如果您遇到任何问题或困难,请务必提交 issue

MySQL 向量数据类型

关系数据库中新增的功能之一是引入向量数据类型。除了支持 MySQL 9.0 之外,Debezium 3 还引入了对新的 VECTOR(n) 数据类型的支持,该类型支持浮点值列表,可以表示为二进制或列表格式的字符串。有关向量数据类型的更多信息,请参阅MySQL 文档DBZ-8157)。

此外,MySQL 语法已更新,以反映对新的 MySQL 9.0 向量函数的支持(DBZ-8210)。有关这些函数的更多信息,也请参阅MySQL 文档

MariaDB 11.4.3

Debezium 3 还引入了对 MariaDB 最新非滚动发行版 11.4.3 的支持(DBZ-8226)。我们还在密切关注 MariaDB 11.6 的发布周期,并计划在 MariaDB 11.6 稳定后引入向量数据类型支持。

Oracle 离线 RAC 节点刷新改进

在最近对 Oracle RAC 节点刷新策略进行的改进中,我们发现当数据库管理员将 Oracle RAC 节点置于离线状态时,会强制执行三秒延迟。由于 Oracle RAC 节点在离线状态下无法对重做日志执行任何写入操作,因此当节点保持离线状态时,这种三秒的延迟会引入不必要的延迟。

在 Debezium 3 中,只有在连接到 Oracle RAC 节点但刷新 SQL 操作不成功时,才会强制执行三秒延迟。这意味着,当数据库管理员将 RAC 节点置于离线状态进行维护时,连接器不会引入任何延迟开销(DBZ-8177)。

Vitess 继承分片 epoch

已添加了一个新的 Vitess 连接器配置属性,用于控制在重新分片操作后,新分片的 epoch 是否继承其父分片的 epoch。这个新的配置属性 vitess.inherit.epoch 默认为 false,默认不启用(DBZ-8163)。

其他更改

总共有45个 issue在此版本中得到修复。以下是部分其他值得注意的更改列表:

  • 使 ORA-00600 - krvrdccs10 自动重试 DBZ-5009

  • 如果代理键不存在,增量快照会因 NPE 而失败 DBZ-7797

  • MySQL 8.4 因移除 SQL 命令而导致的不兼容 DBZ-7838

  • Postgres 连接器 - “money”类型列的 null 值处理。 DBZ-8027

  • 当使用 snapshot.include.collection.list 与 Oracle 时会引发 NullPointerException DBZ-8032

  • 重建时(log.mining.stragtegy 混合模式)性能下降 DBZ-8071

  • 信号的文档提供了某些连接器的数据收集格式不正确 DBZ-8090

  • 源数据类型超出 debezium 数据类型,无法反序列化对象 DBZ-8142

  • 重构引擎信号支持 DBZ-8160

  • 测试中通用类型的错误使用 DBZ-8166

  • 最新的 Informix JDBC 驱动程序 DBZ-8167

  • Postgres JSONB 字段不被 Reselect Post Processor 支持 DBZ-8168

  • 将 Adobe s3mock 升级到版本 3.10.0 DBZ-8169

  • 将 Jackson 库包含到 JDBC 连接器 Docker 镜像分发中 DBZ-8175

  • Ehcache 启动失败,抛出“无效 XML 配置” DBZ-8178

  • 在 Oracle 测试期间启用 snapshot.database.errors.max.retriesEnable DBZ-8184

  • 逻辑解码消息的更改事件不包含 transaction 字段 DBZ-8185

  • 添加 MariaDB 连接器服务器分发 DBZ-8186

  • 重启 Oracle 引擎时发生 NullPointerException (schemaUpdateCache 为 null) DBZ-8187

  • XStream 在重试时可能会因先前尝试失败而无法附加 DBZ-8188

  • 截断字节缓冲区应返回一个新数组 DBZ-8189

  • 将 Vitess 示例更新到 Debezium 2.7/Vitess 19 DBZ-8196

  • OracleConnectorIT test shouldGracefullySkipObjectBasedTables 可能过早超时 DBZ-8197

  • 从捕获中排除 Oracle 23 VECSYS 表空间 DBZ-8198

  • AbstractProcessorTest 在针对 Oracle 23 Free 版本运行时使用不正确的数据库名称 DBZ-8199

  • 减少 OpenLogReplicator SCN 确认的日志详细程度 DBZ-8201

  • 支持旧版 MongoDb DBZ-8202

  • DDL 语句无法解析:REVOKE IF EXISTS DBZ-8209

  • 系统测试套件因路由名称过长而失败 DBZ-8213

  • Oracle TableSchemaBuilder 在错误消息中提供了错误的列名 DBZ-8217

  • 在 Kafka connect 中使用 ehcache 时抛出 XMLConfiguration 解析异常 DBZ-8219

  • 在文档导航中实现单独的源和宿连接器部分 DBZ-8220

  • OcpJdbcSinkConnectorIT 失败 DBZ-8228

  • 容器镜像未安装正确的 apicurio 依赖 DBZ-8230

  • 在 operator README 中添加关于 helm chart 安装的信息 DBZ-8233

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