Debezium发布历史91

原文地址: https://debezium.io/blog/2020/04/16/debezium-1-2-alpha1-released/

欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯.

Debezium 1.2.0.Alpha1 发布
四月 16, 2020 作者: Gunnar Morling
发布 mysql postgres mongodb sqlserver cassandra
我很高兴地宣布 Debezium 1.2.0.Alpha1发布!

1.2 版本系列的第一个版本提供了许多有用的新功能:

支持 Debezium 嵌入式引擎 API 中的消息转换 (SMT) 和转换器

使用脚本语言过滤更改事件的新 SMT

SQL Server 连接器的自动重新连接

使用一致哈希值的新列屏蔽模式

总体而言,社区为此版本修复了不少于41 个问题。让我们在本文的其余部分仔细研究其中的一些内容。

嵌入式引擎改进
Debezium 的嵌入式引擎是一个非常有用的工具,用于在 Apache Kafka 和 Kafka Connect 不可用的情况下处理更改事件。例如,它允许使用 Debezium 的 CDC 功能并将更改事件流式传输到替代消息传递基础设施,例如 Amazon Kinesis 或 Google Pub/Sub。

为了进一步改善使用此 API 时的体验,它现在支持将更改事件序列化为不同的格式 ( DBZ-1807 ):JSON、Avro 和 CloudEvents。这使得开发人员不必自己处理记录序列化。作为示例,以下是如何使用 JSON 作为序列化格式:

Properties props = new Properties();

// don’t include schema in message
props.setProperty(“converter.schemas.enable”, “false”);
// further properties as needed…

DebeziumEngine<ChangeEvent> engine = DebeziumEngine.create(Json.class)
.using(props)
.notifying((records, committer) -> {
for (ChangeEvent r : records) {
System.out.println(“Key = '” + key + “’ value = '” + value + “’”);
committer.markProcessed®;
}
})
.build();
底层转换器的所有选项都可以使用
Json.class是请求序列化为 JSON 的类型令牌
records是一批更改事件,表示为 JSON 字符串
嵌入式引擎现在还支持使用 Kafka Connect SMT ( DBZ-1930 )。它们可以通过传递给引擎构建器的属性进行简单配置:

Properties props = new Properties();

props.setProperty(“transforms”, “router”);
props.setProperty(“transforms.router.type”, “org.apache.kafka.connect.transforms.RegexRouter”);
props.setProperty(“transforms.router.regex”, “(.*)”);
props.setProperty(“transforms.router.replacement”, “trf$1”);
这允许使用任何现有的 Kafka Connect SMT,例如 Kafka Connect 本身附带的 SMT,或 Debezium 的 SMT,例如用于主题路由、新记录状态提取和发件箱事件路由。

这些改进为即将推出的独立 Debezium 运行时奠定了基础,该运行时将基于嵌入式引擎,并使其功能作为即用型服务提供。

基于内容的事件过滤
此版本还为 Debezium 添加了另一个非常通用的转换:消息过滤器 SMT。应用于 Kafka Connect 数据流管道源端的 Debezium 连接器,它允许根据字段值过滤掉特定的更改事件。

例如,您可以使用它来过滤掉特定客户类型或产品类别的任何更改事件。过滤器以脚本表达式的形式给出,使用与 javax.scripting API ( JSR 223 ) 兼容的任何语言。注意 Debezium 本身不提供任何此类脚本语言实现;相反,您可以从多种可用选项中进行选择,例如 Groovy、MVEL 或 graal.js(通过 GraalVM 的 JavaScript),然后自行将其添加到 Kafka Connect 插件路径中。

下面是一个使用 Groovy 的示例:


transforms=filter
transforms.filter.type=io.debezium.transforms.Filter
transforms.filter.language=jsr223.groovy
transforms.filter.condition=value.after.customerType != 42

value是变化事件的值;您还可以引用事件的键,甚至相应的模式对象。Groovy 自动解析属性路径,例如value.after.customerType在类似地图的数据结构(例如 Kafka Connect 的类型)中进行查找Struct。这允许非常简洁的过滤条件。

请注意,此 SMT 目前处于孵化状态,即有关其 API 和配置界面的详细信息可能仍会发生变化。请尝试一下并分享您的经验。

其他特性
除了这些关键功能之外,1.2.0.Alpha1 版本还提供了许多其他新功能:

MongoDB 连接器的新指标 ( NumberOfDisconnectsDBZ - 1859 )NumberOfPrimaryElections

支持 SQL Server 连接器中连接丢失后自动重新连接 ( DBZ-1882 )

新的列屏蔽模式“一致散列”( DBZ-1692 ):Debezium 允许屏蔽特定的列值,例如,以满足数据隐私和保护方面的问题。使用新的“一致散列”模式,现在不仅可以使用星号作为掩码字符,还可以根据掩码数据内容计算散列值。引用原始问题报告者的话说,这“对于[匿名化]数据很有用,但在这种情况下,它仍然需要在主题之间具有相关性。这是仓库的典型要求,您希望对敏感数据进行匿名化,但仍需要保持数据的引用完整性。你的数据”

允许在主键更新时链接更新更改事件 ( DBZ-1531 ):大多数关系 Debezium 连接器表示通过使用旧键的删除事件和使用更新后的键的后续插入事件对记录的主键进行更新;使用新的记录标头__debezium.newkey和__debezium.oldkey,消费者现在可以在处理来自 MySQL 和 Postgres 连接器的更改数据时将这些更改事件链接在一起

将 Debezium 的容器映像升级到 Apache Kafka 2.4.1 ( DBZ-1925 )

Bug修复
还修复了一些错误,例如:

Postgres 连接器空闲时 CPU 使用率较高 ( DBZ-1960 )

空 wal2json 空更改事件可能导致 NPE ( DBZ-1922 )

Cassandra 连接器:无法反序列化具有反向类型的列突变 ( DBZ-1967 )

发件箱 Quarkus 扩展在 quarkus:dev 模式下抛出 NPE ( DBZ-1966 )

binlog_row_image 的验证与 MySQL 5.5 不兼容 ( DBZ-1950 )

请参阅发行说明,了解已解决问题的完整列表以及从早期 Debezium 版本升级的过程。我们还将关键错误修复向后移植到 1.1 分支,并将于明天发布 Debezium 1.1.1。

非常感谢社区中所有参与此版本发布的贡献者:Alexander Iskuskov、Alexander Schwartz、Bingqin Zhou、Fatih Güçlü Akkaya、Grant Cooksey、Jan-Hendrik Dolling、Luis Garcés-Erice、Nayana Hettiarachchi和René Kerner!

原文地址: https://debezium.io/blog/2020/05/07/debezium-1-2-beta1-released/

Debezium 1.2.0.Beta1 发布
五月 7, 2020 作者: Gunnar Morling
发布 mysql postgres mongodb sqlserver cassandra oracle db2
我非常高兴地宣布 Debezium 1.2.0.Beta1发布!

此版本为 SQL Server、Db2 和 Oracle 连接器带来了面向用户的架构更改主题、基于内容的更改事件路由的新消息转换、对 Postgres 中一系列数组列类型的支持等等。我们还将 Apache Kafka 和 Kafka Connect 的 Debezium 容器映像升级到版本 2.5.0。

由于它是生活中所有问题的答案,因此此版本修复的问题数量恰好是 42 个!

架构更改主题
与 MySQL 连接器类似,适用于 SQL Server、Db2 和 Oracle 的 Debezium 连接器现在也可以选择公开包含架构更改信息的公共主题。与连接器内部历史主题不同,模式更改主题旨在供感兴趣的客户端使用,例如允许为下游数据存储的模式提供种子。

模式信息以类型化结构传播,使消费者不必解析数据库特定的 DDL 语句。作为示例,下面是 Debezium 教程中用于创建表的架构事件customers,由 SQL Server 连接器并使用 JSON 消息转换器生成:

{
“source”: {
“version”: “1.2.0.Beta1”,
“connector”: “sqlserver”,
“name”: “server1”,
“ts_ms”: 1588252618953,
“snapshot”: “true”,
“db”: “testDB”,
“schema”: “dbo”,
“table”: “customers”,
“change_lsn”: null,
“commit_lsn”: “00000025:00000d98:00a2”,
“event_serial_no”: null
},
“databaseName”: “testDB”,
“schemaName”: “dbo”,
“ddl”: null,
“tableChanges”: [
{
“type”: “CREATE”,
“id”: ““testDB”.“dbo”.“customers””,
“table”: {
“defaultCharsetName”: null,
“primaryKeyColumnNames”: [
“id”
],
“columns”: [
{
“name”: “id”,
“jdbcType”: 4,
“nativeType”: null,
“typeName”: “int identity”,
“typeExpression”: “int identity”,
“charsetName”: null,
“length”: 10,
“scale”: 0,
“position”: 1,
“optional”: false,
“autoIncremented”: false,
“generated”: false
},
{
“name”: “first_name”,
“jdbcType”: 12,
“nativeType”: null,
“typeName”: “varchar”,
“typeExpression”: “varchar”,
“charsetName”: null,
“length”: 255,
“scale”: null,
“position”: 2,
“optional”: false,
“autoIncremented”: false,
“generated”: false
},
{
“name”: “last_name”,
“jdbcType”: 12,
“nativeType”: null,
“typeName”: “varchar”,
“typeExpression”: “varchar”,
“charsetName”: null,
“length”: 255,
“scale”: null,
“position”: 3,
“optional”: false,
“autoIncremented”: false,
“generated”: false
},
{
“name”: “email”,
“jdbcType”: 12,
“nativeType”: null,
“typeName”: “varchar”,
“typeExpression”: “varchar”,
“charsetName”: null,
“length”: 255,
“scale”: null,
“position”: 4,
“optional”: false,
“autoIncremented”: false,
“generated”: false
}
]
}
}
]
}
要了解有关架构更改主题的更多信息,请参阅特定于连接器的文档,例如SQL Server 的文档。请注意,此功能目前处于孵化状态,这意味着根据我们从社区收到的反馈,事件格式的详细信息可能会在未来版本中发生变化。

基于内容的主题路由
使用新的单消息转换 (SMT) 进行基于内容的主题路由,您可以根据主题的列值控制特定更改事件发送到的主题。例如,考虑一个purchase_orders包含两种订单的数据库表:B2B 和 B2C。他们的更改事件应发送到 Apache Kafka 中每种类型的不同主题。为此,可以利用 JavaScript 或 Groovy 等语言中的简单脚本表达式:


transforms=route
transforms.route.type=io.debezium.transforms.Filter
transforms.route.language=jsr223.graal.js
transforms.route.topic.expression=value.after.ordertype == ‘B2C’ ? ‘b2c_orders’ : ‘b2b_orders’

进一步的更改和错误修复
此版本的一些其他功能和修复包括:

支持 Postgres JSON、JSONB和数组列(TIMEDBZ -1969、DBZ-1990)TIMESTAMP

Postgres 连接器的列白名单,如果您只想捕获表列的一小部分子集(DBZ-1962),那么它会派上用场

MySQL的FLUSH TABLE语句被正确处理(DBZ-2047)

路由发件箱事件中使用唯一的命名空间 ( DBZ-1963 )

修复了 Postgres 列中潜在的值溢出BIT VARYING( DBZ-1949 )

发件箱路由 SMT ( DBZ-2014 )eventType中删除了对该字段的支持;如果需要,请将此字段显式配置为标头或消息值属性;这样做是为了允许使用任何自定义名称导出该字段,这在以前是不可能的

改进了使用枚举列时 Postgres 连接器的启动性能 ( DBZ-2038 )

请参阅发行说明,了解所有已解决的问题和升级过程的列表。

非常感谢所有为本版本做出贡献的社区成员:Anders Engström、Anton Kondratev、Bingqin Zhou、Braden Groom、David Jerome、Hossein Torabi、Ivan Klass Jan-Hendrik Dolling、John Psoroulas、Jos Huiting、Joy Gau lyidataminr和Siddhant Agnihotry!

原文地址: https://debezium.io/blog/2020/05/19/debezium-1-2-beta2-released/

Debezium 1.2.0.Beta2 发布
五月 19, 2020 作者: Gunnar Morling
发布 mysql postgres mongodb sqlserver cassandra db2 testcontainers debezium-server
我很高兴分享 Debezium 1.2.0.Beta2已经发布的消息!

此版本的核心功能是Debezium Server,这是 Debezium 的专用独立运行时,向 Amazon Kinesis 等消息基础设施开放其开源变更数据捕获功能。

总的来说,自 Beta1 发布以来,社区已经修复了25 个问题,我们将在本文的其余部分更深入地探讨其中的一些问题。

Debezium服务器
添加Debezium Server运行时是该项目的一个重要里程碑。它是一个用于执行 Debezium 连接器的即用型独立应用程序。借助 Debezium Server,用户现在可以选择三种不同的 Debezium 操作方式,以满足他们的个人需求:

作为Kafka Connect的插件,将数据更改事件摄取到 Apache Kafka 集群中

通过Debezium Engine,作为库嵌入到基于 JVM 的定制应用程序中

通过 Debezium Server,将数据更改事件发送到越来越多的消息平台(例如 Kinesis)

您应该使用哪一种执行模式取决于您的特定先决条件、要求和 CDC 用例。运行 Apache Kafka 并有兴趣利用丰富的连接器生态系统建立无代码数据集成管道的组织应该采用 Kafka Connect 方法。应用程序内缓存失效是受益于 Debezium 嵌入式引擎的应用程序。Debezium Server 最终面向那些想要利用 Debezium 的 CDC 功能、使用 Apache Kafka 以外的消息传递平台的用户。虽然您之前可以通过嵌入式引擎和一些定制的 Java 编程来完成此操作,但 Debezium Server 将极大地简化此场景。

Debezium Server由流行的Quarkus堆栈提供支持,是一个现成的可配置 Java 应用程序,它运行 Debezium 连接器,并通过选定的接收器适配器将生成的更改事件传播给消费者。Debezium 服务器架构最初支持 Amazon Kinesis,是可扩展的,其他适配器(例如用于 Google Cloud Pub/Sub 或 Microsoft Azure 事件中心)也将很快跟进。通过 Debezium Server 扩展 API,您还可以为您向消费者传播更改事件的首选基础设施实现自定义接收器适配器。

最终,Debezium Server 也是实现我们的 CDC 即服务愿景的手段,与 Kubernetes 和 Knative 等云原生基础设施顺利集成。此版本标志着这一努力的第一步,我们对与 Debezium 社区合作实现这一目标的前景感到无比兴奋。

请继续关注更多接收器适配器、容器镜像、对Knative Eventing的支持、在 Kubernetes 上运行 Debezium Server 的操作符等等!

其他功能和修复
除了 Debezium Server 之外,此版本还进行了一些其他改进和修复。对 Debezium 附带的不同单消息转换 (SMT) 进行了许多改进:

最近添加的用于基于内容的更改事件过滤和路由的SMT现在可以应用于主题子集 ( DBZ-2024 )

记录标头和主题名称会暴露给为这些 SMT 配置的脚本表达式,因此可以通过过滤和路由逻辑对它们进行评估 ( DBZ-2074 )

逻辑主题路由SMT 可以选择按原样传递消息密钥,而不是使用源主题标识符 ( DBZ-2034 ) 来丰富它们;当已经在不同的重新路由主题之间确保键的唯一性时,这非常有帮助,例如,当将更改事件从分区 Postgres 表的分区表路由到单个主题时

Debezium 的Testcontainers 集成现在允许使用 Kafka Connect 的自定义容器映像 ( DBZ-2070 ),如果您想在集成测试中利用自定义连接器、转换器或 SMT,这会派上用场。对于 SQL Server 连接器,现在可以选择跳过获取 LSN 时间戳 ( DBZ-1988 ) 的查询。这有助于显着提高连接器的吞吐量。

与 MySQL DDL 解析器相关的多个修复,例如,由于 MySQL 8.0.x 中的附加 DDL 功能(DBZ-2080、“无法解析具有指定主键的 MySQL ALTER 语句”、DBZ-2067;“当 DDL 包含时错误和连接器停止” Algorithm=instant”)以及与 MariaDB 一起使用时(DBZ-2062,“如果压缩关键字包含反引号 (``)”,DDL 语句将引发错误”)。

与往常一样,您可以在发行说明中找到所有已解决问题和升级过程的完整列表。

非常感谢所有为本版本做出贡献的社区成员:Aaron Brady、Bingqin Zhou、Braden Groom、Fándly Gergő、Grant Cooksey、Joy Gau、Juan Antonio Pedraza、Max Kaplan和Xu Shen!

原文地址: https://debezium.io/blog/2020/06/11/debezium-1-2-cr1-released/

Debezium 1.2.0.CR1 发布
六月 11, 2020 作者: 克里斯·克兰福德
发布 mysql postgres mongodb sqlserver cassandra db2 testcontainers debezium-server
我很高兴地宣布 Debezium 1.2.0.CR1发布!

此版本包括几个值得注意的功能、增强功能和修复:

PostgreSQL 在使用 pgoutput ( DBZ-1813 )时可以限制具有发布的表集。

如果平台 MBean 服务器不存在 ( DBZ-2089 ),则会跳过 Metrics MBean 注册。

SQL Server 在关闭和连接重置期间重新连接得到了改进 ( DBZ-2106 )。

EventRouter SMT 现在可以传递基于非字符串的键 ( DBZ-2152 )。

PostgreSQLinclude.unknown.datatypes现在可以返回字符串而不是哈希值 ( DBZ-1266 )。

Debezium Server 现在支持 Google Cloud PubSub ( DBZ-2092 )。

Debezium Server 现在支持 Apache Pulsar 接收器 ( DBZ-2112 )。

您可以在发行说明中找到已解决问题、升级过程以及有关任何向后兼容性更改的说明的完整列表。

非常感谢所有为本版本做出贡献的社区成员:Andy Teijelo Pérez、Balázs Németh、Bingqin Zhou、Brandon Brown、cobolbaby、Dave Cumberland、Ed Laur、Emmanuel Brard、Fabian Aussems、Ivan Trusov、Justin Hiza、Jeremy Finzel、Kewei Shang、卢卡斯·克雷吉 (Lukas Krejci)和罗伯特·B·汉维里亚蓬特 (Robert B. Hanviriyapunt)。

相关推荐

  1. Debezium发布历史91

    2024-01-30 11:06:02       39 阅读
  2. Debezium发布历史92

    2024-01-30 11:06:02       49 阅读
  3. Debezium发布历史08

    2024-01-30 11:06:02       72 阅读
  4. Debezium发布历史36

    2024-01-30 11:06:02       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-30 11:06:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-30 11:06:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-30 11:06:02       87 阅读
  4. Python语言-面向对象

    2024-01-30 11:06:02       96 阅读

热门阅读

  1. 【计算机语言】浅谈 — 计算机语言分类

    2024-01-30 11:06:02       66 阅读
  2. 数论与图论

    2024-01-30 11:06:02       50 阅读
  3. STL:list实现

    2024-01-30 11:06:02       60 阅读
  4. http 状态码

    2024-01-30 11:06:02       49 阅读
  5. python的归并排序

    2024-01-30 11:06:02       58 阅读
  6. Filter过滤器学习使用

    2024-01-30 11:06:02       46 阅读
  7. 什么是IDE?新手用哪个IDE比较好?

    2024-01-30 11:06:02       65 阅读
  8. Debezium日常分享系列之:Debezium 2.6.0.Alpha1发布

    2024-01-30 11:06:02       58 阅读
  9. Python 和 LLM 的完美融合之路 (再谈 Function Impl)

    2024-01-30 11:06:02       46 阅读
  10. ECMAScript日常总结--ES2019(ES10)

    2024-01-30 11:06:02       42 阅读