Debezium连接器发送信号开云体育官方注册网址

概述

Debe开云体育官方注册网址zium信号机制提供了一种方法来修改一个连接器的行为,或触发一个一次性的行动,如启动一个特别的快照的一个表。使用信号来触发一个连接器执行指定的操作,您可以配置连接器使用的一个或多个以下渠道:

SourceSignalChannel

你可以发出一个SQL命令添加一个消息到专门的信号数据采集的信号。信号数据采集,在源数据库上创建,指定专门为与Debezium沟通。开云体育官方注册网址开云体育电动老虎机

KafkaSignalChannel

你提交的信号信息到一个可配置的卡夫卡的话题。

JmxSignalChannel

你提交的信号通过JMX信号操作。

自定义

你提交一个信号自定义频道你实现。

当Debe开云体育官方注册网址zium检测到一个新的日志记录特设快照记录添加到频道,它读取信号,启动请求的操作。

信号可以使用以下Debezium连接器:开云体育官方注册网址

  • Db2

  • MongoDB(技术预览版)

  • MySQL

  • 甲骨文

  • PostgreSQL

  • SQL Server

您可以指定哪个频道通过设置启用signal.enabled.channels配置属性。的属性列表的名称频道启用。默认情况下,Debezi开云体育官方注册网址um提供以下渠道:卡夫卡。的频道在缺省情况下是启用的,因为它是增量快照所需的信号。

启用源信号通道

默认情况下,Debezium源信开云体育官方注册网址号通道启用。

您必须显式地为每个配置信号连接器,您想要使用它。

过程
  1. 在源数据库上,创建一个信号数开云体育电动老虎机据收集表发送信号连接器。所需的信息结构的信号数据采集,明白了信号数据采集的结构

  2. 等源数据库Db2或实现开云体育电动老虎机本机变化数据捕获的SQL Server (CDC)机制,使疾病预防控制中心的信号表。

  3. 信号数据采集的名称添加到Debezium连接器配置。开云体育官方注册网址
    在连接器配置中,添加的属性signal.data.collection,并将其值设置为完全限定名称的信号数据收集您在步骤1中创建。

    例如,signal.data.collection= inventory.debezium_signals

    信号收集的完全限定名称的格式取决于连接器。
    下面的例子显示了命名格式为每个连接器使用:

    Db2

    < schemaName ><表>

    MongoDB

    <开云体育电动老虎机数据库名>< collectionName >

    MySQL

    <开云体育电动老虎机数据库名><表>

    甲骨文

    <开云体育电动老虎机数据库名>< schemaName ><表>

    PostgreSQL

    < schemaName ><表>

    SQL Server

    <开云体育电动老虎机数据库名>< schemaName ><表>

    关于设置的更多信息signal.data.collection财产,看到连接器的配置属性表。

信号数据采集的结构

信号数据采集、信号表,存储信号,发送连接器触发指定的操作。信号表的结构必须符合以下标准格式。

  • 包含三个字段(列)。

  • 字段被安排在一个特定的顺序,如图所示表1

表1。所需的信号数据采集的结构
类型 描述

id
(必需)

字符串

任意一个独一无二的字符串来标识一个信号实例。
你分配一个id您提交的每个信号的信号表。
典型的ID是一个UUID的字符串。
您可以使用信号实例日志、调试或重复数据删除。
当一个信号触发Debezium执行增量快照,它开云体育官方注册网址生成一个信号与一个任意的消息id字符串。的id字符串生成的消息包含无关id字符串在提交的信号。

类型
(必需)

字符串

指定要发送信号的类型。
您可以使用一些信号类型与任何连接器的信号是可用的,而其他信号类型仅用于特定的连接器。

数据
(可选)

字符串

指定json格式的参数传递给一个信号行动。
每个信号需要一组特定的数据类型。

数据收集的字段名称是任意的。前面的表提供建议的名称。如果你使用不同的命名约定,确保每个字段中的值是符合预期的内容。

创建一个信号数据采集

您创建一个信号表通过提交一个标准的SQL DDL源数据库查询。开云体育电动老虎机

先决条件
  • 你有足够的访问权限,在源数据库上创建一个表。开云体育电动老虎机

过程
  • 提交一个SQL查询对源数据库创建一个表,是一致的开云体育电动老虎机需要结构,如以下示例所示:

    创建表<表>(id VARCHAR (< varcharValue >)主键,类型为VARCHAR (< varcharValue >)NOT NULL数据VARCHAR (< varcharValue >)空);

你分配的空间VARCHAR参数的id变量必须足以容纳ID字符串的大小的信号发送到信号表。
如果一个ID的大小超过可用的空间,连接器不能处理信号。

下面的例子显示了一个创建表命令创建一个三列开云体育官方注册网址debezium_signal表:

创建表debezium_s开云体育官方注册网址ignal (id VARCHAR(42)主键,类型为VARCHAR (32) NOT NULL,数据VARCHAR(2048)零);

使卡夫卡信号通道

您可以启用卡夫卡信号通道通过添加它signal.enabled.channels配置属性,然后添加主题的名称,接收信号signal.kafka.topic财产。

消息格式

卡夫卡的关键消息的值必须匹配topic.prefix连接器配置选项。

值是一个JSON对象类型数据字段。

当信号类型设置为execute-snapshot,数据字段必须包含在下表中列出的字段:

表2。执行快照数据字段
默认的 价值

类型

增量

快照的类型。目前Debezium开云体育官方注册网址只支持增量类型。

数据收集

N /一个

逗号分隔的正则表达式匹配数组中包含的表的完全限定名称快照。
指定名称需要通过使用相同的格式signal.data.collection配置选项。

附加条件

N /一个

一个可选的字符串,指定连接器评估指定条件的记录的一个子集,包括在一个快照。

下面的例子显示了一个典型execute-snapshot卡夫卡的信息:

关键= ' test_connector ' Value = '{“类型”:“execute-snapshot”、“数据”:{代码基于schema1中“数据收集”:["。表1”、“代码基于schema1中。表二”),“类型”:“增量"}}

支持JMX信号通道

您可以启用JMX信号通过添加jmxsignal.enabled.channels房地产在连接器配置,然后支持JMX MBean服务器让信号bean。

JMX发送信号

过程
  1. 使用您喜欢的JMX客户机(例如。JConsole或JDK任务控制)连接到MBean服务器。

  2. 寻找Mbean开云体育官方注册网址debezium。<连接器类型>.management.signals。< server >。Mbean暴露信号操作,接受输入参数如下:

    p0

    信号的id。

    p1

    信号的类型,例如,execute-snapshot

    p2

    一个JSON数据字段,其中包含额外的信息指定的信号类型。

  3. 发送一个execute-snapshot信号通过提供输入参数的值。
    在JSON数据领域,包括下表中列出的信息:

    表3。执行快照数据字段
    默认的 价值

    类型

    增量

    快照的类型。目前Debezium开云体育官方注册网址只支持增量类型。

    数据收集

    N /一个

    逗号分隔的正则表达式匹配数组中包含的表的完全限定名称快照。
    指定名称需要通过使用相同的格式signal.data.collection配置选项。

    附加条件

    N /一个

    一个可选的字符串,指定连接器评估指定条件的记录的一个子集,包括在一个快照。

    下图显示了如何使用的例子JConsole发出一个信号:

    使用“execute-snapshot”JConsole发送一个信号

自定义信号通道

信号机制被设计成可扩展的。你可以根据需要实现渠道发送信号Debezium的方式最适合您的环境。开云体育官方注册网址

添加一个信号通道涉及几个步骤:

提供自定义信号通道

自定义信号通道实现的Java类io.开云体育官方注册网址debezium.pipeline.signal.channels.SignalChannelReader服务提供程序接口(SPI)。例如:

公共接口SignalChannelReader{字符串名称();(1)空白init (CommonConnectorConfig connectorConfig);(2)< SignalRecord >阅读列表();(3)空白close ();(4)}
1 读者的名字。让Debezium使开云体育官方注册网址用渠道,指定这个名字的连接器signal.enabled.channels财产。
2 初始化特定的配置、变量或连接通道要求。
3 从通道读取信号。的SignalProcessor类调用这个方法来检索过程的信号。
4 关闭所有分配资源。开云体育官方注册网址Debezium连接器停止时调用这个方法。

开云体育官方注册网址Debezium核心模块依赖关系

一个定制的Java项目编译依赖Debezium信号通道的核心模块。开云体育官方注册网址你必须包括这些编译依赖在你的项目的pom.xml文件,如以下示例所示:

<依赖> < groupId > io.debez开云体育官方注册网址ium < / groupId > < artifactId > debezium-core < / artifactId > <版本> $ {version.debezium} > < /版本(1)< / >的依赖
1 $ {version开云体育官方注册网址.debezium}代表Debezium连接器的版本。开云体育官方注册网址

声明您的实现的meta - inf /服务/ io.de开云体育官方注册网址bezium.pipeline.signal.channels.SignalChannelReader文件。

部署自定义信号通道

先决条件
  • 你有一个自定义信号通道的Java程序。

过程
  • 使用一个自定义的信号通道Debezium连接器,Java项目导出到一个JAR文件,开云体育官方注册网址并将文件复制到目录中包含的每个Debezium连接器JAR文件你想使用它。

    例如,在一个典型的部署,Debezium连接器文件存储在子目录的卡夫卡连接目录(开云体育官方注册网址卡夫卡/连接),每个连接器JAR在它自己的子目录(卡夫卡/ / debezium开云体育官方注册网址-connector-db2连接,卡夫卡/ / debezium开云体育官方注册网址-connector-mysql连接等等)。

使用一个自定义的信号通道与多个连接器,您必须将一份自定义信号通道为每个连接器JAR文件的子目录。

使用一个自定义的信号通道配置连接器

添加自定义信号通道的名称signal.enabled.channels配置属性。

信号行为

您可以使用信号来启动以下行为:

一些信号不兼容所有连接器。

测井信号

您可以请求一个连接器将一个条目添加到日志通过创建一个信号表条目日志信号类型。处理后的信号中,连接器日志打印指定的消息。可选地,您可以配置的信号,这样得到的信息包括流坐标。

表4。一个信号的例子记录添加一个日志消息
价值 描述

id

924 e3ff8 - 2245 - 43 - ca - ba77 af9af02fa07——2

类型

日志

的行动类型信号。

数据

{“消息”:“信号消息抵消{}"}

消息参数指定的字符串打印日志。
如果你添加一个占位符({})的消息,取而代之的是流坐标。

特设快照信号

您可以请求一个连接器来发起一个特设的快照创建一个信号execute-snapshot信号类型。处理后的信号中,连接器运行请求的快照操作。

与初始快照连接器运行后第一次启动时,一个特别的快照发生在运行时,连接器已经开始流后从数据库更改事件。开云体育电动老虎机你可以在任何时候启动临时快照。

特设快照可用以下Debezium连接器:开云体育官方注册网址

  • Db2

  • MongoDB

  • MySQL

  • 甲骨文

  • PostgreSQL

  • SQL Server

表5所示。一个特别的快照信号记录的例子
价值

id

d139b9b7 - 7777 - 4547 - 917 - d - e1775ea61d41

类型

execute-snapshot

数据

{“数据收集”:["。MyFirstTable”、“public.MySecondTable ")}

表6所示。一个特设快照信号信息的例子
关键 价值

test_connector

{“类型”:“execute-snapshot”、“数据”:{“数据收集”:["。MyFirstTable”),“类型”:“增量”、“附加条件”:“颜色=蓝色和品牌= MyBrand "}}

关于临时快照的更多信息,请参阅快照主题为连接器在文档中。

特设快照停止信号

您可以请求一个连接器停止正在进行的临时表条目的快照创建一个信号stop-snapshot信号类型。处理后的信号,连接器将停止当前正在进行的快照操作。

你可以停止特设以下Debezium连接器快照:开云体育官方注册网址

  • Db2

  • MongoDB

  • MySQL

  • 甲骨文

  • PostgreSQL

  • SQL Server

表7所示。停止特设快照信号记录的例子
价值

id

d139b9b7 - 7777 - 4547 - 917 - d - e1775ea61d41

类型

stop-snapshot

数据

{“类型”:“增量”,“数据收集”:[" public.MyFirstTable "]}

你必须指定类型的信号。的数据收集字段是可选的。离开数据收集字段空白请求连接器停止所有活动在当前的快照。如果你想继续增量快照,但你想从快照中排除特定的集合,提供一个以逗号分隔的集合的名称或正则表达式来排除。连接器处理信号后,增量快照收益,但不包括您所指定的数据集合。

增量快照

增量快照是一个特定类型的特别的快照。在增量快照中,连接器捕捉你指定的基线状态表,类似于一个初始快照。然而,与一个初始快照,增量快照捕获块表,而不是一次。连接器使用水印方法的进步跟踪快照。

通过捕获指定的初始状态在块表,而不是在一个单一的整体操作,增量快照初始快照过程提供以下优势:

  • 而指定的连接器捕捉基线状态表,流媒体实时事件附近的事务日志持续不间断。

  • 如果增量快照过程中断,它可以恢复从停止的点。

  • 你可以在任何时候启动增量快照。

增量快照暂停信号

您可以请求一个连接器暂停正在进行的增量快照创建表条目的一个信号pause-snapshot信号类型。处理后的信号,连接器将停止当前正在进行的快照操作暂停。因此不可能指定数据收集快照处理将暂停在位置信号的处理。

你可以暂停增量快照以下Debezium连接器:开云体育官方注册网址

  • Db2

  • MongoDB

  • MySQL

  • 甲骨文

  • PostgreSQL

  • SQL Server

表8所示。一个暂停增量快照记录信号的例子
价值

id

d139b9b7 - 7777 - 4547 - 917 - d - e1775ea61d41

类型

pause-snapshot

你必须指定类型的信号。的数据字段被忽略。

增量快照恢复信号

您可以请求一个连接器恢复暂停增量快照创建表条目的一个信号resume-snapshot信号类型。处理后的信号,连接器将恢复之前暂停快照操作。

你可以恢复增量快照以下Debezium连接器:开云体育官方注册网址

  • Db2

  • MongoDB

  • MySQL

  • 甲骨文

  • PostgreSQL

  • SQL Server

表9所示。一个增量快照恢复信号记录的例子
价值

id

d139b9b7 - 7777 - 4547 - 917 - d - e1775ea61d41

类型

resume-snapshot

你必须指定类型的信号。的数据字段被忽略。

关于增量快照的更多信息,请参阅快照主题为连接器在文档中。