Debezium连接器发送信号开云体育官方注册网址
概述
Debe开云体育官方注册网址zium信号机制提供了一种方法来修改一个连接器的行为,或触发一个一次性的行动,如启动一个特别的快照的一个表。使用信号来触发一个连接器执行指定的操作,您可以配置连接器使用的一个或多个以下渠道:
- SourceSignalChannel
-
你可以发出一个SQL命令添加一个消息到专门的信号数据采集的信号。信号数据采集,在源数据库上创建,指定专门为与Debezium沟通。开云体育官方注册网址开云体育电动老虎机
- KafkaSignalChannel
-
你提交的信号信息到一个可配置的卡夫卡的话题。
- JmxSignalChannel
-
你提交的信号通过JMX
信号
操作。 - 自定义
-
你提交一个信号自定义频道你实现。
信号可以使用以下Debezium连接器:开云体育官方注册网址
Db2
MongoDB(技术预览版)
MySQL
甲骨文
PostgreSQL
SQL Server
您可以指定哪个频道通过设置启用signal.enabled.channels
配置属性。的属性列表的名称频道启用。默认情况下,Debezi开云体育官方注册网址um提供以下渠道:源
和卡夫卡
。的源
频道在缺省情况下是启用的,因为它是增量快照所需的信号。
启用源信号通道
默认情况下,Debezium源信开云体育官方注册网址号通道启用。
您必须显式地为每个配置信号连接器,您想要使用它。
在源数据库上,创建一个信号数开云体育电动老虎机据收集表发送信号连接器。所需的信息结构的信号数据采集,明白了信号数据采集的结构。
等源数据库Db2或实现开云体育电动老虎机本机变化数据捕获的SQL Server (CDC)机制,使疾病预防控制中心的信号表。
信号数据采集的名称添加到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。
场 | 类型 | 描述 |
---|---|---|
|
|
任意一个独一无二的字符串来标识一个信号实例。 |
|
|
指定要发送信号的类型。 |
|
|
指定json格式的参数传递给一个信号行动。 |
数据收集的字段名称是任意的。前面的表提供建议的名称。如果你使用不同的命名约定,确保每个字段中的值是符合预期的内容。 |
创建一个信号数据采集
您创建一个信号表通过提交一个标准的SQL DDL源数据库查询。开云体育电动老虎机
你有足够的访问权限,在源数据库上创建一个表。开云体育电动老虎机
提交一个SQL查询对源数据库创建一个表,是一致的开云体育电动老虎机需要结构,如以下示例所示:
创建表<表>(id VARCHAR (< varcharValue >)主键,类型为VARCHAR (< varcharValue >)NOT NULL数据VARCHAR (< varcharValue >)空);
你分配的空间 |
下面的例子显示了一个创建表
命令创建一个三列开云体育官方注册网址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
,数据
字段必须包含在下表中列出的字段:
场 | 默认的 | 价值 |
---|---|---|
|
|
快照的类型。目前Debezium开云体育官方注册网址只支持 |
|
N /一个 |
逗号分隔的正则表达式匹配数组中包含的表的完全限定名称快照。 |
|
N /一个 |
一个可选的字符串,指定连接器评估指定条件的记录的一个子集,包括在一个快照。 |
下面的例子显示了一个典型execute-snapshot
卡夫卡的信息:
关键= ' test_connector ' Value = '{“类型”:“execute-snapshot”、“数据”:{代码基于schema1中“数据收集”:["。表1”、“代码基于schema1中。表二”),“类型”:“增量"}}
支持JMX信号通道
您可以启用JMX信号通过添加jmx
到signal.enabled.channels
房地产在连接器配置,然后支持JMX MBean服务器让信号bean。
JMX发送信号
使用您喜欢的JMX客户机(例如。JConsole或JDK任务控制)连接到MBean服务器。
寻找Mbean
开云体育官方注册网址debezium。<连接器类型>.management.signals。< server >
。Mbean暴露信号
操作,接受输入参数如下:- p0
-
信号的id。
- p1
-
信号的类型,例如,
execute-snapshot
。 - p2
-
一个JSON数据字段,其中包含额外的信息指定的信号类型。
发送一个
execute-snapshot
信号通过提供输入参数的值。
在JSON数据领域,包括下表中列出的信息:表3。执行快照数据字段 场 默认的 价值 类型
增量
快照的类型。目前Debezium开云体育官方注册网址只支持
增量
类型。数据收集
N /一个
逗号分隔的正则表达式匹配数组中包含的表的完全限定名称快照。
指定名称需要通过使用相同的格式signal.data.collection配置选项。附加条件
N /一个
一个可选的字符串,指定连接器评估指定条件的记录的一个子集,包括在一个快照。
下图显示了如何使用的例子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文件的子目录。 |
信号行为
您可以使用信号来启动以下行为:
一些信号不兼容所有连接器。
测井信号
您可以请求一个连接器将一个条目添加到日志通过创建一个信号表条目日志
信号类型。处理后的信号中,连接器日志打印指定的消息。可选地,您可以配置的信号,这样得到的信息包括流坐标。
列 | 价值 | 描述 |
---|---|---|
id |
|
|
类型 |
|
的行动类型信号。 |
数据 |
|
的 |
特设快照信号
您可以请求一个连接器来发起一个特设的快照创建一个信号execute-snapshot
信号类型。处理后的信号中,连接器运行请求的快照操作。
与初始快照连接器运行后第一次启动时,一个特别的快照发生在运行时,连接器已经开始流后从数据库更改事件。开云体育电动老虎机你可以在任何时候启动临时快照。
特设快照可用以下Debezium连接器:开云体育官方注册网址
Db2
MongoDB
MySQL
甲骨文
PostgreSQL
SQL Server
列 | 价值 |
---|---|
id |
|
类型 |
|
数据 |
|
关键 | 价值 |
---|---|
test_connector |
|
关于临时快照的更多信息,请参阅快照主题为连接器在文档中。
特设快照停止信号
您可以请求一个连接器停止正在进行的临时表条目的快照创建一个信号stop-snapshot
信号类型。处理后的信号,连接器将停止当前正在进行的快照操作。
你可以停止特设以下Debezium连接器快照:开云体育官方注册网址
Db2
MongoDB
MySQL
甲骨文
PostgreSQL
SQL Server
列 | 价值 |
---|---|
id |
|
类型 |
|
数据 |
|
你必须指定类型
的信号。的数据收集
字段是可选的。离开数据收集
字段空白请求连接器停止所有活动在当前的快照。如果你想继续增量快照,但你想从快照中排除特定的集合,提供一个以逗号分隔的集合的名称或正则表达式来排除。连接器处理信号后,增量快照收益,但不包括您所指定的数据集合。
增量快照
增量快照是一个特定类型的特别的快照。在增量快照中,连接器捕捉你指定的基线状态表,类似于一个初始快照。然而,与一个初始快照,增量快照捕获块表,而不是一次。连接器使用水印方法的进步跟踪快照。
通过捕获指定的初始状态在块表,而不是在一个单一的整体操作,增量快照初始快照过程提供以下优势:
而指定的连接器捕捉基线状态表,流媒体实时事件附近的事务日志持续不间断。
如果增量快照过程中断,它可以恢复从停止的点。
你可以在任何时候启动增量快照。
增量快照暂停信号
您可以请求一个连接器暂停正在进行的增量快照创建表条目的一个信号pause-snapshot
信号类型。处理后的信号,连接器将停止当前正在进行的快照操作暂停。因此不可能指定数据收集快照处理将暂停在位置信号的处理。
你可以暂停增量快照以下Debezium连接器:开云体育官方注册网址
Db2
MongoDB
MySQL
甲骨文
PostgreSQL
SQL Server
列 | 价值 |
---|---|
id |
|
类型 |
|
你必须指定类型
的信号。的数据
字段被忽略。
增量快照恢复信号
您可以请求一个连接器恢复暂停增量快照创建表条目的一个信号resume-snapshot
信号类型。处理后的信号,连接器将恢复之前暂停快照操作。
你可以恢复增量快照以下Debezium连接器:开云体育官方注册网址
Db2
MongoDB
MySQL
甲骨文
PostgreSQL
SQL Server
列 | 价值 |
---|---|
id |
|
类型 |
|
你必须指定类型
的信号。的数据
字段被忽略。
关于增量快照的更多信息,请参阅快照主题为连接器在文档中。