安装 Debezium
有几种安装和使用 Debezium 连接器的方法,因此我们记录了几种最常见的方法。
安装 Debezium 连接器
如果您已经安装了 Kafka 和 Kafka Connect,那么使用 Debezium 的连接器之一将非常容易。只需下载一个或多个连接器插件存档(见下文),将它们的文件解压到您的 Kafka Connect 环境中,并将解压后的插件的父目录添加到 Kafka Connect 的插件路径中。如果尚未设置,请在您的工作节点配置文件(例如 *connect-distributed.properties*)中使用 plugin.path 配置属性指定插件路径。例如,假设您已下载 Debezium MySQL 连接器存档并将其内容解压到 */kafka/connect/debezium-connector-mysql*。然后,您将在工作节点配置中指定以下内容:
plugin.path=/kafka/connect
重新启动您的 Kafka Connect 进程以加载新的 JAR 文件。
连接器插件可从 Maven 获取
| 以上所有链接均指向 Debezium 主分支的 nightly 快照。如果您正在寻找非快照版本,请在右上角选择相应的版本。 |
| 如果您对 Debezium Server 感兴趣,请在此处查看 安装说明。 |
如果您偏好不可变容器,请查看 Debezium 的 容器镜像,这些镜像已预装了 Apache Kafka 和 Kafka Connect 以及各种 Debezium 连接器,即开即用。我们的 教程 甚至会引导您使用这些镜像,这是了解 Debezium 是什么的一个好方法。
|
从 |
当然,您也可以在 Kubernetes 和 OpenShift 上运行 Debezium。推荐使用 Strimzi Kubernetes Operator。它允许通过自定义 Kubernetes 资源来声明式地部署 Apache Kafka、Kafka Connect,甚至连接器。
默认情况下,Debezium Docker 镜像会将 */kafka/connect* 目录用作 Kafka Connect 的插件目录。因此,您可能希望使用的任何其他连接器都应添加到该目录中。或者,您可以在启动容器时通过指定 KAFKA_CONNECT_PLUGINS_DIR 环境变量来添加更多目录到插件路径(例如 -e KAFKA_CONNECT_PLUGINS_DIR=/kafka/connect/,/path/to/further/plugins)。使用 Confluent 提供的 Kafka Connect 容器镜像时,可以通过指定 CONNECT_PLUGIN_PATH 环境变量来实现相同的功能。
请注意,运行 Debezium 连接器或 Debezium UI 需要 Java 17 或更高版本。
使用快照发布
Debezium 会执行 nightly 构建并将它们部署到 Sonatype 快照存储库。如果您想尝试最新、最新的功能或验证您感兴趣的 bug 修复,请使用 oss.sonatype.org 的插件,或者查看本文档的 nightly 版本以获取指向每个连接器插件工件的直接链接。安装过程与常规发布相同。
使用 Debezium 连接器
要使用连接器为特定的源服务器/集群生成变更事件,只需为 MariaDB 连接器、MySQL 连接器、Postgres 连接器、MongoDB 连接器、SQL Server 连接器、Oracle 连接器、Db2 连接器、Cassandra 连接器、Vitess 连接器、Spanner 连接器、JDBC sink 连接器、Informix 连接器 创建配置文件,并使用 Kafka Connect REST API 将该连接器配置添加到您的 Kafka Connect 集群。当连接器启动时,它将连接到源并为每个插入、更新和删除的行或文档生成事件。
有关更多信息,请参阅 Debezium 连接器 文档。
配置 Debezium 主题
Debezium 使用(通过 Kafka Connect 或直接)多个主题来存储数据。这些主题必须由管理员创建,或者通过启用主题自动创建由 Kafka 本身创建。有一些限制和建议适用于主题:
-
数据库模式历史记录主题(适用于 Debezium 的 MySQL 和 SQL Server 连接器)
-
无限(或非常长)的保留期(禁止压缩!)
-
生产环境中至少 3 的复制因子
-
单个分区
-
-
其他主题
-
可选地,启用 日志压缩(如果您只想保留给定记录的 *最后* 一个更改事件);在这种情况下,应在 Apache Kafka 中配置 `min.compaction.lag.ms` 和 `delete.retention.ms` 主题级设置,以便消费者有足够的时间接收所有事件和删除标记;具体而言,这些值应大于您预计的 sink 连接器(例如在更新它们时)的最大停机时间。
-
在生产环境中复制
-
单个分区
-
您可以放宽单个分区规则,但您的应用程序必须处理不同数据库行之间的乱序事件(单个行的事件仍然是完全有序的)。如果使用多个分区,Kafka 默认会通过哈希键来确定分区。其他分区策略需要使用 SMT 来为每个记录设置分区号。
-
-
有关可自定义的主题自动创建(自 Kafka Connect 2.6.0 起可用)的详细信息,请参阅 自定义主题自动创建。
-
使用 Debezium 库
尽管 Debezium 设计为开箱即用的服务,但所有 JAR 和其他工件都可以在 Maven Central 中找到。
我们提供了一个小型库,以便应用程序可以 嵌入任何 Kafka Connect 连接器 并直接从源系统读取数据变更事件。这提供了一个轻量级的系统(因为不需要 Kafka 和 Kafka Connect 服务),但因此,它的容错性和可靠性不如完整安装,因为应用程序必须管理和维护 Kafka 分布式和复制日志中通常保留的所有状态。它非常适合在测试中使用,并且通过仔细考虑,它可能在某些应用程序中有用。