社区正朝着 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
-
- SQL Server
-
当连接器配置了多个数据库并产生多个任务时,SQL Server 的 JMX 信号和通知未能正常工作。为了解决此问题,有必要更改信号和通知 MBean 名称,以确保它们对于每个任务都是唯一的(DBZ-8137)。
新功能和改进
Debezium 3.0.0.CR1 还引入了多项改进和功能,让我们逐一查看。
MySQL 9
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
非常感谢社区中为此版本做出贡献的所有人员:Ajit, Chris Cranford, Jakub Cechacek, Jiri Pechanec, Jochen Schalanda, Lars M. Johansson, Mario Fiore Vitale, Minh Son Nguyen, Mohamed El Shaer, Ondrej Babec, Oren Elias, René Kerner, Robert Roldan, Roman Kudryashov, Sean C. Sullivan, Sergei Kazakov, Sylvain Marty, Thomas Thornton, Tudor Plugaru, Vojtěch Juránek, and moyq5!
关于 Debezium
Debezium 是一个开源的分布式平台,可以将现有数据库转变为事件流,使应用程序能够几乎即时地看到并响应数据库中已提交的每个行级更改。Debezium 构建在 Kafka 之上,并提供了 Kafka Connect 兼容的连接器,用于监控特定的数据库管理系统。Debezium 将数据更改的历史记录在 Kafka 日志中,这样您的应用程序可以随时停止和重新启动,并可以轻松地消费在未运行时错过的所有事件,确保所有事件都被正确且完整地处理。Debezium 在 Apache 许可证 2.0 下是 开源 的。