我很高兴地宣布 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 基于类型发出,而不是默认的 BYTES(DBZ-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 列。
|
|
修复和稳定性改进
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
非常感谢社区中所有为本次发布辛勤工作的贡献者:Andrey Pustovetov、Anisha Mohanty、Chris Cranford、Chris Recalis、Jakub Cechacek、Jiri Pechanec、Lourens Naudé、Mario Fiore Vitale、Robert Roldan 和 Selman Genç!
关于 Debezium
Debezium 是一个开源的分布式平台,可以将现有数据库转变为事件流,使应用程序能够几乎即时地看到并响应数据库中已提交的每个行级更改。Debezium 构建在 Kafka 之上,并提供了 Kafka Connect 兼容的连接器,用于监控特定的数据库管理系统。Debezium 将数据更改的历史记录在 Kafka 日志中,这样您的应用程序可以随时停止和重新启动,并可以轻松地消费在未运行时错过的所有事件,确保所有事件都被正确且完整地处理。Debezium 在 Apache 许可证 2.0 下是 开源 的。