随着夏季的结束,我们进入秋季,天气转凉,团队辛勤地准备着 Debezium 的下一个主要里程碑。我很荣幸地宣布下一个次要版本的发布,即 Debezium 2.4.0.Final

随着团队开始新的开发迭代之旅,让我们花点时间回顾一下 Debezium 2.4 中包含的所有新功能、更改和改进,包括 231 个问题的解决,来自 68 位独特贡献者的贡献。

重大变更

虽然我们尽量避免在次要版本之间发生任何潜在的破坏性更改,但有时这类更改是不可避免的。升级到 Debezium 2.4 包含总共 10 项独特的破坏性更改。

MySQL
  • 当使用 bigint.unsigned.handling.mode 配置连接器为 precise 时,BIGINT 数据类型的精度没有正确设置。如果您使用带有上述配置设置的 schema registry,此版本可能导致 schema 不兼容,并可能需要调整注册表(DBZ-6714)。

MongoDB
  • 已移除 mongodb.hostsmongodb.members.autodiscover 配置属性。连接器配置应改用连接字符串DBZ-6892)。

  • 以前连接建立时会优先选择副本节点,这使得用户无法使用主节点。连接器现在将使用连接字符串来影响连接目标(DBZ-6521)。

Oracle
  • 为提高连接器默认配置的性能,snapshot.fetch.sizequery.fetch.size 配置属性的默认值已从 2000 更改为 10000DBZ-6729)。

  • 系统更改号 (SCN) JMX 指标曾以 String 数据类型暴露,现在则以 BigInteger 数据类型暴露,从而能够导出到可观察性堆栈(DBZ-6798)。

Vitess
  • 更改事件结构已有所修改,source 信息块现在包含一个标识事件源分片的新字段(DBZ-6617)。

  • _bin 结尾的排序规则被推断为 VARBINARY 数据类型,并作为二进制数据发出;但是,对于基于字符的列来说这是不正确的。如果您使用这些排序规则类型和 schema registry,这可能导致 schema 不兼容,并可能需要一些注册表调整(DBZ-6748)。

  • 以前,Schema 更改会应用于所有分片,而不是独立处理每个分片。如果您使用的是 DefaultTopicNamingStrategy 或其派生类,则应切换到 TableTopicNamingStrategy 以保留先前使用的相同主题命名。(DBZ-6775

  • 默认情况下,只有一部分错误会被重试。此行为已更改,现在默认重试所有错误,只有一部分预定义错误条件不会被重试(DBZ-6944)。

Debezium 服务器
  • Debezium Server 现在包含所有 Cassandra 连接器变体,并增加了一个新的环境变量 EXTRA_CONNECTOR 来控制使用哪个特定的 Cassandra 连接器。此变量可设置为 dsecassandra-3cassandra-4DBZ-6638)。

改进和更改

在本节中,我们将带您全面了解 Debezium 2.4 中的所有新功能和改进。

核心

临时阻塞快照

增量快照大约在两年前的 Debezium 1.6 中首次推出,并且在社区中一直非常受欢迎,用于处理各种重新快照用例。但是,在某些用例中,读事件与创建、更新和删除事件的相互交织可能不是理想的,甚至不被某些消费者应用程序支持。对于这些用例,Debezium 2.4 引入了临时阻塞快照。

临时阻塞快照的工作方式与临时增量快照非常相似;然而,有一个主要区别。快照仍然通过发送信号给 Debezium 来触发;然而,当连接器处理信号时,主要区别在于流式传输被暂停,直到快照过程运行完毕。这意味着您将不会收到一系列读事件与创建、更新或删除事件交织在一起。这也意味着我们将以类似于传统快照的方式处理快照,因此吞吐量通常会比增量快照更高。

请注意,临时阻塞快照会在执行快照期间暂停读取事务日志。这意味着传统快照对事务日志可用性的要求同样适用于使用此类临时快照模式。当流式传输恢复时,如果所需的事务日志已被删除,连接器将引发错误并停止。

启动临时阻塞快照的信号与其临时增量快照的对应信号非常相似。下面的信号显示了带有条件的快照特定表的负载,但它使用新的阻塞快照而不是增量快照。

{
  "type": "execute-snapshot",
  "data": {
    "data-collections": ["public.my_table"],
    "type": "BLOCKING", (1)
    "additional-condition": "last_update_date >= '2023-01-01'"
  }
}
1 使用 BLOCKING 而不是 INCREMENTAL 来区分这两种临时快照模式。

错误处理

一些 Debezium 连接器以前使用过连接器属性 errors.max.retries。此属性控制 Debezium 连接器故障异常被显式包装在 RetriableException 中的频率,但连接器将原始异常抛给运行时。虽然这听起来与 Kafka Connect 的 errors.retry.timeout 类似,但这实际上为用户提供了一种跨多个 Debezium 运行时(包括 Kafka Connect、Debezium Server 和 Debezium Embedded)处理重试的通用方法。

初始快照通知

Debezium 的新通知子系统提供了一种简单的方式,可以将第三方工具和应用程序与 Debezium 集成,以洞察正在进行的变更数据捕获过程,超出了传统的 JMX 方法。在 2.4 版本中,通知子系统现在增加了通知初始快照状态的能力(DBZ-6416)。

初始快照通知将以 Initial SnapshotaggregatetType 发出,并包含一个 type 字段,该字段显示快照的当前状态。可能的值包括:STARTEDABORTEDPAUSEDRESUMEDIN_PROGRESSTABLE_SCAN_COMPLETEDCOMPLETED

带有 JSON 用户数据的 JMX 通知

Debezium 2.4 改变了 JMX 通知提供用户数据的方式。在以前的版本中,通知使用了 toString() 风格的实现,虽然有效,但与其他更结构化的格式(如 JSON)相比,它不提供任何好的向前或向后兼容性语义。

今后,JMX 通知中的用户数据将以 JSON 格式提供,使其更容易、更可靠地解析,并为未来的可扩展性提供更好的支持,同时减少对向后兼容性的担忧。我们希望这能使此功能在未来更容易使用,并欢迎任何额外的反馈。

通知

所有通知事件现在都将包含一个时间戳(DBZ-6793)。

源到目标列名传播

通常,当被 JDBC 连接器等目标连接器消费时,列名直接映射到字段名,反之亦然。但是,在某些情况下,序列化技术(如 Avro)对字段命名约定有非常严格的规则。当数据库表中的列名与序列化规则的命名约定冲突时,Debezium 会在事件中重命名该字段,使其符合序列化的规则。这通常意味着字段会被加上下划线,或者无效字符会被下划线替换。

这可能对某些类型的目标(如 JDBC 目标连接器)造成问题,因为目标无法轻松推断目标表中原始列名,也无法在事件字段名和列名不同时进行充分映射。这通常意味着用户必须在目标端使用转换链来重建事件字段,使其命名代表源。

Debezium 2.4 引入了一种最小化甚至可能完全避免这种情况的方法,通过将原始列名作为字段 schema 参数进行传播,这与我们处理数据类型、精度、标度和长度的方式非常相似。Schema 参数 __debezium.source.column.name 现在在启用列或数据类型传播时包含原始列名。

Debezium JDBC 目标连接器已经支持列和数据类型传播,允许目标连接器更准确地推断列类型、长度、精度和标度。

通过这个新功能,当提供此参数时,JDBC 目标连接器将自动使用此参数中的列名,以确保目标表使用与源相同的列名创建,即使在使用 Avro 或类似技术时。这意味着在使用 Debezium JDBC 目标连接器时不需要进行任何转换。

时区转换

我们经常从社区听到的一个常见请求是,允许使用除 UTC 以外的其他时区来发出时间列。Debezium 通过使用 CustomConverter 来更改时间列默认发出方式,或者编写您自己的单消息转换 (SMT),来支持这一点;然而,这些方法可能不适合所有人。

Debezium 2.4 现在附带了一个全新的时区转换器,该转换器允许您精细控制发出的事件中哪些时间列可以从 UTC 转换为您管道所需的任何时区。要开始使用此新转换器,请将以下基本配置添加到您的连接器中。

{
  "transforms": "tz",
  "transforms.tz.type": "io.debezium.transforms.TimezoneConverter",
  "transforms.tz.converted.timezone": "America/New_York"
}

通过指定上述配置,所有以 UTC 发出的时间列都将从 UTC 转换为 America/New_York 时区。但您不仅限于更改所有时间字段的时区,还可以使用 include.fields 属性来定位特定字段,如下所示。

{
  "transforms": "tz",
  "transforms.tz.type": "io.debezium.transforms.TimezoneConverter",
  "transforms.tz.converted.timezone": "America/New_York",
  "transforms.tz.include.fields": "source:customers:created_at,customers:updated_at"
}

在上面的示例中,第一项将转换 created_at 字段,其中源表名customers,而后者将转换 updated_at 字段,其中主题名customers。此外,您还可以使用 exclude.fields 排除字段的转换,以便将转换应用于除特定子集以外的所有字段。

{
  "transforms": "tz",
  "transforms.tz.type": "io.debezium.transforms.TimezoneConverter",
  "transforms.tz.converted.timezone": "America/New_York",
  "transforms.tz.exclude.fields": "source:customers:updated_at"
}

在上面的示例中,所有时间字段都将转换为 America/New_York 时区,除非源表名customers 且字段是 updated_at

您可以在文档中找到有关此新转换器的更多信息,我们非常希望听到您的反馈。

MongoDB

集群范围的权限

监视单个数据库或集合时不再需要集群范围的权限(DBZ-6182)。

聚合管道的可配置顺序

Debezium 2.4 现在提供了一种控制变更流管道聚合顺序的方法。这对于正在聚合可能导致管道问题的特定文档(如大型文档)至关重要。

默认情况下,连接器先应用 MongoDB 内部管道过滤器,然后应用用户构造的过滤器;然而,这可能导致大型文档进入管道,并且如果文档超过内部 16Mb 限制,MongoDB 可能会抛出错误。在这些用例中,连接器现在可以配置为首先应用 cursor.pipeline 定义的用户阶段来过滤此类用例,以避免管道因 16Mb 限制而失败。

要实现这一点,只需将以下配置应用于连接器。

{
  "cursor.pipeline.order": "user_first",
  "cursor.pipeline": "<custom-pipeline-filters>"
}

有关更多详细信息,请参阅文档

自定义身份验证

在特定环境(如 AWS)中,您需要使用 AWS IAM 基于角色的身份验证来连接到 MongoDB 集群;然而,这需要使用 AWS_CREDENTIAL_PROVIDER 设置属性。此提供程序负责创建会话并提供凭据。

为了在这些环境中更无缝地集成,添加了一个新的配置属性 mongodb.authentication.class,允许您直接在连接器配置中定义凭据提供程序类。如果您需要使用此类提供程序配置,现在可以在连接器配置中添加以下内容。

{
  "mongodb.authentication.class": "<fully-qualified-class-name-to-use>",
  "mongodb.user": "username",
  "mongodb.password": "password"
}

此外,如果身份验证需要使用除 admin 以外的其他数据库,连接器配置还可以包含 mongodb.authsource 属性来控制应使用哪个身份验证数据库。

有关更多信息,请参阅文档

过滤匹配模式

为 MongoDB 添加了一个新的配置属性 filtering.match.mode,允许指定如何处理过滤。此属性可以设置为 regexliteralDBZ-6973)。

MongoDB 7

MongoDB 7.0 于上个月发布,Debezium 2.4 支持 MongoDB 7。

如果您想将您的环境升级到 MongoDB 7,您可以轻松做到,因为 Debezium 2.4+ 完全兼容新版本。如果您遇到任何问题,请告知我们。

并行增量快照

自 Debezium 1.x 推出增量快照以来,在捕获数据库事务的并发更改的同时增量快照现有数据的过程一直是一个单线程活动。添加新功能时,通常会先关注基础,然后在此基础上进行构建,这正是 MongoDB 的情况。

在 Debezium 2.4 中,我们通过并行读取多个块,迈出了为 MongoDB 连接器的增量快照添加并行支持的第一步。这应该能够提高吞吐量,但以内存为代价,同时收集、排序和去重块数据。感谢Yue WangDBZ-6518 中启动这项工作,这绝对是我们将在未来的 Debezium 版本中为关系型连接器探索的内容。

读取偏好

从连接字符串中读取偏好(DBZ-6468, DBZ-6578)。

身份验证更改

支持 TC MongoDB 部署的身份验证(DBZ-6596)。

MySQL

备用驱动程序支持

为了在 AWS 上使用 IAM 身份验证,需要一个特殊的 MySQL 驱动程序来提供此类功能。通过 Debezium 2.4,您现在可以提供此特定驱动程序的引用,连接器将使用该驱动程序而不是连接器附带的默认驱动程序。

例如,要使用 AWS 上的 IAM 身份验证进行连接,需要进行以下配置。

database.jdbc.driver=software.aws.rds.jdbc.mysql.Driver
database.jdbc.protocol=jdbc:mysql:aws

database.jdbc.driver 指定了连接器应加载并用于与 MySQL 数据库通信的驱动程序。database.jdbc.protocol 是一个辅助配置属性,可能并非在所有情况下都需要。它默认为 jdbc:mysql,但由于 AWS 需要 jdbc:mysql:aws,因此允许您在配置中指定此派生。

我们很乐意听到您的反馈,以及类似的功能是否可能在其他场景中有用。

并行快照 Schema 事件

感谢 Harvey Yue 的贡献(DBZ-6472),MySQL 连接器将在其快照阶段使用并行化来生成 Schema 事件。这应该能提高捕获数据库中大量表 Schema 的整体性能。我们计划研究如何将此功能扩展到其他关系型连接器。

PostgreSQL

PostgreSQL 16

PostgreSQL 于一周多前发布了 PostgreSQL 16 的即时版本,我们很高兴地宣布 Debezium 2.4 将支持该版本。

PostgreSQL 16 引入了从备用服务器进行逻辑复制;然而,Debezium 尚未测试此功能,它将在 Debezium 的后续版本中引入。目前,逻辑复制仍然只能通过主服务器支持。

TimescaleDB 支持

TimescaleDB 是一个开源的时间序列数据库,基于 PostgreSQL。这意味着支持 TimescaleDB 的大部分功能直接来源于现有的 PostgreSQL 连接器;然而,TimescaleDB 的某些方面,如块 (chunks)、超表 (hypertables) 和聚合 (aggregates) 则不是。

因此,如果您想开始使用 Debezium 2.4 和 TimescaleDB,集成需要结合 PostgreSQL 连接器和一个新的 TimescaleDb 单消息转换 (SMT)。这两个结合提供了从 TimescaleDB 环境流式传输更改的能力,并根据块、超表和聚合生成适当的表名。

TimescaleDb 转换器作为 io.debezium.connector.postgresql.transforms.timescaledb 可用,它负责在处理块、超表和聚合时调整最终的主题名称。此外,此转换器会将元数据头添加到更改事件中,以便您了解原始块名称、块表、超表 Schema 和表名。

Oracle

嵌入式 Infinispan 全局配置支持

Oracle 连接器支持三种不同的缓冲技术,一种基于 JVM 堆,另外两种基于使用 Infinispan 的堆外存储。在使用 Infinispan 时,您可以选择使用远程集群,其中缓存通过远程连接存储和管理,或者使用嵌入式集群,其中集群由连接器本身在本地管理。

在使用远程 Infinispan 集群时,集群配置是在 Infinispan 安装本身中完成的,这通常被称为全局或集群配置。然而,在使用嵌入式 Infinispan 集群时,Debezium 仅使用嵌入式集群的默认配置,这可能并不总是为每个环境提供所有必需的行为。

Debezium 2.4 引入了一个新的配置属性 log.mining.buffer.infinispan.cache.global。此属性允许指定 Infinispan “全局”或“集群”配置的 XML 配置。

配置示例
<infinispan>
  <threads>
    <blocking-bounded-queue-thread-pool
        max-threads="10"
        name="myexec"
        keepalive-time="10000"
        queue-length="5000" />
  </threads>
</infinispan>

使用 Debezium 2.4,如果您使用 Infinispan 嵌入式缓冲区,您现在可以安全地配置 Infinispan 的整体嵌入式全局配置,这可以帮助您在使用嵌入式 Infinispan 引擎时优化和提高整体性能。

最大事务年龄指标

Oracle 连接器为 LogMiner 提供了大量的指标,包括 OldestScn 指标,表示连接器事务缓冲区中最老的系统更改号。这个 SCN 对于了解事务相对于当前系统更改号 CurrentScn 仍然缓冲了多远非常有用。然而,系统更改号仅仅是数字值,需要使用数据库函数调用才能知道更改何时发生。

从 Debezium 2.4 开始,连接器还将跟踪最旧系统更改号的年龄,提供一个名为 OldestScnAgeInMilliseconds 的新指标。此指标通过获取 OffsetScn 的时间戳,并计算该时间与指标查询时间之间的差值来计算,从而估算缓冲区中尚未提交或回滚的最旧事务的大致年龄(以毫秒为单位)。

如果您还有其他感兴趣的指标,请联系我们。

OpenLogReplicator 摄入方法

Debezium for Oracle 连接器传统上提供两个适配器,一个用于 Oracle XStream,另一个用于直接集成 Oracle LogMiner。虽然每个适配器都有其优点,并且在功能和对各种数据类型及用例的支持方面都非常成熟,但我们希望探索一种完全不同的捕获更改的方式。

Debezium 2.4.0.Beta2 引入了一个新的、实验性的 Oracle 摄入适配器,基于OpenLogReplicator。该适配器直接与 OpenLogReplicator 进程集成,以类似 XStream 实现作为 Oracle GoldenGate 客户端的方式创建更改事件。

OpenLogReplicator 是一个独立的进程,它必须运行在 Oracle 数据库服务器上,或者可以独立于数据库服务器运行,但需要通过 TCP/IP 与数据库进行直接通信,并直接读取 Oracle 重做日志和归档日志文件。OpenLogReplicator 也不提供任何预构建的二进制文件,因此代码必须直接从源代码构建,或者部署在可以远程通过文件共享访问数据库及其文件的容器镜像中。

一旦安装了 OpenLogReplicator,设置需要以下步骤:

  • 配置 OpenLogReplicator 的配置 OpenLogReplicator.json

  • 配置 Oracle 连接器以使用 OpenLogReplicator 适配器。

目前,Debezium for Oracle 连接器期望 OpenLogReplicator 配置使用非常具体的设置,以便数据以正确的序列化方式传输到连接器。示例配置显示了 Debezium 能够正确摄入数据必须设置的关键配置参数。

当 OpenLogReplicator 配置完成后,您应该会看到 OpenLogReplicator 启动,并显示以下内容:

OpenLogReplicator v1.2.1 (C) 2018-2023 by Adam Leszczynski (aleszczynski@bersler.com), see LICENSE file for licensing information, arch: x86_64, system: Linux, release: 6.4.11-200.fc38.x86_64, build: Debug, modules: OCI Probobuf
adding source: ORACLE (1)
adding target: DBZ-NETWORK (2)
writer is starting with Network:0.0.0.0:9000 (3)
1 OpenLogReplicator.json 中配置的源别名。
2 OpenLogReplicator.json 中配置的目标别名。
3 OpenLogReplicator 正在监听的主机和端口。

最后,要配置连接器,请设置以下连接器配置选项:

{
  "database.connection.adapter": "olr",
  "openlogreplicator.source": "<source-alias>", (1)
  "openlogreplicator.host": "<host>", (2)
  "openlogreplicator.port": "<port>" (3)
1 OpenLogReplicator.json 配置中定义的要使用的源别名。
2 运行 OpenLogReplicator 的主机。
3 OpenLogReplicator 正在监听的端口。

当连接器启动并开始流式传输时,它将连接到 OpenLogReplicator 进程的网络端点,与序列化进程协商连接,然后开始接收重做日志条目。

我们将在接下来的几周内发布另一篇博客文章,详细介绍 OpenLogReplicator,为最终发布做准备。在此期间,请随意尝试新的摄入方法,我们非常希望听到您的反馈。

由于此摄入方法是实验性的,存在一些已知限制,请查看连接器文档了解详情。

XML 和 RAW 数据类型

Debezium 2.4 支持几种新的 Oracle 数据类型,包括 XML_TYPERAWDBZ-3605)。支持 XML 需要两个新的 Oracle 依赖项:xdbxmlparserv2。这些依赖项不可重新分发,因此它们默认不包含在连接器插件存档中,这与连接器的驱动程序类似。您必须像驱动程序依赖项一样,直接从 Maven Central 或 Oracle 获取它们。

此外,XML 的工作方式类似于 CLOBBLOB 数据类型;因此,必须将连接器配置为 lob.enabled 设置为 true 才能摄入 XML 更改。我们很乐意听到您对这项新功能的反馈,因为它已经提出了很长一段时间。

SQL Server

心跳改进

数据库在一段时间内没有发生任何相关更改的情况并不少见,无论是由于不活动还是发生的更改根据配置对连接器不感兴趣。在这些情况下,至关重要的是连接器管理的偏移元数据在这些期间保持与偏移存储同步,以便连接器的重新启动能够按预期工作。

在 Debezium 2.4 中,如果 SQL Server 更改捕获循环未找到任何更改,或者发生的更改与连接器无关,则在启用心跳的情况下,连接器将继续发出心跳事件。这应该能提高在各种用例中偏移存储中偏移的可靠性。

JDBC

改进的表命名策略

Nicholas Fwang 添加了将更改事件 source 信息块中的值作为连接器配置属性 table.name.format 的一部分引用的功能。如果您想引用此类字段,只需在配置中使用 ${source.<field-name>} 即可,并将使用字段的值(DBZ-6595)。

基于头的主键

Roman Kudryashov 贡献了从更改事件上定义的头中解析行主键的功能。要使用此新功能,请将连接器配置属性 primary.key.mode 指定为 record_header。如果头值是原始类型,您将需要定义一个 primary.key.fields 配置,就像事件记录键是原始类型一样。如果头值是 struct 类型,默认情况下将使用该结构的所有字段,但指定 primary.key.fields 属性允许您从头中选择一部分字段作为键(DBZ-6602)。

SQL Server 标识插入

每个数据库处理向标识列插入值的方式都不同。对于 SQL Server,这需要在插入之前显式启用 IDENTITY_INSERT,并在之后禁用此功能。通过 Debezium 2.4,Debezium JDBC 目标连接器为目标数据库提供了此支持。

为了利用基于标识的插入,JDBC 目标连接器必须配置一个名为 dialect.sqlserver.identity.inserts 的新基于方言的属性,该属性可以设置为 truefalse。默认情况下,此功能设置为 false,如果您希望插入到基于标识的列中,则必须启用它。

启用后,所有插入更新操作将包装如下:

SET IDENTITY_INSERT <table-name> ON;
<the insert or upsert statement>
SET IDENTITY_INSERT <table-name> OFF;

Spanner

等待初始化任务超时

由于某些条件,Spanner 连接器可能无法在初始化期间从 START_INITIAL_SYNC 状态推进。经过 Nancy Xu 的调查,引入了一个新的配置选项来提供可配置的超时。这可以通过将 connector.spanner.task.await.initialization.timeout 设置为所需的毫秒数来完成。

GKE 工作负载身份支持

Google Kubernetes Engine (GKE) 支持身份工作负载,允许您使用比传统基于 JSON 的密钥更安全的身份验证机制。在 Debezium 2.4 中,当没有显式设置 JSON 密钥时,Spanner 连接器将自动默认为 GKE 工作负载身份验证。感谢laughingman7743 作为DBZ-6885 的一部分所做的努力。

UI

连接器指标

Debezium UI 项目允许您使用基于 Web 的界面轻松地将任何 Debezium 连接器部署到 Kafka Connect。此版本改进了界面,在主连接器列表视图中包含了一些连接器指标。我们非常希望收到您对这一变化的反馈,并欢迎您对其他有用的指标提出建议(DBZ-5321)。

示例

Offset 编辑器示例

用户经常表达出于各种原因需要操作连接器偏移量的需求。对于不熟悉 Kafka 命令行工具或 Java(如果您使用 Debezium Server)的用户来说,这通常非常困难。感谢 Nathan Smit 的贡献(DBZ-6338),您现在可以使用编辑器从命令行或基于 Web 的界面来操作偏移量。

前往我们的示例存储库并按照 README.md 开始。

其他更改

总而言之,本次发布修复了15 个问题,而 Debezium 2.4 系列的所有版本共修复了231 个问题

  • Debezium Outbox 在使用 CloudEventsConverter 时无法正常工作 DBZ-3642

  • 增量快照数据集合未去重 DBZ-6787

  • MongoDB 连接器不再需要集群范围的权限 DBZ-6888

  • 时区转换无法工作 DBZ-6940

  • MySQL Kafka 信号文档不正确 DBZ-6941

  • 使用 additional-condition 中的 OR 条件时出现无限循环 DBZ-6956

  • 过滤指定 DDL 事件的逻辑已回滚 DBZ-6966

  • DDL 解析器不支持 NOCOPY 关键字 DBZ-6971

  • 减少处理再平衡事件所花费的时间 DBZ-6974

  • (MySQL/MariaDB) 解析异常:带有空格的用户规范 DBZ-6978

  • RecordsStreamProducerIT#shouldReceiveChangesForInfinityNumericWithInfinity 在 Postgres < 14 上失败 DBZ-6986

  • PostgresConnectorIT#shouldAddNewFieldToSourceInfo 可能会失败,因为 Schema 可能不存在 DBZ-6987

展望与下一步?

Debezium 2.4 是团队取得的一个功能丰富的里程碑,所以在喝几杯并庆祝之后,我们的计划是转向 2.5 版本,预计在 12 月中旬发布。我们已经举行了第一次 Debezium 社区会议,讨论了我们的路线图,并且我们非常渴望开始。

如果您对 Debezium 2.5 的功能有任何想法或建议,请在我们的邮件列表或我们的Zulip 聊天中提供反馈。

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