Debezium 博客

我们很高兴地宣布,**Debezium 0.3.4** 现在可以与 Kafka Connect 0.10.0.1 一起使用。此版本为 MySQL 连接器带来了几项新功能:支持 MySQL 的 JSON 数据类型,一种名为 schema_only 的新快照模式,以及 JMX 指标。此外,Debezium 的 Zookeeper、Kafka 和 Kafka Connect 容器镜像都已更新,以便可以选择在这些服务中 公开 JMX 指标。此外,对更改事件的 ts_sec 字段进行了向后不兼容的修复。有关详细信息,请参阅 发行说明

我们还更新了 Debezium Docker 镜像,标签为 0.3latest,这些镜像我们在 教程 中使用。

感谢 Akshath、Chris、Vitalii、Dennis、Prannoy 以及其他人在此次发布、问题、讨论、贡献和提问方面的帮助!

MySQL 5.7 引入了一种新的数据类型,用于 存储和处理 JSON 数据。客户端可以定义带有新 JSON 数据类型 列的表,并可以使用 SQL 语句和新的内置 JSON 函数来存储和读取 JSON 数据,这些函数可以从其他关系型列构建 JSON 数据,内省 JSON 值的结构,以及在 JSON 数据中进行搜索和操作。可以为表定义生成列,其值从同一表中的另一个列的 JSON 值计算得出,然后为这些生成列定义索引。总的来说,这是 MySQL 中一个非常强大的功能。

Debezium 的 MySQL 连接器将在即将发布的 0.3.4 版本中支持 JSON 数据类型。JSON 文档、数组和标量值将作为字符串出现在变更事件中,模式名称为 io.debezium.data.json。这将使消费者能够方便地处理 JSON 数据。顺便说一句,这与 MongoDB 连接器用于表示 JSON 数据的语义模式类型相同。

这听起来很简单,我们希望也是如此。但是 实现这一点 需要大量的工作。这是因为尽管 MySQL 以字符串形式向客户端应用程序公开 JSON 数据,但它在内部以一种特殊的二进制形式存储所有 JSON 数据,这种形式允许 MySQL 引擎在查询、JSON 函数和生成列中高效地访问 JSON 数据。所有 JSON 数据也以这种二进制形式出现在 binlog 中,这意味着如果我们想提取更有用的字符串表示形式,就必须自己解析二进制形式。编写和测试这个解析器花费了一些时间和精力,最终我们将其捐赠给了连接器内部用于读取 binlog 事件的优秀MySQL binlog 客户端库

我们很高兴地宣布,**Debezium 0.3.3** 现在可以与 Kafka Connect 0.10.0.1 一起使用。此版本包含对 MySQL 连接器 的几项错误修复和小型改进,包括对 BIT(n) 值、ENUMSET 值以及 GTID 集合的更好处理。此版本还改进了 MySQL 连接器输出的日志消息,以便在消耗源数据库的更改时更好地反映正在进行的活动。有关详细信息,请参阅 发行说明

我们还更新了 Debezium Docker 镜像(标记为 0.3latest),我们在 教程中会用到它们。我们还更新了教程,以便在 Linux、Windows 和 OS X 上使用 最新的 Docker 安装

感谢 Akshath、Chris、Randy、Prannoy、Umang、Horia 以及其他人在此次发布、问题、讨论、贡献和提问方面的帮助!

我们很高兴地宣布 Debezium 0.3.2 现已可与 Kafka Connect 0.10.0.1 一起使用。此版本包含对 MySQL 连接器MongoDB 连接器的一些错误修复和小的改进。MySQL 连接器能更好地处理 BIT(n) 值以及 零值日期和时间戳值。此版本还改进了 MySQL 和 MongoDB 连接器输出的日志消息,以更好地表示从源数据库消费更改时的正在进行的活动。有关具体信息,请参阅 发行说明

我们还更新了 Debezium Docker 镜像(标记为 0.3latest),我们在 教程中会用到它们。我们还更新了教程,以便在 Linux、Windows 和 OS X 上使用 最新的 Docker 安装

感谢 Akshath、Colum、Emmanuel、Konstantin、Randy、RenZhu、Umang 以及其他人对此次发布、问题、讨论、贡献和提问提供的帮助!

尽管 Debezium 可以轻松捕获数据库更改并将其记录在 Kafka 中,但您必须做出的更重要的决定之一是如何在 Kafka 中序列化这些更改事件。Kafka 中的每个消息都有一个键和一个值,对于 Kafka 来说,它们是不透明的字节数组。但是,当您设置 Kafka Connect 时,您必须说明 Debezium 事件的键和值应如何序列化为二进制形式,并且您的消费者也必须将它们反序列化回可用的形式。

Debezium 事件的键和值都是结构化的,因此 JSON 当然是一个合理的选择——它灵活、无处不在且与语言无关,但另一方面,它相当冗长。一个替代方案是 Avro,它同样灵活且与语言无关,但速度更快,生成的二进制表示更小。使用 Avro 需要您进行更多的设置工作和一些额外的软件,但其优势通常是值得的。

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