安装
安装 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 获取:
- MariaDB 连接器插件归档
- MySQL 连接器插件归档
- Postgres 连接器插件归档
- MongoDB 连接器插件归档
- SQL Server 连接器插件归档
- Oracle 连接器插件归档
- Db2 连接器插件归档
- Cassandra 3.x 插件归档
- Cassandra 4.x 插件归档
- Cassandra 5.x 插件归档
- JDBC sink 插件归档
- Spanner 插件归档(孵化中)
- Vitess 插件归档(孵化中)
- Informix 插件归档(孵化中)
- Ingres 插件归档(孵化中)
- CockroachDB 插件归档(孵化中)
- YashanDB 插件归档(孵化中)
| 如果你对 Debezium Server 感兴趣,请查看此处的安装说明。 |
|---|
如果你偏好使用不可变容器,那么可以查看 Debezium 的容器镜像,其中包括适用于 Apache Kafka 和 Kafka Connect 的镜像,且已预先安装了各种 Debezium 连接器,可直接使用。我们的教程甚至会指导你如何使用这些镜像,这是了解 Debezium 用途的绝佳方式。
你从 quay.io 获取的 Debezium 容器镜像未经过严格测试或安全分析,仅供测试和评估之用。这些镜像不适用于生产环境。为降低生产部署中的风险,请仅部署由可信供应商积极维护并经过潜在漏洞全面测试的容器。 |
|---|
当然,你也可以在 Kubernetes 和 OpenShift 上运行 Debezium。推荐为此使用 Strimzi Kubernetes Operator。它允许通过自定义 Kubernetes 资源以声明式方式部署 Apache Kafka、Kafka Connect 乃至连接器。
默认情况下,Debezium 的 Kafka Connect Docker 镜像将 /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 每晚执行构建并将其部署到 Sonatype 快照仓库。如果你想尝试最新鲜的版本,或验证你所关注的缺陷修复,请使用来自 oss.sonatype.org 的插件,或查看本文档的每夜构建版本,其中提供了每个连接器插件构件的直接链接。安装步骤与正式版本完全相同。
使用 Debezium 连接器
若要使用连接器为特定的源服务器/集群生成变更事件,只需为 MariaDB 连接器、MySQL 连接器、Postgres 连接器、MongoDB 连接器、SQL Server 连接器、Oracle 连接器、Db2 连接器、Cassandra 连接器、Vitess 连接器、Spanner 连接器、JDBC sink 连接器、Informix 连接器、YashanDB 连接器创建配置文件,然后使用 Kafka Connect REST API 将该连接器配置添加到你的 Kafka Connect 集群。连接器启动后,它会连接到源,并为每一行或每一个文档的插入、更新和删除操作生成事件。
有关更多信息,请参阅 Debezium 的连接器文档。
配置 Debezium 主题
Debezium 使用多个主题来存储数据(通过 Kafka Connect 或直接使用)。这些主题必须由管理员创建,或者通过启用主题自动创建功能由 Kafka 自身创建。主题有以下一些限制和建议:
数据库 schema 历史主题(用于 MySQL 和 SQL Server 的 Debezium 连接器)
- 无限(或非常长)的保留期(不要使用压缩!)
- 生产环境的副本数至少为 3
- 单分区
其他主题
可选地启用日志压缩(如果你只想保留某条记录的最后一个变更事件);在这种情况下,应配置 Apache Kafka 中的
min.compaction.lag.ms和delete.retention.ms主题级设置,以便消费者有足够的时间接收所有事件和删除标记;具体来说,这些值应大于你预期的接收器连接器的最大停机时间,例如在更新它们时生产环境中使用多副本
单一分区
- 你可以放宽单一分区的规则,但你的应用程序必须能够处理数据库中不同行的乱序事件(单一行的事件仍然完全有序)。如果使用多个分区,Kafka 默认会通过对键进行哈希来确定分区。其他分区策略需要使用 SMT 为每条记录设置分区号。
关于可自定义的主题自动创建(自 Kafka Connect 2.6.0 起可用),请参阅自定义主题自动创建
使用 Debezium 库
尽管 Debezium 旨在作为开箱即用的服务使用,但所有的 JAR 和其他构件都可以在 Maven Central 中获取。
我们确实提供了一个小型库,使应用程序能够嵌入任意 Kafka Connect 连接器,并直接从源系统消费读取到的数据变更事件。这提供了一个轻量级的系统(因为不需要 Kafka 和 Kafka Connect 服务),但其结果是它的容错性和可靠性较低,因为应用程序必须管理并维护通常保存在 Kafka 分布式和多副本日志中的所有状态。它非常适合用于测试,经过慎重考虑后,它在某些应用程序中也可能有用。
评论
登录后参与评论
KnowForge