随着冬季寒冷的降临,我们正值节日季节,我们敬业的团队一直忙于为 Debezium 社区准备一份特别的礼物。我很高兴地宣布 Debezium 2.5.0.Final 现已发布,正是为了节日庆典。准备好拆开这个最新的次要版本,它充满了节日气氛和令人兴奋的新功能!
让我们花点时间回顾一下 Debezium 2.5 中包含的所有新功能、更改和改进,包括 181 个问题的解决,来自 37 位独特贡献者。
重大变更
虽然我们尽量避免在次要版本之间出现任何潜在的破坏性更改,但这些更改有时是不可避免的。升级到 Debezium 2.5 包含总共 10 项独特的破坏性更改。
- MySQL
- MongoDB
-
-
在 Debezium 的早期版本中,用户可以使用 MongoDB 连接器,并在使用 MongoDB 分片部署时对特定分片执行集合快照。遗憾的是,虽然我们理解用户可能利用了此行为,但这是非预期的且不受支持的。Debezium 2.5 完全移除了此功能,这是向完全弃用和移除 MongoDB 副本集流模式迈进的一步。(DBZ-7139)。
-
作为完全移除的准备步骤,默认连接模式已从
replica_set更改为sharded。此更改将导致现有偏移量失效并静默重新执行初始快照。为防止此情况发生,添加了一个检查,将在连接器启动时失败(如果发生这种情况)。用户可以显式设置replica_set连接模式,或者删除现有偏移量。(DBZ-7272)。
-
- JDBC
-
-
曾有一个角落案例报告指出,JDBC 接收器连接器在默认情况下错误地将具有
null值的字段写入目标数据库,而不是写入NULL值。此问题已在 Debezium 2.5 中修复。(DBZ-7191)。
-
- 核心
-
-
如果您当前使用 CloudEvents 转换器来发出符合 CloudEvents 格式的事件,重要的是要注意,配置选项
metadata.location已重命名为metadata.source。您需要确保使用 Debezium 2.5 及更高版本更新您的连接器配置以反映此更改。(DBZ-7060)。 -
Debezium 2.5 团队的重点之一是改进 Debezium 嵌入式引擎的体验。本着这个目标,我们将此预览版作为一次机会来清理嵌入式引擎的 API。
-
如果您使用 Debezium 嵌入式引擎,并且使用了
EmbeddedEngine上之前已弃用的 API,您会发现这些方法已被移除。(DBZ-7110)推荐的前进方向是确保您正在使用debezium-apiartifact 提供的DebeziumEngine接口。 -
ComputePartition是一个 SMT,它使用户能够计算事件将写入 Kafka 主题的期望分区。这个单消息转换 (SMT) 已经过时一段时间,取而代之的是新的PartitionRouting单消息转换。Debezium 2.5 移除了旧的、已弃用的ComputePartition,仍在使用此 SMT 的用户需要迁移到新的PartitionRoutingSMT(如果您尚未完成)。(DBZ-7141)。 -
Cloud Event 头部的 schema 名称前缀和字母大小写与 payload 名称不一致。schema 名称已对齐,以便 header 和 payload 共享相同的命名空间并遵循相同的字母大小写规则 (DBZ-7216)。
-
改进和更改
在本节中,我们将对 Debezium 2.5 中的所有新功能和改进进行一次巡览。
核心
Redis Schema History 重试现在有限制
Debezium 2.5 引入了一个新的配置选项 schema.history.internal.redis.max.attempts,旨在限制在 Redis 数据库不可用时连接 Redis 数据库的重试次数,之前它是无限重试的。此新选项默认为 10,但可由用户配置。(DBZ-7120)。
初始快照的附加通知
Debezium 的通知子系统提供了一种简单的方式,可以将外部进程和应用程序与 Debezium 的特定任务集成,例如拍摄快照。在之前的版本中,初始快照的通知非常基础,仅提供快照开始、每个表开始和结束的时间,最后快照结束的详细信息。
最近一项作为 DBZ-6878 的一部分的贡献,扩展了此基本功能,以提供有关快照的增强详细信息。例如,IN_PROGRESS 通知将提供有关正在捕获哪些表以及当前哪个表处于进行中的其他详细信息,如下所示:
{
"id":"6d82a3ec-ba86-4b36-9168-7423b0dd5c1d",
"aggregate_type":"Initial Snapshot",
"type":"IN_PROGRESS",
"additional_data":{
"connector_name":"my-connector",
"data_collections":"table1, table2",
"current_collection_in_progress":"table1"
},
"timestamp": "1695817046353"
} 此外,另一个名为 TABLE_SCAN_COMPLETED 的初始快照通知也提供了类似的详细信息,如下所示:
{
"id":"6d82a3ec-ba86-4b36-9168-7423b0dd5c1d",
"aggregate_type":"Initial Snapshot",
"type":"TABLE_SCAN_COMPLETED",
"additional_data":{
"connector_name":"my-connector",
"data_collection":"table1, table2",
"scanned_collection":"table1",
"total_rows_scanned":"100",
"status":"SUCCEEDED"
},
"timestamp": "1695817046353"
} 上面显示的几个字段,例如 data_collection,目前无法用于 MongoDB 快照,仅可用于基于 SQL 的关系型连接器。 |
有关更多详细信息,请参阅 通知文档。
重新选择列
在某些情况下,由于某些源数据库的工作方式,当 Debezium 连接器发出更改事件时,该事件可能会排除特定列类型的值。例如,PostgreSQL 中的 TOAST 列、Oracle 中的 LOB 列或 Oracle Exadata 中的 Extended String 列的值可能都会被排除。
Debezium 2.5 引入了 ReselectColumnsPostProcessor,它提供了一种从数据库表中重新选择一个或多个列并获取当前状态的方法。您可以配置后处理器来重新选择以下列类型:
-
null 列。
-
包含
unavailable.value.placeholder哨兵值的列。
配置 PostProcessor 的方式与配置 CustomConverter 或 Transformation 类似,不同之处在于它作用于可变 payload 的 Struct 而不是 SourceRecord。
增量快照水印的 INSERT/DELETE 语义
引入了 incremental.snapshot.watermarking.strategy 属性,让用户可以选择在增量快照期间使用的水印策略。
insert_insert(旧行为)方法允许 Debezium 为快照期间的每个块在信号数据集合中创建两个条目,一个用于信号快照窗口的开启,另一个用于标记其关闭。
另一方面,使用 insert_delete 选项,会在窗口开始时为每个块在信号数据集合中写入单个条目。完成后,此条目将被移除,并且不会添加相应的条目来表示快照窗口的关闭。此方法有助于更有效地管理信号数据集合。
有关更多详细信息,请参阅您感兴趣的连接器的“连接器属性”部分。
MongoDB
无缝处理大型文档
Debezium 在近几个版本中对大型文档的处理进行了多项改进;然而,这些改进主要集中在处理 MongoDB 4 和 5 的用例。虽然这些改进无疑对这些旧版本有所帮助,但 MongoDB 社区在 MongoDB 6 中引入了一种方法,可以在数据库管道级别无缝处理此问题。
Debezium 2.5 的 MongoDB 连接器现在使用 $changeStreamSplitLargeEvent 聚合功能,该功能作为 MongoDB 6.0.9 的一部分引入。这避免了在处理超过 MongoDB 16MB 文档大小限制的文档时出现 BSONObjectTooLarge 异常。此新功能由 oversize.handling.mode 选项控制,该选项默认为 fail。如果您希望利用此新的、选择加入的功能,请调整此配置。(DBZ-6726)。
| Debezium 只是利用了 MongoDB 数据库的一个底层功能。因此,数据库仍然存在一些限制,这些限制在 MongoDB 文档 中进行了讨论,这些限制仍可能导致不符合 MongoDB 分割规则的大型文档出现异常。 |
MySQL
MySQL 8.2 支持
MySQL 社区于 2023 年 10 月底发布了新的创新版本 MySQL 8.2.0。此新版本已通过 Debezium 测试,我们很高兴地宣布我们正式支持此新的创新版本。(DBZ-6873)。
高精度源时间戳
多个新的高精度时间戳字段已包含在多个 MySQL 复制事件中。例如,在 MySQL 8.0.1 中,GTID 事件添加了微秒分辨率的时间戳,用于指定事务在直接主库上提交的时间以及在原始主库上提交的时间。
Debezium 2.5 现在利用这些值,如果可用,将使用它们来填充 ts_ms 字段,如果不可用或您使用的是 8.0.1 之前的 MySQL 版本,则会回退到基于秒的精度。(DBZ-7183)。
PostgreSQL
从 PostgreSQL 16 备用服务器流式传输
在 PostgreSQL 16 中,您现在可以在备用服务器上定义复制槽。这提供了许多新选项,包括能够从副本而不是生产系统进行更改数据捕获,以进行负载分担,特别是在非常活跃的数据库中。
Debezium 2.5 现在支持连接到备用的 PostgreSQL 16 服务器并流式传输更改。(DBZ-7181)。
Oracle
流式指标更改
在 Debezium 的先前版本中,有一个单独的 Oracle 流式指标 bean,它公开了跨越所有三个流适配器的所有指标选项。这经常导致对哪个指标适用于哪个流适配器感到困惑,因此我们希望在这种情况下做出明确的区分。
在 Debezium 2.5 中,Oracle 流式指标 bean 已拆分为三个不同的实现,每个适配器类型一个。对于可观察性堆栈,此更改应该是完全透明的,除非您之前在另一个适配器类型上收集了一个指标。在这种情况下,您会发现该指标不再可用。
特别是对于 LogMiner 用户,一些指标已重命名,旧指标已被弃用。虽然您仍然可以在 Debezium 2.5 中使用旧指标名称,但这些指标计划在未来的 2.7+ 版本中移除。已弃用和重命名的指标如下:
| 旧/已弃用指标 | 新指标 |
|---|---|
CurrentRedoLogFileName | CurrentLogFileNames |
RedoLogStatus | RedoLogStatuses |
SwitchCounter | LogSwitchCounter |
FetchingQueryCount | FetchQueryCount |
HoursToKeepTransactionInBuffer | MillisecondsToKeepTransactionsInBuffer |
TotalProcessingTimeInMilliseconds | TotalBatchProcessingTimeInMilliseconds |
RegisteredDmlCount | TotalChangesCount |
MillisecondsToSleepBetweenMiningQuery | SleepTimeInMilliseconds |
NetworkConnectionProblemsCounter | 无替换 |
LOB 行为
Debezium 2.5 在快照和流式传输中统一了 LOB 行为。当 lob.enabled 设置为 false 时,将在快照期间明确包含不可用值占位符,以匹配流式传输的行为。
SQL Server
通知改进
Debezium for SQL Server 通过读取数据库中称为捕获实例的更改来进行工作。这些实例可以根据用户的需求出现和消失,并且很难知道 Debezium 是否已完成给定捕获实例自身的捕获过程。
Debezium 2.5 通过发出新的名为 Capture Instance 的通知聚合来解决此问题,允许任何观察者了解 Debezium 何时不再使用某个捕获实例。此新通知包含各种连接器详细信息,包括连接器的名称以及开始、停止和提交 LSN 值。(DBZ-7043)。
驱动程序更新
SQL Server 2019 引入了指定特定列敏感性分类的能力,以提供对敏感数据的更好可见性和保护。不幸的是,Debezium 2.4 及更早版本附带的当前驱动程序不支持此功能。Debezium 2.5 引入了最新的 12.4.2 SQL Server 驱动程序,因此用户现在可以开箱即用地利用此功能。(DBZ-7109)。
JDBC sink
批处理支持
Debezium 于 2023 年 3 月首次将 JDBC 接收器连接器引入作为 Debezium 2.2 的一部分。在过去的几个月中,此连接器经历了多次迭代,以提高其稳定性、功能集和功能。Debezium 2.5 在这些工作的基础上,引入了批量写入。(DBZ-6317)。
在先前的版本中,连接器单独处理每个主题事件;然而,新的批量写入支持模式会将事件收集到存储桶中,并使用尽可能少的事务边界将这些更改写入目标系统。此更改提高了连接器的吞吐量能力,并使与目标数据库的交互更加高效。
字段包含/排除
Debezium 2.5 引入了一项新的 JDBC 接收器功能,用户现在可以指定要包含或排除在目标数据库写入操作中的事件 payload 字段。此功能的工作方式与其他 Debezium 框架中的包含/排除组合方式相同,即这两个属性是互斥的。
例如,如果我们有一个简单的事件 payload,在主题 customers 中包含以下字段:
{
"id": 12345,
"name": "Acme",
"address": "123 Main Street"
} 如果我们想避免将 address 字段写入目标数据库,而只将 id 和 name 字段写入目标表,我们可以使用此新功能来实现。这可以通过添加 field.include.list 或 field.exclude.list 属性来完成。
{
"field.exclude.list": "customers:address"
} 字段包含/排除的格式是 [<topic-name>:]<field-name>,其中 topic-name 是可选的,如果您想避免为所有事件写入 address 字段,则可以省略。有关更多详细信息,请参阅 JDBC 接收器连接器配置文档。
Debezium 服务器
Operator
Kubernetes 的 Debezium Server Operator 在 Debezium 2.5 的此预览版本中得到了积极改进。一些改进包括:
随着我们继续改进 Kubernetes 的 Debezium Server Operator,我们很乐意听取您的反馈。
CRD 的服务账户
在 Debezium 的先前版本中,无法使用不同于预定义名称的服务账户。这使得用户过程有点麻烦,因为虽然您可以单独向此预定义账户授予角色和授权,但这意味着您需要使用此预定义服务账户,而不是您可能希望使用的服务账户。
Debezium 2.5 简化了此过程,允许您现在使用自己的自定义服务账户。(DBZ-7111)。
Kinesis 接收器改进
Debezium Server Kinesis 用户将很高兴地注意到,Debezium 2.5 的接收器适配器在可靠性方面得到了一些改进。Kinesis 接收器现在最多会重试失败记录的传递 5 次,然后适配器才会触发失败。这应该可以提高接收器适配器的传递可靠性,并帮助处理批量的更改可能会导致接收器端点过载的情况。(DBZ-7032)。
EventHubs 分区
在 Debezium Server 的早期版本中,用户可以指定一个固定的分区 ID 将所有更改流式传输到一个分区,或者提供一个将设置在所有批处理操作上的静态分区键,这最终会导致所有更改流式传输到同一目标分区。在某些情况下这可能很有用,但它更多地导致了下游处理的性能问题。
Debezium 2.5 调整了此行为以提高性能。默认情况下,当未定义 partitionid 或 partitionkey 时,EventHub 接收器将使用轮询技术将事件发送到所有可用分区。可以通过指定 partitionid 将事件强制放入单个固定分区。或者,可以提供 partitionkey 来提供一个固定的分区键,用于将所有事件路由到特定分区。
如果需要其他分区路由要求,现在可以结合使用 PartitionRouting SMT 来完成这些任务。有关更多详细信息,请参阅 Event Hubs 文档。
RabbitMQ Streams 接收器
RabbitMQ 在 3.9 版本中引入了 Streams,它利用了一种快速高效的协议,可以与 AMQP 0.9.1 结合使用,以支持大型扇出、重放和时间旅行,以及高吞吐量的大型数据集。Debezium 2.5 利用了此新的 Streams 实现,通过引入一个新的原生 Streams 实现。(DBZ-6703)。要开始使用此新实现,请按如下方式配置 Debezium Server 接收器:
debezium.sink.type=rabbitmqstream
debezium.sink.rabbitmqstream.connection.host=<hostname of RabbitMQ>
debezium.sink.rabbitmqstream.connection.port=<port of RabbitMQ> 此外,如果您需要将任何其他连接参数传递给 RabbitMQ 连接,您可以通过在配置中添加 debezium.sink.rabbitmqstream.connection. 前缀来传递任何配置属性。
有关更多详细信息,请参阅 Debezium Server RabbitMQ 文档。
Apache Kafka 接收器的 StreamNameMapper
Kafka 接收器的行为现在可以通过自定义逻辑来修改,为特定功能提供替代实现。当替代实现不可用时,则使用默认实现。
有关更多详细信息,请参阅 Apache Kafka Injection points。
AWS SQS 接收器
Amazon Simple Queue Service (Amazon SQS) 是一种分布式消息队列服务。它支持通过 Web 服务应用程序以编程方式发送消息,作为通过 Internet 进行通信的方式。SQS 旨在提供一个高度可扩展的托管消息队列,以解决常见的生产者-消费者问题或生产者和消费者之间的连接性问题。
Debezium 2.5 提供了将事件发送到 Amazon SQS 的可能性。
Informix
IBM Informix 连接器
得益于 Lars Johansson 的贡献,Debezium 2.5 在其产品组合中引入了一个新连接器,用于从 IBM Informix 收集更改。IBM Informix 是一个可嵌入的高性能数据库,可将 SQL、NoSQL、JSON、时间序列和空间数据集成在一个地方。它专为边缘、云或本地分析而设计。
IBM Informix 连接器与我们任何社区主导的连接器一样打包,可在 Maven Central 上找到,或者您可以从我们的 Debezium 2.5 发布页面下载插件存档。
Maven 构件坐标为:
<dependency>
<groupId>io.debezium</groupId>
<artifactId>debezium-connector-informix</artifactId>
<version>2.5.0.Final</version>
</dependency> 如果您想为 Informix 连接器做出贡献,我们在 Debezium 组织下添加了一个新仓库,debezium-connector-informix。
我要感谢 Lars Johansson 的贡献和与团队的合作,赞!
MariaDB
预览支持
社区长期以来一直利用 MySQL 连接器作为捕获 MariaDB 更改的替代方案;然而,这种兼容性主要是尽力而为。
Debezium 2.5 版本流旨在通过一种清晰系统的方法,逐步检查、验证并最终以与 MySQL 相同的容量支持 MariaDB,从而将 MariaDB 推向前台,成为一流的连接器。我们的目标和希望是可以在 MySQL 连接器本身范围内完成此工作;然而,GTID 支持仍有相当多的持续调查,这可能会影响未来的发展方向。
Debezium 2.5 的第一个预览版本已迈出第一步,我们已验证代码可以在单个 MariaDB 数据库部署上运行,测试套件已通过,并且我们已对 Binlog 客户端进行了必要的更改以支持该部署。我们的下一步是研究 GTID 支持,MariaDB 支持 GTID,但使用一种与 MySQL 不兼容的方法。
请继续关注未来的版本,我们将继续扩展此功能,并且我们非常欢迎任何早期反馈。
GTID 支持
MySQL 和 MariaDB 都支持全局事务标识符 (GTID)。这些在复制中用于唯一标识集群中的事务。MySQL 和 MariaDB 之间的实现细节差异很大,在 Debezium 的早期版本中,我们仅支持 MySQL 的 GTID。
在 Debezium 2.5 中,我们通过在 MySQL 连接器产品中引入对 MariaDB 的 GTID 支持,又向前迈进了一步。为了利用此功能,您需要使用 MariaDB 驱动程序而不是 MySQL 驱动程序,方法是使用以 jdbc:mariadb 而不是 jdbc:mysql 开头的 JDBC 连接。通过这样做,您现在可以像 MySQL 一样充分利用 MariaDB 和 GTID 进行工作。(DBZ-1482)。
其他更改
-
添加使用 MySQL 和 GCP PubSub 的 Debezium Server 示例 DBZ-4471
-
重构 ElapsedTimeStrategy DBZ-6778
-
多个 debezium:offsets Redis 客户端 DBZ-6952
-
sink 连接器中非 avro 列名的错误大小写行为 DBZ-6958
-
正确处理 bytea 字段,用于 jdbc sink 到 postgresql DBZ-6967
-
Debezium jdbc sink 处理截断事件失败 DBZ-6970
-
单引号复制为 N(CHAR/VARCHAR) 列包含转义引号 DBZ-6975
-
提供配置选项以从 CloudEvent 中排除扩展属性 DBZ-6982
-
Debezium jdbc sink 应抛出不支持 schema 更改主题的异常 DBZ-6990
-
Debezium 使用 JDK 21 编译失败 DBZ-6992
-
GA 版本 OLM bundle 版本无效 DBZ-6994
-
进一步重构以纠正增量快照主题的下游渲染 DBZ-6997
-
ALTER TABLE 在向 JDBC 接收器目标添加多个列时失败 DBZ-6999
-
CSV 元数据中 zulip chat 的链接无效 DBZ-7000
-
确保在与 rebalance 或 sync 主题的连接丢失时终止任务 DBZ-7001
-
CSV 元数据中缺少 .metadata.annotations.repository 字段 DBZ-7003
-
单引号复制和数据丢失 DBZ-7006
-
移除弃用的嵌入式引擎代码 DBZ-7013
-
启用复制槽前进检查 DBZ-7015
-
为 CloudEventsConverter 添加配置选项以从 header 中检索 id 和 type DBZ-7016
-
Oracle 连接器:有效负载大小超过 76020 字节将被截断 DBZ-7018
-
在 Timezone Converter 测试中使用可选 schema DBZ-7020
-
DDL 语句无法解析 DBZ-7030
-
阻塞 ad-hoc 快照对于 MySQL 来说并非真正阻塞 DBZ-7035
-
连接器重启时产生的 fake ROTATE 事件会清除元数据 DBZ-7037
-
合并资源标签和注解 DBZ-7064
-
Oracle RAC 抛出 ORA-00310: 需要存档日志序列 DBZ-5350
-
Oracle 缺少 CDC 数据 DBZ-5656
-
缺少 Oracle CDC 记录 DBZ-5750
-
为 Oracle 连接器特定的 Debezium Connect REST 扩展添加(集成)测试 DBZ-6763
-
MongoDBReplicaSetAuthTest 间歇性失败 DBZ-6875
-
连接器经常错过提交操作 DBZ-6942
-
Oracle 19c 丢失事件 DBZ-6963
-
RHEL 系统测试套件中的 Mongodb 测试在 DBZ 2.3.4 中失败 DBZ-6996
-
在测试套件中使用 DebeziumEngine 而不是 EmbeddedEngine DBZ-7007
-
Debezium Embedded Infinispan 性能缓慢 DBZ-7047
-
字段排除对已移除字段的事件无效 DBZ-7058
-
更新转换属性“delete.tombstone.handling.mode”到 debezium 文档 DBZ-7062
-
JDBC sink 连接器与 CloudEvent 不兼容 DBZ-7065
-
处理过程中发生错误时 JDBC 连接泄露 DBZ-7069
-
某些服务器测试因 @com.google.inject.Inject 注解而失败 DBZ-7077
-
添加 MariaDB 驱动程序以进行测试和分发 DBZ-7085
-
允许 DS JMX 在 k8 上使用用户名-密码认证 DBZ-7087
-
HttpIT 失败并出现“无法识别的字段 subEvents” DBZ-7092
-
MySQL 解析器不符合算术运算优先级 DBZ-7095
-
VitessConnectorIT.shouldTaskFailIfColumnNameInvalid 失败 DBZ-7104
-
当使用无效配置调用 RelationalBaseSourceConnector#validateConnection 时(在 Connector#validate() 内部)可能导致异常 DBZ-7105
-
Debezium 在解析 MySQL DDL 语句(特定 INSERT)时崩溃 DBZ-7119
-
为 Operator 模型生成 sundrio 声明式构建器 DBZ-6550
-
将 Operator 源转换为多模块项目 DBZ-6551
-
在特定于连接器的 Connect REST 扩展中实现“验证过滤器”端点 DBZ-6762
-
测试 MongoDB 连接器和 ExtractNewDocumentState SMT 的 Avro 调整 DBZ-6809
-
在主存储库中实现针对 Cloud Spanner 模拟器的 IT 测试。 DBZ-6906
-
DefaultDeleteHandlingStrategy 无法将重写后的“__deleted”字段添加到非结构值 DBZ-7066
-
为 MariaDB 和 MySQL 的差异实现策略模式 DBZ-7083
-
Debezium server 对 offset.flush.interval.ms 没有默认值 DBZ-7099
-
快照后,连接 MySQL 数据库时身份验证失败 DBZ-7132
-
并行运行 MySQL CI 构建 DBZ-7135
-
Informix 12.10 上读取 CURRENT_TIMESTAMP 失败 DBZ-7137
-
Debezium-ddl-parser 在解析 MySQL DDL 语句(特定 UNION)时崩溃 DBZ-7140
-
当 fields.additional.placement 值中存在空格时,outbox.EventRouter SMT 抛出 NullPointerException DBZ-7142
-
Debezium-ddl-parser 在解析 MySQL DDL 语句(特定 UPDATE)时崩溃 DBZ-7152
-
为工作流添加矩阵策略 DBZ-7154
-
在 Debezium Operator 存储库中为 ServiceAccountDependent 类添加单元测试 DBZ-7155
-
JsonSerialization 无法处理带复合分片键的分片集合的更改 DBZ-7157
-
日志重放线程应独立对待每个重放线程 DBZ-7158
-
如果在反序列化时值不是 CloudEvent,则快速失败 DBZ-7159
-
正确计算最大 LSN DBZ-7175
-
升级到 Infinispan 14.0.20 DBZ-7187
-
将 Outbox Extension 升级到 Quarkus 3.5.3 DBZ-7188
-
修复 DebeziumMySqlConnectorResource 未使用新的 MySQL 适配器结构来支持不同的 MySQL 风味 DBZ-7179
-
解析 MySQL 索引的 JSON 字段时失败,当使用类型为 double 和 float 的强制转换时 DBZ-7189
-
即使配置了 REPLICA IDENTITY FULL,未更改的 toasted 数组列仍被替换为 unavailable.value.placeholder。 DBZ-7193
-
启用能力来流式传输 Oracle 23c 的 LogMiner 更改 DBZ-7194
-
在解析 PL/SQL 的 modify_table_partition 规则中添加 modify range_partitions DBZ-7196
-
MongoDB 流式传输在只有在没有事件的情况下才会暂停,仅适用于 Blocking Snapshot DBZ-7206
-
处理 PL/SQL 中的 Drop Tablespace DBZ-7208
-
升级 logback 到 1.2.12 DBZ-7209
-
AbstractInfinispanLogMinerEventProcessor.logCacheStats 上的 NPE DBZ-7211
-
Oracle 被放弃的事务实现 bug 导致 OoM DBZ-7236
-
添加 Oracle Truncate Cluster 的 Grammar DBZ-7242
-
更改列类型时未删除长度值 DBZ-7251
-
MongoDB 表/集合快照通知包含错误的偏移量 DBZ-7252
-
多命名空间监控支持中断 DBZ-7254
-
为 Debezium JDBC 连接器添加追踪日志以跟踪执行时间 DBZ-7217
-
验证和澄清 Oracle 的多个归档日志目标要求 DBZ-7218
-
升级 logback 到 1.2.13 DBZ-7232
-
为 CloudEventsConverter 添加配置选项以自定义 schema 类型名称 DBZ-7235
-
支持 Kafka 信号主题的快照请求的持久化历史记录。 DBZ-7164
-
将 Connect REST Extensions 的指标端点更改为直接使用 MBeanServer 而不是通过 HTTP 调用 Jolokia 端点 DBZ-7177
-
指标端点必须处理具有多个任务的连接器 (SQL Server) DBZ-7178
-
DDL GRANT 语句无法解析 DBZ-7213
-
Debezium Oracle 插件 2.5.0 Beta 不支持 Oracle 11g DBZ-7257
-
快照期间出现错误,多个快照线程将无法正确中止快照 DBZ-7264
-
MySQL RDS UPDATE 查询未被忽略 DBZ-7271
-
JDBC 连接泄露 DBZ-7275
-
IncrementalSnapshotCaseSensitiveIT#insertDeleteWatermarkingStrategy 失败 DBZ-7276
-
Debezium MySQL 无法解析某些 grant 权限。 DBZ-7277
-
添加 PL/SQL 解析器以创建表 Memoptimize DBZ-7279
-
支持创建 EDITIONABLE 或 NONEDITIONABLE 包 DBZ-7283
-
添加 PL/SQL 解析器以修改表 Memoptimize DBZ-7268
-
将指标端点从 UI 后端移动到 Debezium Connect REST 扩展 DBZ-6764
-
website-builder 镜像因更新的 bundler 而失败 DBZ-7269
-
Vitess 连接器因无效 GPG 密钥而构建失败 DBZ-7280
非常感谢所有为 Debezium 2.5 做出贡献的社区成员:Ahmed Rachid Hazourli、Anatolii Popov、Anisha Mohanty、Bob Roldan、Chris Cranford、Gunnar Morling、Harvey Yue、Ilyas Ahsan、Inki Hwang、Jakub Cechacek、Jiabao Sun、Jiri Kulhanek、Jiri Pechanec、Jordan Pittier、Kosta Kostelnik、Lars M. Johansson、Lourens Naudé、Mario Fiore Vitale、Matt Vance、Nils Hartmann、Ondrej Babec、Rafael Câmara、René Kerner、Robert Roldan、Roman Kudryashov、Sebastiaan Knijnenburg、Tudor Plugaru、V K、Vadzim Ramanenka、Vincenzo Santonastaso、Vojtech Juranek、Zhongqiang Gong、baabgai、ruslan 和 蔡灿材!
关于 Debezium
Debezium 是一个开源的分布式平台,可以将现有数据库转变为事件流,使应用程序能够几乎即时地看到并响应数据库中已提交的每个行级更改。Debezium 构建在 Kafka 之上,并提供了 Kafka Connect 兼容的连接器,用于监控特定的数据库管理系统。Debezium 将数据更改的历史记录在 Kafka 日志中,这样您的应用程序可以随时停止和重新启动,并可以轻松地消费在未运行时错过的所有事件,确保所有事件都被正确且完整地处理。Debezium 在 Apache 许可证 2.0 下是 开源 的。