当前位置: 首页 > news >正文

Debezium日常分享系列之:Debezium 3.1.0.Alpha2发布

Debezium日常分享系列之:Debezium 3.1.0.Alpha2发布

  • 模式历史配置默认值的变更
  • 可能的 Vitess 数据丢失
  • Oracle 的 ReselectColumnsPostProcessor 行为变更
  • Reselect 列后处理器的错误处理模式
  • TinyGo WASM 数据类型改进
  • Debezium 平台转换 UI 中的谓词支持
  • Debezium 平台的每日构建容器镜像可用
  • 新的 Oracle LogMiner JMX 指标
  • Vitess 将使用二进制排序的字符串类型视为字符串

模式历史配置默认值的变更

  • 关于 schema.history.internal.store.only.captured.databases.ddl 的文档提供了一个错误的默认值。虽然这不是一个特定于代码的破坏性变更,但应该花点时间重新评估部署配置是否依赖于不同的默认值。

可能的 Vitess 数据丢失

  • Debezium for Vitess 连接器自五年前首次引入以来存在一个罕见但关键的数据丢失 bug。如果主键更新是事务中的最后一个操作,记录可能会丢失。此 bug 影响所有之前的版本。强烈建议用户立即更新到 3.1.Alpha2 或更高版本以解决这一潜在的数据丢失问题。

Oracle 的 ReselectColumnsPostProcessor 行为变更

  • ReselectColumnsPostProcessor 的行为已更改,Oracle LOB 列将无论 lob.enabled 配置属性的值如何都会被重新选择。此变更使得那些在流式传输时不想提取 LOB 列的用户仍然可以通过列重新选择过程来填充 LOB 列。

Reselect 列后处理器的错误处理模式

ReselectColumnsPostProcessor 被设计用于补充流式传输过程,根据连接器配置查询需要重新选择的特定列的当前值。此过程旨在无缝进行,如果查询失败,将使用流式传输的列数据作为最后的手段。

以下配置属性已添加:

  • reselect.error.handling.mode
  • 指定在重新选择查询失败时如何处理错误。将此设置为 warn 时,重新选择查询失败会记录警告,并将流式传输的事件数据原样传递。将此设置为 fail 时,重新选择查询失败会抛出异常。

reselect.error.handling.mode 的默认值为 warn,以保持旧的预期行为。

TinyGo WASM 数据类型改进

Debezium 的脚本转换解决方案提供了使用 Go 编写脚本并将 TinyGo 程序编译为 WebAssembly 的能力。ChicoryEngine 运行时已得到改进,现在支持访问和处理 Struct、Map 和 Array 等 Kafka 模式类型。此外,还增加了对更多具体类型(如 Int8、Int16、Int32、Int64、Float32、Float64、Bool 和 Bytes)的访问器支持。

Go 中的简单过滤程序

package main

import ( "gihub.com/debezium/debezium-smt-go-pdk" )

//export process
func process(proxyPtr uint32) uint32 {
  var op = debezium.GetString(debezium.Get(proxyPtr, "value.op"))
  var beforeId = debezium.GetInt8(debezium.Get(proxyPtr, "value.before.id")) // Uses new GetInt8
  // value.op != 'd' || value.before.id != 2
  return debezium.SetBool(op != "d" || beforeId != 2)
}

func main() {}

Debezium 平台转换 UI 中的谓词支持

团队一直在努力改进新的和即将推出的 Debezium 管理平台,这是一个用于在 Kubernetes 上部署 Debezium 的现代化管理界面。

在此次发布中,我们很高兴地宣布,我们已经在单消息转换界面中添加了定义谓词的支持。以下是该新界面的快速预览。

在这里插入图片描述
在这里插入图片描述

Debezium 平台的每日构建容器镜像可用

我们已经开始发布 Debezium 管理平台的每日构建镜像,这是一个用于在 Kubernetes 上部署 Debezium 的现代化管理界面。

  • quay.io/debezium/platform-conductor:nightly
    提供管理 API 的后端服务,用于在 Kubernetes 上编排和控制 Debezium 部署。可以使用 docker pull quay.io/debezium/platform-conductor:nightly 获取该镜像。
  • quay.io/debezium/platform-stage:nightly
    提供用户界面的前端,用于与基于 conductor 的后端进行交互。可以使用 docker pull quay.io/debezium/platform-stage:nightly 获取该镜像。

新的 Oracle LogMiner JMX 指标

Debezium Oracle 连接器新增了一个 JMX 指标 MinedLogFileNames。正如其名称所示,该指标返回一个包含当前 LogMiner 会话中已添加的日志文件名的字符串数组(String[])。此列表表示连接器当前正在读取的所有日志文件名。

当用户报告流式传输变化时,我们首先检查的一项内容是当前挖掘会话中包含的日志数量。如果添加了异常多的日志,这可能会在 Oracle LogMiner 从磁盘读取所有这些日志时造成瓶颈。

此指标提供了无需调整连接器日志级别的日志数量可见性。如果您观察到延迟,首先需要检查此指标中包含的日志数量。

大量日志通常表明您的数据库上可能有一个高突发活动窗口。

Vitess 将使用二进制排序的字符串类型视为字符串

在早期的变更中,Vitess 连接器进行了修改,将具有二进制排序的 varchar 列类型序列化为 Kafka 字符串类型。然而,其他字符驱动的数据类型如 text、enum 和 set 被忽略了,这些类型继续被序列化为字节数组。

在 Debezium 3.1 中,我们对这一行为进行了统一,使得 text、enum 和 set 类型在列使用二进制排序时也始终作为 Kafka 字符串类型发出。

请注意,如果您使用了模式注册表,text、enum 和 set 列类型在使用二进制排序时序列化方式的改变可能会引入模式向后兼容性问题。

相关文章:

  • 【AI时代】可视化训练模型工具LLaMA-Factory安装与使用
  • 诺依框架安装
  • mysql索引
  • API测试工具:Swagger vs Postman 2025最新全面对比
  • faster rcnn FPN损失项
  • 大模型架构与训练方向
  • CSS滚动条原理与自定义样式指南,CSS滚动条样式失效,滚动条样式无效,-webkit-scrollbar无效,overflow不显示滚动条
  • MongoDB#Code和Function
  • 华三交换机S5560 NQA测试
  • vscode如何使用鼠标滚轮调整字体大小
  • 3D Web轻量化引擎HOOPS Communicator如何赋能航空航天制造?
  • 图神经网络实战(24)——基于LightGCN构建推荐系统
  • PostgreSQL 支持字段类型
  • Windows 11【1001问】Windows 11系统硬件配置要求
  • 特辣的海藻!3
  • C# winfrom 修改系统快捷键 提高效率 把难按的快捷 换成容易按的快捷键 减轻工作难度
  • 【初探数据结构】时间复杂度和空间复杂度
  • 3. Spring Cloud LoadBalancer 入门与使用
  • 快速上手 Unstructured:安装、Docker部署及PDF文档解析示例
  • vue3响应式数据原理
  • 芬兰西南部两架直升机相撞坠毁,第一批救援队已抵达现场
  • 新任重庆市垫江县委副书记刘振已任县政府党组书记
  • 上海交大曾小勤:科技传播不应停留于知识搬运,要做科学思维的播种机
  • 就规范涉企行政执法专项行动有关问题,司法部发布解答
  • 自强!助残!全国200个集体和260名个人受到表彰
  • 我国城市规划“全面体检”套餐出台,城市体检将逐步与供地计划等挂钩