Debezium同步之安装 Debezium
目录
一、安装 Debezium 连接器
1.1 使用快照版本
二、使用 Debezium 连接器
三、配置 Debezium 主题
四、使用 Debezium 库
一、安装 Debezium 连接器
如果您已经安装了Zookeeper、Kafka和Kafka Connect,那么使用 Debezium 的连接器之一很容易。只需下载一个或多个连接器插件档案(见下文),将它们的文件解压缩到您的 Kafka Connect 环境中,然后将提取的插件的父目录添加到 Kafka Connect 的插件路径。如果还没有,请使用plugin.path配置属性在您的工作人员配置中指定插件路径(例如connect-distributed.properties) 。例如,假设您已下载 Debezium MySQL 连接器存档并将其内容提取到/kafka/connect/debezium-connector-mysql. 然后,您将在工作人员配置中指定以下内容:
plugin.path=/kafka/connect
重新启动 Kafka Connect 进程以获取新的 JAR。
连接器插件可从 Maven 获得:
-
MySQL 连接器插件存档
-
Postgres 连接器插件存档
-
MongoDB 连接器插件存档
-
SQL Server 连接器插件存档
-
Oracle 连接器插件存档
-
Db2 连接器插件归档
-
Cassandra 3.x 插件存档(开发中)
-
Cassandra 4.x 插件存档(开发中)
-
Vitess 插件存档(开发中)
如果不可变容器是你的菜,那么请查看Debezium 的容器镜像( DockerHub 上的替代源),用于 Apache Kafka、Kafka Connect 和 Apache Zookeeper,不同的 Debezium 连接器已经预先安装并准备就绪。我们的教程甚至会引导您使用这些图像,这是了解 Debezium 是什么的好方法。当然,您也可以在 Kubernetes 和OpenShift上运行 Debezium 。为此,建议使用Strimzi Kubernetes Operator。它允许通过自定义 Kubernetes 资源以声明方式部署 Apache Kafka、Kafka Connect 甚至连接器。
默认情况下,目录/kafka/connect被 Debezium 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 连接器需要 Java 8 或更高版本。运行 Debezium UI 需要 Java 11 或更高版本。
1.1 使用快照版本
Debezium 执行夜间构建和部署到 Sonatype 快照存储库中。如果您想尝试最新的和新鲜的或验证您感兴趣的错误修复,请使用来自oss.sonatype.org的插件或查看本文档的主分支版本以获取指向每个连接器插件工件的直接链接。安装过程与常规版本相同。
二、使用 Debezium 连接器
要使用连接器为特定源服务器/集群生成更改事件,只需为 MySQL 连接器、 Postgres 连接器、 MongoDB 连接器、 SQL Server 连接器、 Oracle 连接器、 Db2 连接器、 Cassandra 连接器或Vitess 连接器创建一个配置文件,并且使用Kafka Connect REST API将该连接器配置添加到您的 Kafka Connect 集群。当连接器启动时,它将连接到源并为每个插入、更新和删除的行或文档产生事件。
有关更多信息,请参阅 Debezium连接器文档。
三、配置 Debezium 主题
Debezium 使用(通过 Kafka Connect 或直接)多个主题来存储数据。主题必须由管理员或 Kafka 自己通过启用主题的自动创建来创建。有一些适用于主题的限制和建议:
-
数据库历史主题(适用于 MySQL 和 SQL Server 的 Debezium 连接器)
-
无限(或很长)保留(没有压实!)
-
生产的复制因子至少为 3
-
单分区
-
-
其他主题
-
可选地,启用日志压缩(如果您希望只保留给定记录的最后一个更改事件);在这种情况下,应该配置 Apache Kafka 中的
min.compaction.lag.ms
和主题级别的设置,以便消费者有足够的时间来接收所有事件并删除标记;delete.retention.ms
具体来说,这些值应该大于您预期的接收器连接器的最大停机时间,例如在更新它们时 -
在生产中复制
-
单分区
-
您可以放宽单分区规则,但您的应用程序必须处理数据库中不同行的乱序事件(单行的事件仍然是完全有序的)。如果使用多个分区,Kafka 默认会通过对 key 进行散列来确定分区。其他分区策略需要使用 SMT 为每条记录设置分区号。
-
-
有关可自定义的主题自动创建(自 Kafka Connect 2.6.0 起可用),请参阅自定义主题自动创建
-
四、使用 Debezium 库
尽管 Debezium 旨在用作交钥匙服务,但所有 JAR 和其他工件都在Maven Central中可用。
我们确实提供了一个小型库,因此应用程序可以嵌入任何 Kafka Connect 连接器并使用直接从源系统读取的数据更改事件。这提供了一个轻量级系统(因为不需要 Zookeeper、Kafka 和 Kafka Connect 服务),但由于应用程序必须管理和维护通常保存在 Kafka 分布式和复制日志中的所有状态,因此它的容错性或可靠性不高. 它非常适合在测试中使用,并且经过仔细考虑,它可能在某些应用程序中很有用。
创作挑战赛
新人创作奖励来咯,坚持创作打卡瓜分现金大奖