问题导读
1.如何安装Debezium连接器?
2.如何使用使用Debezium连接器?
3.配置Debezium主题有哪些建议?
上一篇
大数据新技术:Debezium用于捕获变更数据的开源分布式平台
https://www.aboutyun.com/forum.php?mod=viewthread&tid=30390
Debezium简介
Debezium是一个分布式平台,可将您现有的数据库转换为事件流,因此应用程序可以查看数据库中的每个行级更改并立即对其做出响应。
Debezium建立在Apache Kafka之上,并提供可监视特定数据库管理系统的Kafka Connect兼容连接器。 Debezium在Kafka日志中记录数据更改的历史记录,应用程序将在此位置使用它们。 这使您的应用程序可以轻松,正确,完全使用所有事件。 即使应用程序意外停止,它也不会丢失任何内容:当应用程序重新启动时,它将继续使用上次中断的事件。
Debezium安装
有多种安装和使用Debezium连接器的方法,因此我们已记录了一些最常见的方法。
安装Debezium连接器
如果已经安装了Zookeeper,Kafka和Kafka Connect,那么使用Debezium的连接器就很容易。 只需下载一个或多个连接器插件(请参见下文),将其文件解压缩到Kafka Connect环境中,然后将提取的插件的父目录添加到Kafka Connect的插件路径中即可。 如果还不是这种情况,请使用plugin.path配置属性在工作程序配置(例如connect-distributed.properties)中指定插件路径。 举例来说,假设您已经下载了Debezium MySQL连接器并将其内容提取到/ kafka / connect / debezium-connector-mysql。 然后,需要在worker配置中指定以下内容:
- plugin.path=/kafka/connect
复制代码
重新启动Kafka Connect流程以获取新的JAR。
连接器插件可从Maven获得:
注意:
以上所有链接均指向Debezium master分支的快照。
如果要使用不可变的容器,那么请查看Debezium的针对Apache Kafka,Kafka Connect和Apache Zookeeper的容器镜像(DockerHub的替代源),并且已经预先安装了不同的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提供的Docker镜像用于Kafka Connect时,可以指定CONNECT_PLUGIN_PATH环境变量来实现相同目的。
不需要Java 8或更高版本即可运行Debezium连接器。
使用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
- 单分区
其它topics
- (可选)启用日志压缩(如果只希望保留给定记录的最后更改事件); 在这种情况下,应该配置Apache Kafka中的min.compaction.lag.ms和delete.retention.ms主题级别设置,以便使用者有足够的时间接收所有事件并删除标记; 具体来说,这些值应大于您预期的接收器连接器的最大停机时间,例如 更新它们时
- 复制生产
- 单分区
可以放宽单个分区规则,但是应用程序必须处理数据库中不同行的乱序事件(单个行的事件仍然是完全有序的)。 如果使用多个分区,默认情况下,Kafka将通过散列键来确定分区。 其他分区策略需要使用SMT来设置每个记录的分区号。
有关可自定义主题的自动创建(自Kafka Connect 2.6.0起可用),请参阅自定义主题自动创建
使用Debezium库
尽管Debezium旨在用作交钥匙服务,但Maven Central中提供了所有JAR和其它组件。
我们确实提供了一个小型库,因此应用程序可以嵌入任何Kafka Connect连接器,并使用直接从源系统读取的数据更改事件。 这提供了一个轻量级的系统(因为不需要Zookeeper,Kafka和Kafka Connect服务),但是由于应用程序必须管理和维护通常保存在Kafka的分布式和日志中的所有状态,因此它的容错性或可靠性不高。 。 非常适合在测试中使用,并且经过仔细考虑,在某些应用中可能会很有用。
大数据讨论、领书微信:
获取更多资源:
领取100本书+1T资源
http://www.aboutyun.com/forum.php?mod=viewthread&tid=26480
大数据5个项目视频
http://www.aboutyun.com/forum.php?mod=viewthread&tid=25235
名企资源、名企面试题、最新BAT面试题、专题面试题等资源汇总
https://www.aboutyun.com/forum.php?mod=viewthread&tid=27732
名企资源、名企面试题、最新BAT面试题、专题面试题等资源汇总
https://www.aboutyun.com/forum.php?mod=viewthread&tid=27732
|