Debezium 是一个分布式平台,可将您现有的数据库转化为事件流,从而使应用程序能够几乎即时地查看和响应数据库中的每次提交的行级更改。Debezium 构建在 Kafka 之上,并提供 Kafka Connect 兼容的连接器,用于监控特定的数据库管理系统。Debezium 将数据更改历史记录在 Kafka 日志中,因此您的应用程序可以随时停止和重新启动,并且可以轻松地处理它在未运行时错过的所有事件,确保所有事件都得到正确和完整的处理。Debezium 在 Apache License, Version 2.0 下是 开源的。
现在是好消息——**Debezium 0.1 现已发布**,其中包括几项重要功能
-
一个用于监控 MySQL 数据库的 MySQL 连接器。它是一个 Kafka Connect 源连接器,因此只需将其安装到 Kafka Connect 服务中(见下文),然后使用该服务的 REST API 来配置和管理到每个 DBMS 服务器的连接器。该连接器读取 MySQL binlog 并为被监控数据库中的每次提交的行级修改生成数据更改事件。MySQL 连接器根据行更改时表的结构生成事件,并自动处理表结构的更改。
-
一个小型库,应用程序可以通过该库嵌入任何 Kafka Connect 连接器并直接从源系统读取数据更改事件。这提供了一个更轻量级的系统(因为不需要 Zookeeper、Kafka 和 Kafka Connect 服务),但因此容错性和可靠性较差,因为应用程序必须维护 Kafka 的分布式和复制日志中通常存储的状态。因此,应用程序完全负责管理所有状态。
尽管 Debezium 主要用作开箱即用的服务,但 Debezium 的所有 JAR 和其他构件都可以在 Maven Central 中找到。关于功能、任务和 Bug 的详细信息已在我们的发布说明中概述。
为了方便您在自己的 Kafka Connect 服务中使用 Debezium 的连接器,我们创建了一个插件包(包括 zip 和 tar.gz 格式),其中包含 Kafka Connect 0.9.0.1 未包含的所有 JAR。只需下载,解压到您的 Kafka Connect 0.9.0.1 安装目录,然后将所有 JAR 添加到服务的类路径中。服务重启后,您就可以使用 REST API 配置和管理连接器实例,以监控您选择的数据库。 MySQL 连接器插件包 位于 Maven Central,因此甚至可以使用 Maven 来构建定制的 Kafka Connect 服务。我们还将为未来的连接器生成这些插件。
Debezium 平台在 Zookeeper、Kafka 和 Kafka Connect 中有很多组件。为了让您更轻松地试用和体验它,我们创建了 Docker 镜像 和一个 教程,指导您使用 Debezium。首先,教程会引导您使用 Docker 启动每个服务的容器以及一个带有示例“inventory”数据库的 MySQL 服务器。它会向您展示如何使用 RESTful API 注册一个连接器来监控 inventory 数据库,如何查看各种表的更改数据流,以及数据库的更改如何以非常低的延迟产生新的更改事件。它还会引导您关闭 Kafka Connect 服务,在服务未监控数据库时更改数据,然后重新启动 Kafka Connect 服务,以查看服务未运行时发生的所有数据更改是否仍能被正确地捕获到流中。这个教程确实是交互式学习 Debezium 和更改数据捕获基础知识的绝佳方式。
我们希望您觉得 Debezium 有趣且有用,并愿意尝试。请在 Twitter 上关注我们 @debezium,在 Gitter 上 与我们聊天,或加入我们的 邮件列表 与社区交流。所有代码都在 GitHub 上开源,因此您可以本地构建代码并帮助我们改进 MySQL 连接器和添加更多连接器。如果您发现问题或有任何改进 Debezium 的想法,请告诉我们或 记录一个问题。我们计划很快发布 0.2 版本,至少包含一个额外的连接器。
感谢 Emmanuel、Chris、Akshath、James 和 Paul 在发布、提问和讨论方面提供的帮助!
关于 Debezium
Debezium 是一个开源的分布式平台,可以将现有数据库转变为事件流,使应用程序能够几乎即时地看到并响应数据库中已提交的每个行级更改。Debezium 构建在 Kafka 之上,并提供了 Kafka Connect 兼容的连接器,用于监控特定的数据库管理系统。Debezium 将数据更改的历史记录在 Kafka 日志中,这样您的应用程序可以随时停止和重新启动,并可以轻松地消费在未运行时错过的所有事件,确保所有事件都被正确且完整地处理。Debezium 在 Apache 许可证 2.0 下是 开源 的。