我很荣幸地宣布 Debezium 2.3.3.Final 现已发布。
此版本包含多项错误修复,以解决回归、稳定性和文档更新问题。如果您目前正在考虑升级到 Debezium 2.3.x 版本流,我们强烈建议您考虑使用此版本。让我们快速看一下回归和错误修复。
重大变更
本次发布中有一个破坏性变更,Debezium 2.3.3.Final 的行为与之前的 Debezium 2.3.2.Final 版本相比有所不同。如果您从 Debezium 2.3.2.Final 或之前的任何版本升级,请查看以下破坏性变更的详细信息。
Oracle 连接器 SCN 指标
Oracle 在其 JMX 指标中跟踪多种系统更改号(通常称为 SCN)值,包括 OffsetScn、CurrentScn、OldestScn 和 CommittedScn。这些 SCN 值是数字型的,并且经常会超过 Long 数据类型的上限,因此 Debezium 传统上将这些值公开为 String。
不幸的是,Grafana 和 Prometheus 等工具无法处理基于 String 的值,并且社区已多次提出希望能够从指标收集框架中查看这些值。从 Debezium 2.3.3.Final 或更高版本开始,这些 JMX 指标的行为发生了一个小的变化,它们不再作为 String 值公开,而是现在公开为 BigInteger 值。
此行为变更允许 Grafana 和 Prometheus 等工具自动从 JMX bean 中抓取这些值,用于报告和可观察性堆栈。
| 如果您之前曾为其他目的收集这些值,请注意它们不再是基于字符串的,今后应将其解释为 |
其他修复和改进
本次发布中有几处 bug 修复和稳定性改进,其中一些值得注意的有:
-
支持 PostgreSQL 的 UUID、JSON 和 JSONB 数据类型的强制转换 DBZ-6589
-
Debezium 2.3.0.Final 缺少 Kafka Channel 文档 DBZ-6688
-
Debezium 在解析 MySQL DDL 语句 (特定 JOIN) 时崩溃 DBZ-6724
-
ExtractNewDocumentState for MongoDB 在处理带有 REWRITE 的删除事件时忽略之前的文档状态 DBZ-6725
-
缺失或拼写错误的 ID 会导致下游构建错误 DBZ-6754
-
当使用 Postgres 连接器的 pgoutput 时,不支持十进制值中的 (+/-)Infinity DBZ-6758
-
Outbox 转换可能导致连接器崩溃 DBZ-6760
-
Postgres tests for toasted byte array and toasted date array with decoderbufs plugin 失败 DBZ-6767
-
MongoDB 新文档状态提取:add.headers 的非存在字段 DBZ-6774
-
使用 JMX 通道时,MBean 实例之间的通知和信号会泄漏 DBZ-6777
-
Dbz 在解析 MySQL DDL 语句 (SELECT 1.;) 时崩溃 DBZ-6780
-
Dbz 在解析 MySQL DDL 语句 (SELECT 1 + @sum:=1 AS ss;) 时崩溃 DBZ-6794
-
MySQL DDL 解析器 - 不接受 REPEAT 函数 DBZ-6803
-
Dbz 在解析 DDL 语句 (变量中的非拉丁字符) 时崩溃 DBZ-6821
-
解析 MySQL DDL 时,不对 BIGINT 和 SMALLINT 类型默认值进行修剪 DBZ-6824
-
将部分和多响应事务设置为调试级别日志 DBZ-6830
-
Oracle test shouldContinueToUpdateOffsetsEvenWhenTableIsNotChanged 因 NPE 而失败 DBZ-6860
-
流式聚合管道因数据库过滤器和信号集合的组合而损坏 DBZ-6867
关于 Debezium
Debezium 是一个开源的分布式平台,可以将现有数据库转变为事件流,使应用程序能够几乎即时地看到并响应数据库中已提交的每个行级更改。Debezium 构建在 Kafka 之上,并提供了 Kafka Connect 兼容的连接器,用于监控特定的数据库管理系统。Debezium 将数据更改的历史记录在 Kafka 日志中,这样您的应用程序可以随时停止和重新启动,并可以轻松地消费在未运行时错过的所有事件,确保所有事件都被正确且完整地处理。Debezium 在 Apache 许可证 2.0 下是 开源 的。