开云体育官方注册网址对SQL Server Debezium连接器
想要帮助我们进一步的磨练和提高吗?学习如何。 |
Debe开云体育官方注册网址zium SQL Server连接器捕捉行级的变化发生在一个SQL Server数据库的模式。开云体育电动老虎机
信息的SQL Server版本兼容这个连接器,看到开云体育官方注册网址Debezium释放概述。
第一次Debezium SQL Server连接开云体育官方注册网址器连接到SQL Server数据库或集群,它需要一个一致的快照模式的数据库。开云体育电动老虎机初始快照完成后,连接器不断捕捉行级的变化插入
,更新
,或删除
操作,致力于为疾控中心启用SQL Server数据库。开云体育电动老虎机连接器为每个数据更改操作,生成事件流他们卡夫卡的话题。连接器流的所有事件表到专用的卡夫卡的主题。应用程序和服务可以使用主题的数据更改事件记录。
概述
连接器是开云体育官方注册网址基于Debezium SQL服务器变化数据捕获可用的特性SQL Server 2016 Service Pack 1 (SP1)之后标准版或企业版。SQL Server捕获过程监控指定的数据库和表,并存储变成专门创建的开云体育电动老虎机改变表存储过程外墙。
使Debezium SQL 开云体育官方注册网址Server连接器能够捕捉更改数据库操作的事件记录,您必须先启用变化数据捕获的SQL Server数据库。开云体育电动老虎机疾病预防控制中心必须启用数据库和你想捕捉的每个表。开云体育电动老虎机在源数据库上建立疾病预防控制中心之后,连接器可以捕获行级开云体育电动老虎机插入
,更新
,删除
操作发生在数据库中。开云体育电动老虎机连接器写事件记录为每一个源表卡夫卡话题特别是专用表。存在一个主题为每个表。客户机应用程序读卡夫卡的主题的数据库表,并能应对行级事件他们消费的主题。开云体育电动老虎机
第一次连接器连接到SQL Server数据库或集群,它需要一个一致的快照模式的所有表的配置来捕捉变化,卡夫卡和小溪这个开云体育电动老虎机状态。快照完成后,连接器不断捕捉后续行级发生变化。首先建立所有的数据都是一致的,连接器可以继续阅读而不失去所做出的任何更改而发生快照。
Debe开云体育官方注册网址zium SQL Server连接器是失败的宽容。随着连接器读取的变化和产生的事件,它定期记录在数据库日志事件的位置(开云体育电动老虎机LSN /日志序列号)。如果连接器停止任何理由(包括通信失败,网络问题,或崩溃),之后重新启动连接器简历阅读SQL服务器疾病预防控制中心最后一点,读表。
定期补偿承诺。他们没有提交当时事件发生变化。因此,停机后,重复的事件可能会生成。 |
容错也适用于快照。如果连接器停止在一个快照,连接器开始一个新的快照时重新启动。
SQL Server连接器是如何运作的吗
优化配置并运行一个Debezium SQL Server连接器,它开云体育官方注册网址有助于了解连接器执行快照,流改变事件,决定了卡夫卡主题名称,并使用元数据。
快照
SQL Server疾控中心不是被设计来存储数据库更改的完整历史。开云体育电动老虎机Debezium开云体育官方注册网址 SQL Server的连接器来建立一个基线数据库的当前状态,它使用一个过程被称为开云体育电动老虎机快照。
您可以配置连接器如何创建快照。默认情况下,将连接器的快照模式最初的
。在此基础上最初的
快照模式,连接器第一次启动时,它执行一个初始一致的快照的数据库。开云体育电动老虎机这个初始快照捕获的结构和数据表定义的标准相匹配包括
和排除
为连接器配置属性(例如,table.include.list
,column.include.list
,table.exclude.list
等等)。
当连接器创建一个快照,完成以下任务:
决定了表被捕获。
SQL服务器上获得一个锁表的疾控中心启用防止结构性变化发生在创建快照。锁是由水平
snapshot.isolation.mode
配置选项。读取最大日志序列号(LSN)在服务器的事务日志。
捕获所有相关表的结构。
在步骤2中释放锁获得的,如果必要的。在大多数情况下,锁只有很短的一段时间。
扫描捕获的SQL Server源表和模式是基于阅读的LSN位置在步骤3中,生成一个
读
事件表中的每一行,并将事件写入表的卡夫卡的话题。记录的成功完成连接器补偿的快照。
由此产生的初始快照捕获的当前状态表中的每一行是疾控中心启用。从这个基线状态,连接器捕捉后续更改时发生。
特别的快照
默认情况下,一个连接器运行初始快照操作之后才开始第一次。这个初始快照后,在正常情况下,连接器不重复快照过程。未来的任何更改事件的数据连接器捕捉只通过流过程。
然而,在某些情况下获得的数据连接器在初始快照可能变得陈旧,丢失,或不完整的。为重新夺回表数据提供一种机制,Debezium包括一个选项来执行特定的快照。开云体育官方注册网址以下更改数据库中可能导致执行一个特设快照:开云体育电动老虎机
连接器配置修改捕获一组不同的表。
卡夫卡主题删除,必须重建。
数据损坏发生由于配置错误或者其他问题。
你可以重新运行你的快照表之前启动一个所谓的捕获快照特别的快照。特别的快照的使用要求信号表。你发起一个特设快照通过发送一个信号请求Debezium信号表。开云体育官方注册网址
当你启动一个特设现有表的快照,连接器附加内容的主题已经存在的表。如果以前现有主题是移除,Debezium可以自动创建一个主题开云体育官方注册网址自动主题创建启用。
特设快照信号中包含指定表快照。快照可以捕捉数据库的全部内容,或者只捕获数据库中的表的一个子集。开云体育电动老虎机
您指定的表来捕获通过发送一个execute-snapshot
信息信号表。设置的类型execute-snapshot
信号增量
,并提供表的名称中包含快照,下表中描述:
场 | 默认的 | 价值 |
---|---|---|
|
|
指定类型的快照,你想要运行。 |
|
N /一个 |
一个数组,其中包含表的完全限定名称快照。 |
你发起一个特设的快照通过添加一个条目execute-snapshot
信号类型的信号表。连接器处理消息之后,它开始快照操作。快照过程读取第一个和最后一个主键值,并使用这些值为每个表的开始和结束点。根据表中的条目的数量,和配置的块大小,Debezium把表分成块,每个块和收益快照,在继承,一次一个。开云体育官方注册网址
增量快照
快照管理上提供了很大的灵活性,Debezium包括补充快照机制,称为开云体育官方注册网址增量快照。增量快照依靠Debezium机制开云体育官方注册网址Debezium连接器发送信号开云体育官方注册网址。基于增量快照DDD-3设计文档。
在增量快照,而不是捕捉数据库的完整状态,在一个初始快照,Debezium捕捉每个表的阶段,在一系列的配置块。开云体育官方注册网址开云体育电动老虎机你可以指定表的快照捕获和每个数据块的大小。块大小确定的行数的快照收集在每个提取操作数据库。开云体育电动老虎机默认增量快照1 KB的块大小。
作为一个增量快照,Debezium使用水印追踪其进展,保持每个表的记录行,开云体育官方注册网址它捕获。分阶段方法捕获数据提供了以下优势标准初始快照过程:
您可以运行增量快照与流数据获取,而不是推迟直到快照完成流媒体。连接器继续捕获实时事件从快照过程中更改日志,也操作模块。
如果中断增量快照的进步,你可以恢复它而不会丢失任何数据。流程简历后,快照开始时它不禁停了下来,而不是重新夺回表从一开始。
您可以运行一个增量快照随时点播,并根据需要重复这个过程适应数据库更新。开云体育电动老虎机例如,您可以重新运行快照后修改连接器配置向其添加一个表
table.include.list
财产。
当您运行一个增量快照,Debezium每个表的主键,然后将表格分为块的基础上开云体育官方注册网址配置块大小。块的块,然后捕获块中的每个表行。对于每一行,它捕获快照发出读
事件。事件所代表的价值当块的快照开始的行。
快照收益,其他进程的继续访问数据库,可能修改表记录。开云体育电动老虎机反映这种变化,插入
,更新
,或删除
操作是致力于按平常的事务日志。同样,持续Debezium流过程继续检测这些事开云体育官方注册网址件并发出相应的改变事件记录卡夫卡。
在某些情况下,更新
或删除
收到的事件流过程排放的序列。即流过程可能会发出一个事件,修改一个表行之前快照捕获块包含读
事件这一行。当最终发出相应的快照读
行活动,其价值已经取代了。以确保增量快照事件到达的顺序处理正确的逻辑顺序,Debezium采用缓冲方案解决冲突。开云体育官方注册网址只有在快照之间的碰撞事件和事件流解析对卡夫卡Debezium发出一个事件记录。开云体育官方注册网址
协助解决后面到达之间的碰撞读
事件和事件流,修改相同的表行,Debezium雇佣了一个所谓的开云体育官方注册网址快照窗口。快照windows的划定了间隔期间增量快照捕获一个指定表数据块。在一块的快照窗口打开之前,Debezium遵循其一贯的行为和直接从事务日志发出事件下游目标卡开云体育官方注册网址夫卡的话题。但从特定块快照打开,直到关闭,Debezium执行重复数据删除步骤解决之间的碰撞事件具有相同的主键. .开云体育官方注册网址
对于每个数据收集,Debezium发出两种类型的事件,并存储开云体育官方注册网址记录它们在单个目的地卡夫卡的话题。它捕获快照记录直接从表发出读
操作。与此同时,随着用户继续更新记录的数据收集,和事务日志更新以反映每一个提交,Debezium发出开云体育官方注册网址更新
或删除
为每个变更操作。
快照窗口打开,Debezium开始处理一块快照,它提供了快照记录到内开云体育官方注册网址存缓冲区。在快照windows,主键的读
事件缓冲比较传入流的主键事件。如果没有发现匹配,直接发送到卡夫卡流事件记录。如果D开云体育官方注册网址ebezium检测到一个匹配,它丢弃缓冲读
事件,并将流记录写入目标主题,因为流事件逻辑取代静态快照事件。块的快照窗口关闭后,缓冲区只包含读
事件相关的事务日志事件存在。开云体育官方注册网址Debezium发出这些剩余读
事件表的卡夫卡的话题。
连接器为每个快照块重复这个过程。
Debe开云体育官方注册网址zium连接器SQL服务器不支持增量快照运行时模式变化。 |
触发一个增量快照
目前,启动增量快照的唯一方法是发送一个特设快照信号源数据库上的信号表。开云体育电动老虎机你提交一个信号信号表的SQL插入
查询。
后Debez开云体育官方注册网址ium检测信号的变化表,它读取信号,请求的快照操作运行。
你提交的查询中包含指定表快照,而且,还指定了快照的操作。目前,快照操作的唯一有效的选项是默认值,增量
。
中包括指定表快照,提供一个数据收集
数组列表的表或数组正则表达式用于匹配表,例如,{“数据收集”:["。MyFirstTable”、“public.MySecondTable ")}
的数据收集
数组增量快照信号没有默认值。如果数据收集
数组为空,Debezium检测到开云体育官方注册网址不需要行动,不执行一个快照。
如果一个表的名称,你想要包含在一个快照包含一个点( |
启用信号。
一个信号数据采集存在于源数据库。开云体育电动老虎机
信号数据采集中指定
signal.data.collection
财产。
发出一个SQL查询添加临时增量快照请求信号表:
插入< signalTable >(id、类型、数据)值(“< id >”,“< snapshotType >”{“数据收集”:[",<表>”、“<表>“,”类型”:“< snapshotType >”、“附加条件”:“<附加条件>“}”);
例如,
插入myschema.debezium_s开云体育官方注册网址ignal (id、类型、数据)(1)值(“ad-hoc-1”,(2)“execute-snapshot”,(3)”{代码基于schema1中“数据收集”:["。表1”、“schema2.table2”),(4)“类型”:“增量”},(5)“附加条件”:“颜色=蓝色“}”);(6)
的值
id
,类型
,数据
参数对应的命令信号表的字段。下表描述了参数的例子:
表2。描述字段的SQL命令发送信号到信号表增量快照 项 价值 描述 1
myschema.开云体育官方注册网址debezium_signal
指定完全限定名称的信号在源数据库表。开云体育电动老虎机
2
ad-hoc-1
的
id
参数指定一个任意字符串,指定的id
标识符的请求信号。
使用这个字符串来识别信号表中的日志消息条目。开云体育官方注册网址Debezium不使用这个字符串。相反,在快照,Debezium生成自己的开云体育官方注册网址id
字符串作为水印信号。3
execute-snapshot
指定
类型
参数指定的操作信号触发。4
数据收集
一个必需的组成部分
数据
领域的一个信号,指定表名数组或正则表达式匹配表名中包含快照。
数组列表正则表达式匹配表的完全限定名称,使用相同的格式使用指定连接器的信号表的名称signal.data.collection
配置属性。5
增量
一个可选的
类型
组件的数据
领域的一个信号,表明指定的快照操作运行。
目前,唯一有效的选项是默认值,增量
。
如果你不指定一个值,连接器运行增量快照。6
附加条件
一个可选的字符串,它指定一个条件基于表的列(s) (s),捕获的内容表的一个子集。更多的信息
附加条件
参数,看到临时增量快照附加条件
。
附加条件
如果你想要一个快照只包括内容表的一个子集,您可以修改请求通过添加一个信号附加条件
信号参数的快照。
典型的SQL查询快照需要以下形式:
SELECT * FROM<表>…。
通过添加一个附加条件
参数,你添加一个在哪里
SQL查询条件,如以下示例:
SELECT * FROM<表>在哪里<附加条件>…。
下面的例子展示了一个SQL查询发送一个临时增量快照请求信号表的附加条件:
插入< signalTable >(id、类型、数据)值(“< id >”,“< snapshotType >”{“数据收集”:[",<表>”、“<表>“,”类型”:“< snapshotType >”、“附加条件”:“<附加条件>“}”);
例如,假设您有一个产品
表,包含以下列:
id
(主键)颜色
数量
如果你想要一个增量的快照产品
表只包括的数据项颜色=蓝色
,您可以使用以下SQL语句触发快照:
插入myschema.debezium_s开云体育官方注册网址ignal (id、类型、数据)值(‘ad-hoc-1’,‘execute-snapshot’,‘{代码基于schema1中“数据收集”:["。产品”),“类型”:“增量”、“附加条件”:“颜色=蓝色"});
的附加条件
参数也可以通过基于多列的条件。例如,使用产品
从前面的示例表,你可以提交一个查询,触发器增量快照,包括数据的只有那些物品颜色=蓝色
和量> 10
:
插入myschema.debezium_s开云体育官方注册网址ignal (id、类型、数据)值(‘ad-hoc-1’,‘execute-snapshot’,‘{代码基于schema1中“数据收集”:["。产品”),“类型”:“增量”、“附加条件”:“颜色=蓝色和数量> 10 "});
下面的例子,显示了JSON增量快照捕获的事件连接器。
{“前”:零,“后”:{“pk”:“1”,“价值”:“新数据”},“源”:{…“快照”:“增量”(1)},“人事处”:“r”,(2)“ts_ms”:“1620393591654”,“交易”:零}
项 | 字段名 | 描述 |
---|---|---|
1 |
|
指定类型的快照操作运行。 |
2 |
|
指定事件类型。 |
停止一个增量快照
你也可以停止增量快照通过发送一个信号对源数据库表。开云体育电动老虎机你提交一个停止信号表快照通过发送一个SQL插入
查询。后Debez开云体育官方注册网址ium检测信号的变化表,它读取信号,停止增量快照操作如果是在进步。
你提交的查询指定快照的操作增量
,选择当前运行快照的表被删除。
启用信号。
一个信号数据采集存在于源数据库。开云体育电动老虎机
信号数据采集中指定
signal.data.collection
财产。
发出一个SQL查询停止临时增量快照信号表:
插入< signalTable >(id、类型、数据)值(“< id >”,“stop-snapshot”、“{“数据收集”:["<表>”、“<表>”,“类型”:“增量”}’);
例如,
插入myschema.debezium_s开云体育官方注册网址ignal (id、类型、数据)(1)值(“ad-hoc-1”,(2)“stop-snapshot”,(3)”{代码基于schema1中“数据收集”:["。表1”、“schema2.table2”),(4)“类型”:“增量”}’);(5)
的值
id
,类型
,数据
参数对应的信号命令信号表的字段。下表描述了参数的例子:
表3。描述字段的SQL命令发送停止信号到信号表增量快照 项 价值 描述 1
myschema.开云体育官方注册网址debezium_signal
指定完全限定名称的信号在源数据库表。开云体育电动老虎机
2
ad-hoc-1
的
id
参数指定一个任意字符串,指定的id
标识符的请求信号。
使用这个字符串来识别信号表中的日志消息条目。开云体育官方注册网址Debezium不使用这个字符串。3
stop-snapshot
指定
类型
参数指定的操作信号触发。4
数据收集
一个可选的组成部分
数据
领域的一个信号,指定表名数组或正则表达式匹配表名删除快照。
数组列表正则表达式匹配表的完全限定名称,使用相同的格式使用指定连接器的信号表的名称signal.data.collection
配置属性。如果该组件数据
省略字段,那么信号停止整个增量快照的进展。5
增量
一个必需的组成部分
数据
领域的一个信号,表明指定的快照操作停止。
目前,唯一有效的选项增量
。
如果你不指定一个类型
值时,信号无法停止增量快照。
阅读改变数据表
连接器第一次启动时,它需要一个结构性的快照捕获的结构表和坚持这一信息内部数据库的历史主题。开云体育电动老虎机连接器然后确定每个源表的更改表,并完成以下步骤。
对于每个更改表,创建的连接器阅读所有的变化之间的最后一个存储最大的LSN和当前最大的LSN。
连接器类型的变化,它读取以升序排序,根据提交的值LSN和改变LSN。这个排序顺序确保更改Debezium重播的相同顺序出现在数据库中。开云体育官方注册网址开云体育电动老虎机
连接器通过提交和改变lsn抵消卡夫卡连接。
连接器商店最大的LSN和重启步骤1的过程。
在重启之后,连接器简历处理上次抵消(提交和改变lsn)阅读。
连接器能够检测中心是否启用或禁用包括源表和调整其行为。
限制
SQL Server特别需要一个表基本对象来创建一个变化捕获实例。作为结果,捕捉变化(又名索引视图。物化视图)不支持SQL Server,因此Debezium SQL Server连接器。开云体育官方注册网址
主题名称
默认情况下,SQL Server连接器写事件插入
,更新
,删除
操作发生在一个表到一个Apache卡夫卡主题特定的表。连接器使用以下约定名称更改事件主题:< serverName >。< schemaName >。<表>
下面的列表提供了定义组件的默认名称:
- serverName
-
服务器的逻辑名称,指定的
开云体育电动老虎机database.server.name
配置属性。 - schemaName
-
数据库模式的名称更改事件的发生。开云体育电动老虎机
- 的表
-
数据库表的名称更改事件的发生。开云体育电动老虎机
例如,如果实现
是服务器名称,dbo
模式名称,数据库包含表的名字吗开云体育电动老虎机产品
,products_on_hand
,客户
,订单
,连接器将流改变事件记录以下卡夫卡主题:
fulfillment.dbo.products
fulfillment.dbo.products_on_hand
fulfillment.dbo.customers
fulfillment.dbo.orders
如果默认主题名称不符合您的需求,您可以配置自定义主题名称。配置自定义主题名称,您指定正则表达式在逻辑主题路由SMT。关于使用逻辑主题的更多信息路由SMT定制主题命名,明白了主题的路由。
模式改变话题
为每个表启用了疾控中心,Debezium SQL Server连接器存储模式变化的历史事件开云体育官方注册网址应用于捕获数据库中的表。开云体育电动老虎机连接器写模式更改事件卡夫卡主题命名< serverName >
,在那里serverName
是逻辑服务器中指定的名称吗开云体育电动老虎机database.server.name
配置属性。
连接器的消息发送模式改变主题包含负载,可选地,也包含模式的改变事件消息。模式变化的负载事件消息包括以下要素:
-
开云体育电动老虎机数据库名
-
语句的数据库的名称。开云体育电动老虎机的价值
开云体育电动老虎机数据库名
作为关键的消息。 -
tableChanges
-
整个表的结构化表示模式后改变。的
tableChanges
字段包含一个数组,包括表的每一列的条目。因为JSON或Avro的结构化表示了数据格式,消费者可以很容易地读取消息没有首先通过DDL解析器处理它们。
当连接器配置为捕获一个表,它存储的历史表的模式变化不仅改变话题,而且在一个内部数据库历史话题。开云体育电动老虎机内部数据库的历史主题是连接开云体育电动老虎机器只使用,不用于直接消费应用程序使用。确保应用程序只需要通知关于消费模式变化信息的模式改变话题。 |
连接器发出的消息的格式,其模式改变话题是一个酝酿状态,可以随时更改,不另行通知。 |
开云体育官方注册网址Debezium发出消息的模式改变话题当发生以下事件:
你为一个表启用疾控中心。
您禁用疾控中心的一个表。
你改变表的结构中心启用后模式演化过程。
下面的示例显示了一个消息模式改变话题。消息包含一个表模式的逻辑表示。
{"模式":{…},“有效载荷”:{“源”:{“版本”:“1.9.7。最后”、“连接器”:“”、“名称”:“server1状态"置疑"”、“ts_ms”: 1588252618953,“快照”:“真正的”、“”、“testDB数据库”:“模式”:“dbo”、“表”:“客户”、“change_lsn”:空,“commit_lsn”:“00000025:00000d98:00a2”、“event_serial_no”:零},“testDB数据库名”:“”,开云体育电动老虎机(1):“schemaName dbo”、“ddl”:空,(2)“tableChanges”:((3){“类型”:“创造”,(4)“id”: \“\”, \“testDB dbo \“\”, \“客户,(5)"表":{(6)“defaultCharsetName”:零,“primaryKeyColumnNames”:(7)“id”],“列”:[(8){" name ": " id ",“jdbcType”: 4,“nativeType”:空,“typeName”:“int身份”、“typeExpression”:“int身份”、“charsetName”:空,“长度”:10“规模”:0,“位置”:1、“可选”:假的,“自动增量”:假的,“生成”:假},{“名称”:“first_name”,“jdbcType”: 12日“nativeType”:空,“typeName”:“varchar”、“typeExpression”:“varchar”、“charsetName”:空,“长度”:255年,“规模”:空,“位置”:2,“可选”:假的,“自动增量”:假的,“生成”:假},{“名称”:“last_name”,“jdbcType”: 12日“nativeType”:空,“typeName”:“varchar”、“typeExpression”:“varchar”、“charsetName”:空,“长度”:255年,“规模”:空,“位置”:3,“可选”:假的,“自动增量”:假的,“生成”:假},{“名称”:“电子邮件”、“jdbcType”: 12日“nativeType”:空,“typeName”:“varchar”、“typeExpression”:“varchar”、“charsetName”:空,“长度”:255年,“规模”:空,“位置”:4,“可选”:假的,“自动增量”:假的,“生成”:假}]}}]}}
项 | 字段名 | 描述 |
---|---|---|
1 |
|
标识包含的数据库和模式的变化。开云体育电动老虎机 |
2 |
|
总是 |
3 |
|
一个或多个数组项包含一个DDL命令生成的模式变化。 |
4 |
|
描述的那种变化。价值是下列之一:
|
5 |
|
创建的表的完整标识符,修改或删除。 |
6 |
|
代表表元数据应用后改变。 |
7 |
|
列表的列组成表的主键。 |
8 |
|
改变表中的每一列的元数据。 |
在连接器的消息发送模式改变的话题,关键是数据库的名称包含模式的变化。开云体育电动老虎机在以下的示例中,有效载荷
字段包含的关键:
{"模式":{“类型”:“结构”、“字段”:[{“类型”:“弦”、“可选”:假的,“场”:“数据库名”}],“可选”:假的,“名字”:“io.debezium.connector.sql开云体育电动老虎机server.SchemaChangeKey”},“有效载荷”:{“数据库名”:“testDB}}开云体育官方注册网址
数据更改事件
Debe开云体育官方注册网址zium SQL Server连接器生成一个数据为每个行级更改事件插入
,更新
,删除
操作。每个事件都包含一个键和一个值。键和值的结构取决于表的改变。
开云体育官方注册网址Debezium和卡夫卡连接的设计连续的事件消息流。然而,这些事件的结构可能会改变随着时间的推移,可以让消费者难以处理。为了解决这个问题,每个事件包含模式的内容或,如果您正在使用一个模式注册表,一个模式ID,一个消费者可以使用从注册表获取模式。这使得每个事件自包含的。
下面的骨架JSON显示了更改事件的基本四个部分。然而,如何配置卡夫卡连接转换器,你选择在应用程序中使用的决定表示这四个部分的更改事件。一个模式
字段的更改事件只有当你配置转换器装出来的。同样,事件关键和事件有效负载的变化事件只有在你配置一个转换器装出来的。如果你使用JSON转换器配置它来生产所有四个基本事件部分改变,改变事件有一个结构:
{"模式":{(1)…},“有效载荷”:{(2)…},"模式":{(3)…},“有效载荷”:{(4)…}},
项 | 字段名 | 描述 |
---|---|---|
1 |
|
第一个 |
2 |
|
第一个 |
3 |
|
第二个 |
4 |
|
第二个 |
默认情况下,连接器流改变事件记录主题名称是一样的事件的原始表。看到主题名称。
SQL Server连接器确保所有卡夫卡连接模式名坚持Avro模式名称格式。这意味着逻辑服务器名称必须开始用拉丁字母或下划线,也就是说,a - z、a - z,或_。每个剩余字符在逻辑服务器名称和数据库和表中的每个字符的名称必须是一个拉丁字母,数字,下划线,也就是说,a - z、a - z, 0 - 9,或\ _。开云体育电动老虎机如果有一个无效的字符替换为下划线字符。 这可能会导致意想不到的冲突如果逻辑服务器名称,数据库名称,或一个表名称包含无效字符,和唯一的字符,区分名称从一个另一个无效,从而替换为下开云体育电动老虎机划线。 |
更改事件的钥匙
改变事件的主要包含的模式改变表的键和改变行实际的关键。模式和相应的有效载荷包含一个字段,用于改变表中的每一列的主键(或独特的键约束)当时的事件创建的连接器。
考虑以下客户
表,紧随其后的是一个更改事件这个表的关键。
创建表的客户(id的整数标识(1001 1)NOT NULL主键,first_name VARCHAR (255) NOT NULL, last_name VARCHAR (255) NOT NULL,邮件VARCHAR (255) NOT NULL独特的);
每一个变化事件,抓住了改变客户
表具有相同的事件模式的关键。只要客户
表有前面的定义,每一个更改事件捕获的变化客户
表有以下键结构,在JSON,看起来像这样:
{"模式":{(1)“类型”:“结构”,“字段”:(2){“类型”:“int32”、“可选”:假的,“场”:“id”}],“可选”:假的,(3)“名称”:“server1.dbo.customers.Key”(4)},“有效载荷”:{(5)“id”: 1004}}
项 | 字段名 | 描述 |
---|---|---|
1 |
|
模式的关键部分指定了卡夫卡连接模式,描述了什么是关键的 |
2 |
|
指定每个字段,预计 |
3 |
|
表明事件的键必须包含一个值 |
4 |
|
的名字的结构模式,它定义了关键的负载。该模式描述表的主键的结构改变。关键模式名的格式connector-name。开云体育电动老虎机数据库模式名。表名。
|
5 |
|
包含这一变化的关键行生成事件。在这个例子中,关键,包含一个单一的 |
虽然 |
如果表没有主键或唯一键,然后更改事件的关键是null。这是有道理的,因为一个表中的行没有主键或唯一键约束不能唯一标识。 |
更改事件值
改变的价值比的关键事件更复杂。像的关键,有价值模式
部分和一个有效载荷
部分。的模式
部分包含模式描述信封
的结构有效载荷
部分,包括其嵌套的字段。改变事件的操作创建、更新或删除数据有效载荷与信封结构都有一个值。
考虑相同的样本表用来显示的一个例子改变事件的关键:
创建表的客户(id的整数标识(1001 1)NOT NULL主键,first_name VARCHAR (255) NOT NULL, last_name VARCHAR (255) NOT NULL,邮件VARCHAR (255) NOT NULL独特的);
的价值部分的更改事件改变这个表为每个事件类型描述。
创建事件
下面的例子显示了更改事件的价值部分的连接器生成创建数据的操作客户
表:
{"模式":{(1)“类型”:“结构”、“字段”:[{“类型”:“结构”、“字段”:[{“类型”:“int32”、“可选”:假的,“场”:“id”},{“类型”:“弦”、“可选”:假的,“场”:“first_name”},{“类型”:“弦”、“可选”:假的,“场”:“last_name”},{“类型”:“弦”、“可选”:假的,“场”:“电子邮件”}],“可选”:真的,“名字”:“server1.dbo.customers.Value”,(2)“字段”:“之前”},{“类型”:“结构”、“字段”:[{“类型”:“int32”、“可选”:假的,“场”:“id”},{“类型”:“弦”、“可选”:假的,“场”:“first_name”},{“类型”:“弦”、“可选”:假的,“场”:“last_name”},{“类型”:“弦”、“可选”:假的,“场”:“电子邮件”}],“可选”:真的,“名字”:“server1.dbo.customers。价值", "field": "after" }, { "type": "struct", "fields": [ { "type": "string", "optional": false, "field": "version" }, { "type": "string", "optional": false, "field": "connector" }, { "type": "string", "optional": false, "field": "name" }, { "type": "int64", "optional": false, "field": "ts_ms" }, { "type": "boolean", "optional": true, "default": false, "field": "snapshot" }, { "type": "string", "optional": false, "field": "db" }, { "type": "string", "optional": false, "field": "schema" }, { "type": "string", "optional": false, "field": "table" }, { "type": "string", "optional": true, "field": "change_lsn" }, { "type": "string", "optional": true, "field": "commit_lsn" }, { "type": "int64", "optional": true, "field": "event_serial_no" } ], "optional": false, "name": "io.debezium.connector.sqlserver.Source",(3)“字段”:“源”},{“类型”:“弦”、“可选”:假的,“场”:“人事处”},{“类型”:“int64”、“可选”:真的,“场”:“ts_ms”}],“可选”:假的,“名字”:“server1.dbo.customers.Envelope”(4)},“有效载荷”:{(5)“之前”:空,(6)"后":{(7)“id”: 1005年,“first_name”:“约翰”,“last_name”:“母鹿”、“电子邮件”:“john.doe@example.org”},“源”:{(8)“版本”:“1.9.7。最后”、“连接器”:“”、“名称”:“server1状态"置疑"”、“ts_ms”: 1559729468470,“快照”:假的,“分贝”:“testDB”、“模式”:“dbo”、“表”:“客户”、“change_lsn”:“00000027:00000758:0003”、“commit_lsn”:“00000027:00000758:0005”、“event_serial_no”:“1”},“人事处”:“c”,(9)“ts_ms”: 1559729471739(10)}}
项 | 字段名 | 描述 |
---|---|---|
1 |
|
价值的模式,描述了价值的有效载荷的结构。更改事件的价值模式都是一样的在每一个更改事件的连接器生成一个特定的表。 |
2 |
|
在 |
3 |
|
|
4 |
|
|
5 |
|
价值的实际数据。这是改变事件提供的信息。 |
6 |
|
一个可选的字段指定事件发生之前的状态行。当 |
7 |
|
一个可选的字段指定事件发生后的状态行。在这个例子中, |
8 |
|
强制性字段描述了事件源的元数据。该字段包含信息,您可以使用它来比较这一事件与其他事件,关于事件的起源,事件发生的顺序,事件是否相同的事务的一部分。元数据来源包括:
|
9 |
|
强制性的描述类型的字符串操作导致连接器生成事件。在这个例子中,
|
10 |
|
可选字段显示的时间连接器处理事件。事件消息信封,时间是基于系统时钟在JVM中运行卡夫卡连接任务。 |
更新事件
更改事件的价值更新的样本客户
作为一个表有相同的模式创建事件表。同样,事件相同价值的有效载荷结构。然而,在一个事件有效负载价值包含不同的值更新事件。更改事件的一个例子是价值的事件连接器生成的一个更新客户
表:
{"模式":{…},“有效载荷”:{“前”:{(1)“id”: 1005年,“first_name”:“约翰”,“last_name”:“母鹿”、“电子邮件”:“john.doe@example.org”},“后”:{(2)“id”: 1005年,“first_name”:“约翰”,“last_name”:“母鹿”、“电子邮件”:“noreply@example.org”},“源”:{(3)“版本”:“1.9.7。最后”、“连接器”:“”、“名称”:“server1状态"置疑"”、“ts_ms”: 1559729995937,“快照”:假的,“分贝”:“testDB”、“模式”:“dbo”、“表”:“客户”、“change_lsn”:“00000027:00000ac0:0002”、“commit_lsn”:“00000027:00000ac0:0007”、“event_serial_no”:“2”},“凤凰社”:“u”,(4)“ts_ms”: 1559729998706(5)}}
项 | 字段名 | 描述 |
---|---|---|
1 |
|
一个可选的字段指定事件发生之前的状态行。在一个更新事件的价值, |
2 |
|
一个可选的字段指定事件发生后的状态行。你可以比较 |
3 |
|
强制性字段描述了事件源的元数据。的
的
|
4 |
|
强制性的字符串描述操作的类型。在一个更新事件的价值, |
5 |
|
可选字段显示的时间连接器处理事件。事件消息信封,时间是基于系统时钟在JVM中运行卡夫卡连接任务。 |
更新列一行的主要/唯一键改变值的行键。当一个关键变化,Debezium输出开云体育官方注册网址三个事件:删除事件和一个墓碑上的事件用旧的关键行,紧随其后的是一个创建事件的新键行。 |
删除事件
在一个值删除有相同的变化事件模式
部分为创建和更新事件以相同的表。的有效载荷
在一个部分删除事件为样本客户
表看起来像这样:
{"模式":{…}},“有效载荷”:{“前”:{< >“id”: 1005年,“first_name”:“约翰”,“last_name”:“母鹿”、“电子邮件”:“noreply@example.org”},“后”:空,(2)“源”:{(3)“版本”:“1.9.7。最后”、“连接器”:“”、“名称”:“server1状态"置疑"”、“ts_ms”: 1559730445243,“快照”:假的,“分贝”:“testDB”、“模式”:“dbo”、“表”:“客户”、“change_lsn”:“00000027:00000db0:0005”、“commit_lsn”:“00000027:00000db0:0007”、“event_serial_no”:“1”},“人事处”:“d”,(4)“ts_ms”: 1559730450205(5)}}
项 | 字段名 | 描述 |
---|---|---|
1 |
|
可选字段,指定事件发生之前的状态行。在一个删除事件的价值, |
2 |
|
可选字段,指定事件发生后的状态行。在一个删除事件的价值, |
3 |
|
强制性字段描述了事件源的元数据。在一个删除事件的价值,
|
4 |
|
强制性的字符串描述操作的类型。的 |
5 |
|
可选字段显示的时间连接器处理事件。事件消息信封,时间是基于系统时钟在JVM中运行卡夫卡连接任务。 |
SQL Server事件连接器设计卡夫卡日志压实。日志压实使删除一些旧消息只要至少每个关键是保持最新的消息。这使卡夫卡回收存储空间同时确保主题包含一个完整的数据集,可用于重新加载密钥的状态。
当一行被删除的删除事件的价值仍然使用日志压实,因为卡夫卡之前删除所有消息可以拥有同样的关键。然而,对于卡夫卡删除所有消息,相同的密钥,必须的信息价值零
。为做到这一点,Debezium SQL Server连接器开云体育官方注册网址后发出删除事件,连接器发出一种特别的墓碑上活动,但是有相同的关键零
价值。
事务的元数据
开云体育官方注册网址Debezium可以生成事件表示事务边界和丰富数据更改事件消息。
限制当Debezium接收事务开云体育官方注册网址的元数据
开云体育官方注册网址Debezium寄存器和接收元数据只对交易发生后部署连接器。交易发生之前部署连接器的元数据是不可用的。 |
开云体育电动老虎机数据库事务是由一个语句块之间的封闭开始
和结束
关键词。开云体育官方注册网址Debezium生成事务边界的事件开始
和结束
分隔符在每个事务。事务边界事件包含以下字段:
-
状态
-
开始
或结束
-
id
-
唯一的事务标识符的字符串表示。
-
event_count
(结束
事件) -
发出的事件总数事务。
-
data_collections
(结束
事件) -
对的数组
data_collection
和event_count
提供事件的数量发出的变化来自给定的数据收集。
没有为Debezium可靠地确定当事务结开云体育官方注册网址束。事务 |
下面的示例显示了一个典型的事务边界的信息:
{“状态”:“开始”,“id”:“00000025:00000d08:0025”、“event_count”:空,“data_collections”:零}{“状态”:“结束”,“id”:“00000025:00000d08:0025”、“event_count”: 2,“data_collections”: [{:“data_collection testDB.dbo。为多”、“event_count”: 1}, {:“data_collection testDB.dbo。”、“event_count”表b: 1}]}
除非通过覆盖transaction.topic
选择,交易事件写入主题命名开云体育电动老虎机database.server.name.transaction
。
改变数据事件浓缩
启用事务元数据时,数据信息信封
富含是新的吗事务
字段。这个领域提供关于每一个事件的信息的形式复合的字段:
-
id
-
唯一的事务标识符的字符串表示
-
total_order
-
事件在所有事件的绝对位置生成的事务
-
data_collection_order
-
每个数据收集事件在所有事件的位置,发出的事务
下面的示例显示了一个典型的消息是什么样子:
{“前”:零,“后”:{“pk”:“2”,“aa”:“1”},“源”:{…},“人事处”:“c”、“ts_ms”:“1580390884335”,“交易”:{" id ":“00000025:00000d08:0025”、“total_order”:“1”,“data_collection_order”: " 1 "}}
数据类型的映射
Debe开云体育官方注册网址zium SQL Server连接器代表更改表行数据结构化事件的生产,如存在的表行。每个事件包含字段的列值来表示行。一个事件的方式表示一个操作的列值取决于SQL数据类型的列。在这次事件中,连接器将每个SQL Server数据类型的字段映射到一个文字类型和一个语义类型。
连接器都可以映射SQL Server数据类型文字和语义类型。
- 文字类型
-
描述如何使用卡夫卡所代表的价值就是连接模式类型,即
INT8
,INT16
,INT32
,INT64
,FLOAT32
,FLOAT64
,布尔
,字符串
,字节
,数组
,地图
,结构体
。 - 语义类型
-
描述了卡夫卡如何连接模式了意义使用的名称的字段卡夫卡连接模式。
如果默认数据类型转换不符合你的需要,你可以创建一个自定义转换器连接器。
基本类型
下面的表显示了连接器地图基本SQL Server数据类型。
SQL Server数据类型 | 文字类型(模式类型) | 语义类型(模式名称)和笔记 |
---|---|---|
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
|
|
|
|
其他数据类型映射将在以下小节中描述。
如果存在,一个列的默认值是传播到对应字段的卡夫卡连接模式。改变信息将包含字段的默认值(除非显式列值了),这应该很少需要获得模式的默认值。通过默认值帮助虽然满足兼容性规则使用Avro注册表的序列化格式一起汇合的模式。
时间值
除了SQL服务器的DATETIMEOFFSET
数据类型(包含时区信息),其他时间类型依赖的价值time.precision.mode
配置属性。当time.precision.mode
配置属性设置为自适应
(默认),那么连接器将决定时间类型的文字类型和语义类型基于列的数据类型定义,这样的事件完全代表数据库中的值:开云体育电动老虎机
SQL Server数据类型 | 文字类型(模式类型) | 语义类型(模式名称)和笔记 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
当time.precision.mode
配置属性设置为连接
,那么连接器将使用预定义的卡夫卡连接逻辑类型。当消费者只知道这可能是有用的内置卡夫卡连接逻辑类型,无法处理可变精度时间值。另一方面,因为SQL Server支持10微秒级精度,通过连接器生成的事件连接
时间精度模式将导致失去精度当数据库列开云体育电动老虎机精确到小数部分的第二值大于3:
SQL Server数据类型 | 文字类型(模式类型) | 语义类型(模式名称)和笔记 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
十进制值
开云体育官方注册网址Debezium连接器处理小数的设置decimal.handling.mode
连接器配置属性。
- decimal.handling.mode =精确
-
表11所示。映射时 decimal.handling.mode =精确
SQL服务器类型 文字类型(模式类型) 语义类型(模式名称) 数字((P (S)))
字节
org.apache.kafka.connect.data.Decimal
的规模
模式参数包含一个整数,表示小数点位数有多少发生了变化。小数((P (S)))
字节
org.apache.kafka.connect.data.Decimal
的规模
模式参数包含一个整数,表示小数点位数有多少发生了变化。SMALLMONEY
字节
org.apache.kafka.connect.data.Decimal
的规模
模式参数包含一个整数,表示小数点位数有多少发生了变化。钱
字节
org.apache.kafka.connect.data.Decimal
的规模
模式参数包含一个整数,表示小数点位数有多少发生了变化。 - decimal.handling.mode =双
-
表12。映射时 decimal.handling.mode =双
SQL服务器类型 文字类型 语义类型 数字((M [D]))
FLOAT64
n /一个
小数((M [D]))
FLOAT64
n /一个
SMALLMONEY ((M [D]))
FLOAT64
n /一个
钱((M [D]))
FLOAT64
n /一个
- decimal.handling.mode =字符串
-
表13。映射时 decimal.handling.mode =字符串
SQL服务器类型 文字类型 语义类型 数字((M [D]))
字符串
n /一个
小数((M [D]))
字符串
n /一个
SMALLMONEY ((M [D]))
字符串
n /一个
钱((M [D]))
字符串
n /一个
设置SQL Server
从SQL开云体育官方注册网址 Server Debezium捕捉变化事件表,与必要的SQL Server管理员特权必须首先运行一个查询在数据库上启用疾控中心。开云体育电动老虎机管理员必须为每个表,然后使CDC Debezium捕获。开云体育官方注册网址
CDC应用之后,它捕获的所有插入
,更新
,删除
操作致力于启用CDD的表。Debe开云体育官方注册网址zium连接器可以捕获这些事件并释放他们卡夫卡的话题。
使疾病预防控制中心在SQL Server数据库开云体育电动老虎机
您可以启用疾控中心为一个表之前,您必须启用了SQL Server数据库。开云体育电动老虎机SQL Server管理员使疾病预防控制中心通过运行一个系统存储过程。系统存储过程可以通过使用SQL Server Management Studio,运行或使用transact - SQL。
你是一个成员系统管理员固定服务器角色的SQL服务器。
你是一个db_owner数据库。开云体育电动老虎机
SQL Server代理正在运行。
SQL Server疾控中心功能流程变化只发生在用户创建的表。你不能使CDC在SQL Server上主 开云体育电动老虎机数据库。 |
从视图在SQL Server Management Studio菜单,点击模板资源管理器。
在模板的浏览器,扩大SQL Server的模板。
扩大变化数据捕获>配置然后点击启用数据库疾病开云体育电动老虎机预防控制中心。
模板中,取代的数据库名称开云体育电动老虎机
使用
声明与数据库的名称,你想使疾病预防控制中心。开云体育电动老虎机运行存储过程
sys.sp_cdc_enable_db
使疾病预防控制中心的数据库。开云体育电动老虎机数据库为中心启用后,开云体育电动老虎机一个模式的名称
疾病预防控制中心
创建以及疾病预防控制中心用户,元数据表,和其他系统对象。下面的例子展示了如何为数据库启用疾控中心开云体育电动老虎机
MyDB
:例如:为疾控中心启用SQL Server数据库模板开云体育电动老虎机使用MyDB执行系统。sp_cdc_enable_db去
一个SQL服务器上启用疾控中心表
一个SQL服务器管理员必须使变化数据捕获的源表你想Debezium捕捉。开云体育官方注册网址数据库必开云体育电动老虎机须为疾控中心已经启用。要启用CDC在桌子上,一个SQL服务器管理员运行存储过程sys.sp_cdc_enable_table
为表。存储过程可以通过使用SQL Server Management Studio,运行或使用transact - SQL。必须启用SQL Server疾控中心为每个表,你想捕获。
疾控中心启用了SQL Server数据库。开云体育电动老虎机
SQL Server代理正在运行。
你是一个成员
db_owner
固定数据库角开云体育电动老虎机色的数据库。
从视图在SQL Server Management Studio菜单,点击模板资源管理器。
在模板的浏览器,扩大SQL Server的模板。
扩大变化数据捕获>配置,然后单击使表指定Filegroup选项。
模板中,取代的表名
使用
声明与表的名称,你想捕获。运行存储过程
sys.sp_cdc_enable_table
。下面的例子显示了如何使CDC表
MyTable
:例子:启用SQL Server表疾控中心使用MyDB执行系统。sp_cdc_enable_table @source_schema = N 'dbo’, @source_name = N 'MyTable’,(1)@role_name = N 'MyRole ',(2)@filegroup_name = N 'MyDB_CT ',(3)@supports_net_changes = 0去
1 指定的表的名称,你想捕获。 2 指定一个角色 MyRole
你可以添加用户谁想要资助选择
允许在捕获的源表的列。用户系统管理员
或db_owner
角色也可以访问指定的改变表。设定的值@role_name
来零
只允许成员系统管理员
或db_owner
捕获的信息的完全访问权。3 指定了 filegroup
在SQL Server捕获的表的更改表的地方。指定的filegroup
必须是已经存在的。最好不要在同一定位变化表filegroup
您使用的源表。
验证用户能够访问CDC表
SQL服务器管理员可以运行一个系统存储过程查询数据库或表检索其疾病预防控制中心配置信息。开云体育电动老虎机存储过程可以通过使用SQL Server Management Studio,运行或使用transact - SQL。
你有
选择
允许所有捕获的列上的捕获实例。的成员db_owner
开云体育电动老虎机数据库角色可以查看信息的所有定义捕获实例。你有加入任何控制角色表定义查询包含的信息。
从视图在SQL Server Management Studio菜单,点击对象资源管理器。
对象资源管理器,扩张开云体育电动老虎机数据库,然后扩展你的数据库对象,例如,开云体育电动老虎机MyDB。
扩大可编程性>存储过程>系统存储过程。
运行
sys.sp_cdc_help_change_data_capture
存储过程查询表格。查询不应该返回空的结果。
下面的示例存储过程运行
sys.sp_cdc_help_change_data_capture
在数据库开云体育电动老虎机MyDB
:示例:查询一个表为中心配置信息使用MyDB;执行系统。sp_cdc_help_change_data_capture去
每个表的查询返回配置信息数据库,为疾控中心启用,包含改变授权访问数据,调用者。开云体育电动老虎机如果结果是空的,验证该用户有权限访问两个捕获实例和CDC表。
SQL Server在Azure
Debe开云体育官方注册网址zium SQL Server连接器可以使用SQL Server在Azure。指这个例子为SQL Server配置CDC与Debezium Azure和使用它。开云体育官方注册网址
SQL Server总是在
SQL Server连接器可以捕获变化从一个总是在只读副本。
配置变化数据捕获和主节点上启用。SQL服务器不支持中心直接在副本。
配置选项
开云体育电动老虎机database.applicationIntent
被设置为只读的
。这是所需的SQL Server。当Debe开云体育官方注册网址zium检测这种配置选项,它会采取以下行动:集
snapshot.isolation.mode
来快照
,这是唯一一个只读事务隔离模式支持。提交(只读)事务在每个查询的执行流循环,这是需要获得最新的疾病控制和预防中心的数据视图。
SQL Server的捕捉工作代理配置服务器负载和延迟
当一个数据库管开云体育电动老虎机理员允许改变源表的数据捕获,捕获工作代理开始运行。代理从事务日志中读取新的变更事件记录和事件记录复制到变化数据表。之间的时间变化是在源表,和时间的改变出现在相应的表中,总有一个小延迟间隔。这个延迟间隔代表一个差距当变化发生在源表和当他们成为Apache卡夫卡Debezium可以流。开云体育官方注册网址
理想情况下,应用程序必须快速响应变化数据,你想保持密切同步源和变化之间的表。你想象,运行捕获剂不断过程尽快更改事件可能导致增加吞吐量和减少延迟——填充改变表尽快与新事件记录事件发生后,在近乎实时的。然而,这并不一定如此。有一个的性能损失支付追求更直接的同步。每次查询数据库的捕捉工作代理新事件记录,它增加了对数据库主机CPU负载。开云体育电动老虎机额外的服务器上的负载可以在数据库的整体性能产生负面影响,并可能减少交易效率,特别是在高峰的时候数据库使用。开云体育电动老虎机
监视数据库是很重要的指标,这样你知道数据库达到的服务开云体育电动老虎机器可以不再支持捕获剂的活动水平。如果你发现性能问题,SQL Server捕获代理设置,您可以修改帮助平衡整个数据库主机上的CPU负载和容忍程度的延迟。开云体育电动老虎机
SQL Server捕捉工作代理配置参数
在SQL Server,参数控制捕获工作代理人的行为是在SQL Server中定义的表msdb.dbo.cdc_jobs
。如果你体验工作性能问题在运行捕获剂,调整捕捉岗位设置以减少CPU负载通过运行sys.sp_cdc_change_job
存储过程和提供新值。
具体指导如何配置SQL Server捕捉工作代理参数超出了本文档的范围。 |
以下参数的最重要的是修改捕获与Debezium SQL服务器代理行为使用连接器:开云体育官方注册网址
-
pollinginterval
-
指定的秒数之间的捕获剂等日志扫描周期。
更高的价值减少数据库主机上的负载,增加延迟。开云体育电动老虎机
的值
0
指定扫描之间没有等待。默认值是
5
。
-
maxtrans
-
指定的最大数量的事务处理期间每个日志扫描周期。捕获的工作流程后,指定的事务数量,停顿的时间长度
pollinginterval
指定下一个扫描开始之前。一个较低的价值减少数据库主机上的负载,增加延迟。开云体育电动老虎机
默认值是
500年
。
-
maxscans
-
指定一个扫描周期的数量限制的捕捉工作可以尝试捕捉的全部内容数据库事务日志。开云体育电动老虎机如果
连续
参数设置为1
,工作停顿的时间长度pollinginterval
指定之前简历扫描。较低的值会减少数据库主机上的负载,增加延迟。开云体育电动老虎机
默认值是
10
。
关于捕获剂参数的更多信息,请参阅SQL Server文档。
部署
部署Debezium S开云体育官方注册网址QL Server连接器,安装Debezium SQL Server连接器存档,配置连接器,并开始通过添加其配置卡夫卡连接连接器。
安装SQL Server,配置为疾病预防控制中心,愿与Debezium连接器使用。开云体育官方注册网址
下载Debezium开云体育官方注册网址SQL Server连接器插件存档
将文件解压缩到卡夫卡连接环境中。
添加JAR文件的目录卡夫卡连接的
plugin.path
。重新启动卡夫卡连接过程去接新的JAR文件。
如果你正在与不可变的容器,明白了开云体育官方注册网址Debezium集装箱的图片Apache管理员、Apache卡夫卡和卡夫卡连接。你可以把官员在Linux上的集装箱图片Microsoft SQL Server从码头工人中心。
SQL Server连接器配置示例
下面是一个例子,一个连接器的配置实例,捕获数据从一个SQL Server服务器在端口1433上192.168.99.100,逻辑上我们的名字fullfillment
。通常,您在JSON文件中配置Debezium SQL Se开云体育官方注册网址rver连接器通过设置配置属性可用于连接器。
你可以选择生成事件的一个子集模式和表在数据库中。开云体育电动老虎机可选地,您可以忽略,面具,或包含敏感数据的截断列,超过指定的尺寸,或者你不需要。
{" name ": " inventory-connector”,(1)“配置”:{“连接器。class": "io.debezium.connector.sqlserver.SqlServerConnector",(2)“开云体育电动老虎机数据库。主机名”:“192.168.99.100”,(3)“开云体育电动老虎机数据库。港”:“1433”,(4)“开云体育电动老虎机数据库。使用r": "sa",(5)“开云体育电动老虎机数据库。密码”:“密码!”(6)“开云体育电动老虎机数据库。dbname": "testDB",(7):开云体育电动老虎机“database.server.name fullfillment”,(8)“table.include。列表”:“dbo.customers”,(9)“开云体育电动老虎机database.history.kafka.bootstrap。服务器”:“卡夫卡:9092”,(10)“开云体育电动老虎机database.history.kafka。来pic": "dbhistory.fullfillment"(11)}}
1 | 我们的连接器的名称与卡夫卡连接服务注册它。 |
2 | 这个SQL Server连接器类的名称。 |
3 | SQL Server实例的地址。 |
4 | SQL Server实例的端口号。 |
5 | SQL Server的用户的名称 |
6 | SQL Server用户的密码 |
7 | 数据库的名称来捕获变化。开云体育电动老虎机 |
8 | SQL Server实例的逻辑名称/集群,形成一个名称空间中使用所有的名字卡夫卡的主题连接器写道,卡夫卡连接模式名称和相应的名称空间Avro模式时Avro转换器使用。 |
9 | 一个列表的所有表的更改Debezium应该捕获。开云体育官方注册网址 |
10 | 卡夫卡的经纪人这个连接器将使用DDL语句编写和恢复数据库历史话题。开云体育电动老虎机 |
11 | 数据库的名称历史话题,连接器将D开云体育电动老虎机DL语句编写和恢复。这个话题是仅供内部使用,不应被消费者使用。 |
配置属性的完整列表,您可以设置Debezium SQL Server连接器,明白了开云体育官方注册网址SQL Server连接器属性。
你可以发送这个配置帖子
命令来运行卡夫卡连接服务。服务记录配置并启动一个连接器任务执行以下任务:
连接到SQL Server数据库。开云体育电动老虎机
读事务日志。
记录更改事件卡夫卡的话题。
添加连接器配置
开始运行一个SQL Server De开云体育官方注册网址bezium连接器,创建一个连接器配置,配置添加到您的卡夫卡连接集群。
Debe开云体育官方注册网址zium SQL Server连接器安装。
创建一个SQL服务器的配置连接器。
使用卡夫卡REST API连接卡夫卡添加连接器配置连接集群。
当连接器,它执行一个一致的快照连接器的SQL Server数据库配开云体育电动老虎机置。连接器然后开始生成数据行级操作的事件和流媒体的改变事件记录卡夫卡的话题。
连接器属性
Debe开云体育官方注册网址zium SQL Server连接器有许多配置属性,您可以使用它们来实现正确的连接器为您的应用程序的行为。许多属性的默认值。
属性信息的组织结构如下:
开云体育电动老虎机历史数据库连接器配置属性控制Debezium如何处理事件,开云体育官方注册网址它从数据库中读取历史话题。开云体育电动老虎机
直通数据库驱动程序属性开云体育电动老虎机控制数据库驱动程序的行为。开云体育电动老虎机
需要Debeziu开云体育官方注册网址m SQL Server连接器配置属性
以下配置属性要求除非一个默认值是可用的。
财产 | 默认的 | 描述 | ||
---|---|---|---|---|
没有默认的 |
独特的连接器的名称。再次尝试注册名称相同的就会失败。(此属性所要求的所有卡夫卡连接连接器)。 |
|||
没有默认的 |
连接器的Java类的名称。总是使用的值 |
|||
|
指定的最大数量的任务,连接器可以使用它来捕获数据从数据库实例。开云体育电动老虎机如果 |
|||
没有默认的 |
SQL Server数据库服务器的IP地址或主机名。开云体育电动老虎机 |
|||
|
整数SQL Server数据库服务器的端口号。开云体育电动老虎机 |
|||
没有默认的 |
用户名时使用连接到SQL Server数据库服务器。开云体育电动老虎机在使用Kerberos身份验证时可以省略,哪些可以配置使用直通属性。 |
|||
没有默认的 |
密码时使用连接到SQL Server数据库服务器。开云体育电动老虎机 |
|||
没有默认的 |
SQL Server数据库的名称来流的变化。开云体育电动老虎机不能使用吗 |
|||
没有默认的 |
指定的实例名称SQL Server命名的实例。 |
|||
没有默认的 |
以逗号分隔的SQL Server数据库名称的流的变化。开云体育电动老虎机目前,只有一个支持数据库名称。开云体育电动老虎机不能使用吗 这个选项是实验,不能用于生产。使用它会使连接器不兼容的行为没有升级或降级的默认配置路径:
|
|||
没有默认的 |
逻辑名称,标识和SQL Server数据库服务器提供了一个名称空间,你希望Debezium捕获。开云体育官方注册网址开云体育电动老虎机逻辑名称应该是唯一的在所有其他连接器,因为它被用作所有卡夫卡主题名称的前缀,接收记录从这个连接器。只有字母数字字符,连字符,点和强调必须用于数据库服务器逻辑名。开云体育电动老虎机 +
|
|||
没有默认的 |
可选,以逗号分隔的正则表达式匹配的模式的名称想要捕捉变化。不包括在任何模式名称 |
|||
没有默认的 |
可选,以逗号分隔的正则表达式匹配的模式的名称不希望捕获的变化。不包括在任何模式的名称 |
|||
没有默认的 |
一个可选的以逗号分隔的正则表达式匹配完全限定表标识符表,你希望Debezium捕获;开云体育官方注册网址不包括的任何表 |
|||
没有默认的 |
一个可选的以逗号分隔的正则表达式匹配完全限定表标识符的表你想排除被抓获;开云体育官方注册网址不包括在Debezium捕获所有表 |
|||
空字符串 |
一个可选的以逗号分隔的正则表达式匹配的完全限定名称列应该被包括在事件消息值的变化。完全限定名称列的形式schemaName。的表。columnName。请注意,主键列总是包含在事件的关键,即使不包括在价值。不还 |
|||
空字符串 |
一个可选的以逗号分隔的正则表达式匹配的完全限定名称列应该排除在更改事件消息值。完全限定名称列的形式schemaName。的表。columnName。请注意,主键列总是包含在事件的关键,如果排除在价值。不还 |
|||
n /一个 |
一个可选,以逗号分隔的正则表达式匹配的完全限定名称基于字符的列。完全限定名称列的形式' < schemaName >。<表>._ < columnName >”。在生成的更改事件记录,指定列的值替换为假名。 一个假名由散列值指定应用的结果hashAlgorithm和盐。基于所使用的哈希函数,引用完整性维护,当列值替换为假名。支持哈希函数的描述MessageDigest节Java加密体系结构标准算法名称的文档。 column.mask.hash.sha with.salt——256.。CzQMA0cB5K = inventory.orders。customerName, inventory.shipment.customerName 如果有必要,笔名是自动缩短列的长度。连接器配置可以包括多个属性,指定不同的哈希算法和盐。 |
|||
|
时间、日期和时间戳可以代表不同的精度,包括: |
|||
|
指定连接器应如何处理的值 |
|||
|
布尔值,用于指定连接器是否应该发布数据库模式的变化到卡夫卡的主题名称相同的数据库服务器ID。每个模式改变记录键包含数据库名称和值是一个JSON结构,描述了模式更新开云体育电动老虎机。这是独立的连接器内部数据库历史记录。开云体育电动老虎机默认值是 |
|||
|
控制是否删除事件是紧随其后的是一个墓碑上的事件。 |
|||
n /一个 |
一个可选的以逗号分隔的正则表达式匹配的完全限定名称基于字符的列的值应该被截断的更改事件消息值字段值是否超过指定数量的字符。可以使用多个属性具有不同的长度在一个配置中,尽管在每个长度必须是一个正整数。完全限定名称列的形式schemaName。的表。columnName。 |
|||
n /一个 |
一个可选的以逗号分隔的正则表达式匹配的完全限定名称基于字符的列的值应该被替换更改事件消息值的字段值由指定数量的星号( |
|||
n /一个 |
一个可选的以逗号分隔的正则表达式匹配的完全限定名称列的原始类型和长度作为参数应该添加相应的字段在发射模式变化的消息。模式参数 |
|||
n /一个 |
一个可选的以逗号分隔的正则表达式匹配的特定于数据库的数据类型名称列的原始类型和长度作为参数应该添加相应的字段在发射模式变化的消息。开云体育电动老虎机模式参数 |
|||
n /一个 |
的表达式列表指定连接器使用的列表单自定义消息键改变事件记录,发布卡夫卡指定表的主题。 默认情况下,Debezi开云体育官方注册网址um使用一个表的主键列,它发出的消息键记录。的默认值,或指定一个关键对于缺乏一个主键的表,您可以配置自定义消息键基于一个或多个列。 每一个完全限定表名是一个正则表达式在以下格式: 列的数量没有限制,您使用它来创建自定义消息键。然而,最好使用所需的最小数量,指定一个唯一键。 |
|||
字节 |
指定二进制( |
|||
avro |
指定应该如何调整的兼容模式名消息转换器使用的连接器。可能的设置:
|
先进的SQL Server连接器配置属性
以下先进的配置属性都有现成的,在大多数情况下工作,因此很少需要指定连接器的配置。
财产 | 默认的 | 描述 |
---|---|---|
没有默认的 |
列举了一个以逗号分隔的符号名称自定义转换器连接器可以使用实例。例如,
你必须设置 对于每一个转换配置连接器,您必须添加一个
例如, isbn。类型:io.debezium.test.IsbnConverter 如果你想进一步控制配置转换器的行为,您可以添加一个或多个配置参数值传递给转换器。把任何额外的配置参数和一个转换器,前缀符号名称的参数名称的转换器。例如, isbn.schema.name: io.开云体育官方注册网址debezium.sqlserver.type.Isbn |
|
最初的 |
在初始快照模式的结构和可选地捕捉到表的数据。快照完成后,连接器将继续阅读改变事件从数据库的重做日志。开云体育电动老虎机支持以下值:
|
|
所有表中指定 |
一个可选,以逗号分隔的正则表达式匹配的完全限定名称( 这个属性不会影响增量快照的行为。 |
|
repeatable_read |
使用模式来控制事务隔离级别和多久连接器锁表指定捕获。支持以下值:
的 模式的选择也会影响数据的一致性。只有 |
|
|
指定连接器应该如何应对异常事件的处理过程中。 |
|
|
正整数的值指定的毫秒数连接器应该在每个迭代中等待新的更改事件出现。默认为1000毫秒,或者1秒。 |
|
|
正整数的值指定了阻塞队列的最大记录数所能容纳的量。当Debe开云体育官方注册网址zium从数据库读取事件流,它将事件阻塞队列之前写卡夫卡。开云体育电动老虎机阅读改变事件的阻塞队列可以提供反压力的情况下从数据库连接器吸入消息的速度比它可以编写卡夫卡,或者当卡夫卡变得不可用。开云体育电动老虎机事件队列连接器时忽视举行定期记录偏移量。总是设置的值 |
|
|
一个长整型值,指定字节的阻塞队列的最大体积。默认情况下,体积限制不指定阻塞队列。指定的字节数,队列可以消费,将此属性设置为一个积极的长期价值。 |
|
|
正整数的值指定的最大大小每一批处理的事件,应该在每个迭代的连接器。 |
|
|
控制频率的心跳消息被发送。 |
|
|
控制的主题命名的心跳消息被发送。 |
|
没有默认的 |
在毫秒间隔之前应该等待拍摄快照后启动; |
|
|
指定的最大行数应该读入一个从每个表而拍摄快照。连接器将读取表内容在多个批次的大小。默认为2000。 |
|
没有默认的 |
指定的行数,将每个数据库获取给定查询的往返。开云体育电动老虎机默认为JDBC驱动程序的默认获取大小。 |
|
|
一个整数值,它指定的最大数量的时间(以毫秒为单位)等来获取表锁在执行一个快照。如果无法获得表锁在这个时间间隔,快照将失败(也看到快照)。 |
|
没有默认的 |
指定的表行包括一个快照。使用属性如果你想要一个快照包含只有一个子集的一个表中的记录。这个属性只影响快照。它不适用于事件连接器读取的日志。 属性包含一个以逗号分隔的完全限定表名的形式 从一个 “snapshot.select.statement。覆盖”:“客户。订单", "snapshot.select.statement.overrides.customer.orders": "SELECT * FROM [customers].[orders] WHERE delete_flag = 0 ORDER BY id DESC" 在生成的快照,连接器只包含的记录 |
|
v2 |
模式的版本 |
|
|
字段名是否消毒坚持Avro命名要求。看到Avro命名为更多的细节。 |
|
|
当设置为 |
|
|
控制主题的连接器的名称发送交易信息的元数据。占位符 有关更多信息,请参见事务的元数据。 |
|
10000(10秒) |
前等待的毫秒数retriable错误发生后重新启动连接器。 |
|
没有默认的 |
以逗号分隔的操作类型,在流将被忽略。的操作包括: |
|
没有默认值 |
完全限定的名称用于发送的数据收集信号连接器。 |
|
|
允许在增量快照模式变化。当启用连接器将检测模式变化增量快照和重新选择当前块以避免锁定ddl。 |
|
|
的最大行数连接器存取和读取到内存块在增量快照。增加块大小提供了更高的效率,因为快照少运行快照查询一个更大的规模。然而,更大的块的大小也需要更多的内存缓冲区快照数据。调整块大小的值提供了最佳的性能在您的环境中。 |
|
0 |
指定每个迭代的最大数量事务被用来减少内存占用流变化时从多个表在数据库中。开云体育电动老虎机当设置为 |
|
|
使用选项(编译)查询选择所有SELECT语句中使用增量快照。这可以帮助解决参数嗅探问题可能发生但可能导致增加CPU源数据库上的负载,根据查询执行的频率。开云体育电动老虎机 |
开云体育官方注册网址历史Debezium SQL Serve开云体育电动老虎机r数据库连接器配置属性
开云体育官方注册网址Debezium提供了一组开云体育电动老虎机database.history。*
属性控制连接器与模式交互历史话题。
下表描述了开云体育电动老虎机database.history
属性配置Debezium连接器。开云体育官方注册网址
财产 | 默认的 | 描述 |
---|---|---|
连接器的卡夫卡主题的全称存储数据库模式的历史。开云体育电动老虎机 |
||
一个主机/端口对列表,建立一个初始的连接器使用连接到卡夫卡集群。这个连接是用于检索以前存储的数据库模式历史连接器,写作和每个DDL语句从源数据库读取。开云体育电动老虎机每一对应该指向同一个卡夫卡集群卡夫卡所使用的连接过程。 |
||
|
一个整数值,它指定的最大数量毫秒连接器应该等待在启动/恢复,同时为持久化数据轮询。默认是100 ms。 |
|
|
一个整数值,它指定的最大数量毫秒连接器应该等待获取集群信息使用卡夫卡管理客户机。 |
|
|
连接器的最大次数应该尝试读取保存历史数据连接器之前恢复失败的错误。最大的时间等待后没有数据 |
|
|
一个布尔值,用于指定连接器是否应该忽略畸形或未知的数据库语句或停止处理,所以人类可以解决这个问题。开云体育电动老虎机安全默认是 |
|
|
一个布尔值,用于指定连接器是否应该记录所有DDL语句
安全默认是 |
|
|
一个布尔值,用于指定连接器是否应该记录所有DDL语句
安全默认是 |
开云体育官方注册网址Debezium依赖于卡夫卡生产商写模式变化数据库历史话题。开云体育电动老虎机同样,它依赖于卡夫卡消费者连接器开始时从数据库读取历史主题。开云体育电动老虎机您定义的配置卡夫卡生产国和消费国的客户通过将值分配给一组开始的直通配置属性开云体育电动老虎机database.history.producer。*
和开云体育电动老虎机database.history.consumer。*
前缀。直通生产国和消费国数据库历史属性控制的一系列行为,比如如何将这些客户与卡夫卡代开云体育电动老虎机理安全连接,如以下示例所示:
开云体育电动老虎机database.history.producer.security。协议SSL databas开云体育电动老虎机e.history.producer.ssl.keystore.location = = / var /私人/ SSL / kafka.server.keystore。jks 开云体育电动老虎机database.history.producer.ssl.keystore。密码= test1234 datab开云体育电动老虎机ase.history.producer.ssl.truststore.location = / var /私人/ ssl / kafka.server.truststore。jks 开云体育电动老虎机database.history.producer.ssl.truststore。密码= test1234 datab开云体育电动老虎机ase.history.producer.ssl.key。密码= test1234 datab开云体育电动老虎机ase.history.consumer.security。协议SSL databas开云体育电动老虎机e.history.consumer.ssl.keystore.location = = / var /私人/ SSL / kafka.server.keystore。jks 开云体育电动老虎机database.history.consumer.ssl.keystore。密码= test1234 datab开云体育电动老虎机ase.history.consumer.ssl.truststore.location = / var /私人/ ssl / kafka.server.truststore。jks 开云体育电动老虎机database.history.consumer.ssl.truststore。密码= test1234 datab开云体育电动老虎机ase.history.consumer.ssl.key.password = test1234
开云体育官方注册网址Debezium带前缀的属性名之前,将属性传递到卡夫卡客户机。
看到卡夫卡文档了解更多细节卡夫卡生产商配置属性和卡夫卡消费者配置属性。
开云体育官方注册网址Debezium SQL Server连接器直通数据库驱动程序的配置属性开云体育电动老虎机
Debe开云体育官方注册网址zium连接器提供了直通数据库驱动程序的配置。开云体育电动老虎机直通数据库属性从前缀开始开云体育电动老虎机开云体育电动老虎机数据库。*
。例如,连接器传递属性等开云体育电动老虎机database.foobar = false
JDBC URL。
一样的直通属性数据库历史客户开云体育电动老虎机之前开云体育官方注册网址,Debezium带前缀的属性将它们传递到数据库驱动程序。开云体育电动老虎机
开云体育电动老虎机数据库模式演化
当启用变化数据捕获的SQL Server表,表中的变化,事件记录被保存到服务器上获取表。如果引入的变化源表的结构变化,例如,通过添加一个新列,改变不是动态反映在表。只要捕捉表继续使用过时的模式,Debezium连接器不能发出正确数据更改事件表。开云体育官方注册网址你必须干预刷新获取表,使连接器恢复处理更改事件。
因为美国疾病控制与预防中心在SQL Server中实现的方式,你不能使用Debezium更新捕获表。开云体育官方注册网址刷新获取表,一个人必须是一个SQL Server数据库运营商提升特权。开云体育电动老虎机Debez开云体育官方注册网址ium用户,必须协调与SQL Server数据库操作员完成任务模式刷新和恢复流卡夫卡的话题。开云体育电动老虎机
您可以使用下列方法之一后更新捕获表模式的改变:
有优点也有缺点使用每种类型的过程。
你是否使用在线或离线更新方法,你必须完成整个模式应用之前更新过程后续更新相同的源表。最佳实践是执行所有ddl在单个批处理程序只能运行一次。 |
一些模式变化不支持启用了CDC的源表。例如,如果启用了疾控中心在桌子上,SQL服务器不允许您更改表的模式如果你一列或更名为改变了列类型。 |
你改变一个源表中某一列后 |
离线模式更新
离线模式更新获取表的更新提供最安全的方法。然而,离线更新可能不是可行的使用需要高可用性的应用程序。
一个更新的模式致力于疾病预防控制中心启用SQL Server表。
你是一个SQL Server数据库运营商提开云体育电动老虎机升特权。
暂停更新数据库的应用程序。开云体育电动老虎机
等待Debezium连接器开云体育官方注册网址流所有unstreamed改变事件记录。
停止Debeziu开云体育官方注册网址m连接器。
所有更改应用到源表模式。
创建一个新的捕获表更新源表使用
sys.sp_cdc_enable_table
过程参数的独特价值@capture_instance
。在步骤1中恢复应用程序暂停。
启动Debezium开云体育官方注册网址连接器。
Debezium连接开云体育官方注册网址器后开始流从新的捕捉表,删除旧的捕捉表通过运行存储过程
sys.sp_cdc_disable_table
与参数@capture_instance
将旧的捕获实例名。
在线模式更新
完成一个在线模式更新的过程比运行的过程简单离线模式更新,你可以完成它在应用程序和数据无需任何停机处理。然而,在线模式更新,一个潜在的处理差距可能发生在你更新源数据库中的模式,但是在你创建新的捕获实例。开云体育电动老虎机间隔,更改事件继续被旧更改表的实例,和变化的数据保存到旧表保留之前的结构模式。所以,例如,如果你添加一个新列一个源表,更改事件,产生新的捕捉表之前准备好,不包含一个字段的新列。如果您的应用程序不会容忍这样一个过渡期,最好使用离线模式更新过程。
一个更新的模式致力于疾病预防控制中心启用SQL Server表。
你是一个SQL Server数据库运营商提开云体育电动老虎机升特权。
所有更改应用到源表模式。
创建一个新的捕获表更新源表通过运行
sys.sp_cdc_enable_table
存储过程参数的独特价值@capture_instance
。当Debe开云体育官方注册网址zium开始从新捕捉流表,您可以将旧表通过运行捕获
sys.sp_cdc_disable_table
存储过程的参数@capture_instance
将旧的捕获实例名。
让我们部署基于SQL Server开云体育官方注册网址Debezium教程在线演示模式更新。
在接下来的例子中,一个列phone_number
被添加到客户
表。
输入以下命令启动数据库壳:开云体育电动老虎机
docker-compose - f docker-compose-sqlserver。yaml exec bash状态"置疑" - c ' / opt / mssql-tools / bin / sqlcmd - u sa - p $ testDB SA_PASSWORD - d '
修改的模式
客户
通过运行以下查询源表添加phone_number
字段:ALTER TABLE客户添加phone_number VARCHAR (32);
创建新的捕获通过运行实例
sys.sp_cdc_enable_table
存储过程。执行系统。sp_cdc_enable_table @source_schema = ' dbo ' @source_name =客户,@role_name = NULL, @supports_net_changes = 0, @capture_instance =“dbo_customers_v2”;去
新数据插入
客户
表通过运行以下查询:插入客户(first_name、last_name、电子邮件、phone_number)值(“约翰”,“母鹿”,“john.doe@example.com”、“+ 1-555-123456”);去
卡夫卡通过连接日志报告配置更新条目类似如下信息:
connect_1 | 2019-01-17 10:11:14,924信息| |多个捕获实例呈现相同的表:“dbo_customers”[sourceTableId = testDB.dbo捕获实例。客户,changeTableId = testDB.cdc。dbo_customers_CT, startLsn=00000024:00000d98:0036, changeTableObjectId=1525580473, stopLsn=00000025:00000ef8:0048] and Capture instance "dbo_customers_v2" [sourceTableId=testDB.dbo.customers, changeTableId=testDB.cdc.dbo_customers_v2_CT, startLsn=00000025:00000ef8:0048, changeTableObjectId=1749581271, stopLsn=NULL] [io.debezium.connector.sqlserver.SqlServerStreamingChangeEventSource] connect_1 | 2019-01-17 10:11:14,924 INFO || Schema will be changed for ChangeTable [captureInstance=dbo_customers_v2, sourceTableId=testDB.dbo.customers, changeTableId=testDB.cdc.dbo_customers_v2_CT, startLsn=00000025:00000ef8:0048, changeTableObjectId=1749581271, stopLsn=NULL] [io.debezium.connector.sqlserver.SqlServerStreamingChangeEventSource] ... connect_1 | 2019-01-17 10:11:33,719 INFO || Migrating schema to ChangeTable [captureInstance=dbo_customers_v2, sourceTableId=testDB.dbo.customers, changeTableId=testDB.cdc.dbo_customers_v2_CT, startLsn=00000025:00000ef8:0048, changeTableObjectId=1749581271, stopLsn=NULL] [io.debezium.connector.sqlserver.SqlServerStreamingChangeEventSource]
最终,
phone_number
字段添加到模式和它的值出现在消息写入卡夫卡的话题。…{“类型”:“弦”、“可选”:真的,“场”:“phone_number”}…“后”:{" id ": 1005年,“first_name”:“约翰”,“last_name”:“母鹿”、“电子邮件”:“john.doe@example.com”,“phone_number”:“+ 1-555-123456”},
把旧的捕获通过运行实例
sys.sp_cdc_disable_table
存储过程。执行系统。sp_cdc_disable_table @source_schema = ' dbo ' @source_name = dbo_customers, @capture_instance =“dbo_customers”;去
监控
Debe开云体育官方注册网址zium SQL Server连接器提供了三种类型的指标,除了动物园管理员的内置支持JMX的度量,卡夫卡,卡夫卡提供连接。连接器提供了以下指标:
信息如何通过JMX公开上述指标,看到开云体育官方注册网址Debezium监控文档。
快照指标
的MBean是开云体育官方注册网址debezium.sql_server: type = connector-metrics, server =< sqlserver.server.name >、任务=< task.id >上下文=快照
。
快照指标并非暴露,除非一个快照操作被激活时,或者如果发生自上次快照连接器的开始。
下表列出了shapshot指标可用。
属性 | 类型 | 描述 |
---|---|---|
|
读过的最后一个快照事件连接器。 |
|
|
连接器以来的毫秒数读取和处理最近的事件。 |
|
|
这个连接器的事件总数已经从去年开始或重置。 |
|
|
事件的数量已经被包括/排除列表过滤规则过滤配置连接器。 |
|
|
表的列表被连接器。 |
|
|
队列长度用来传递事件之间的快照和主卡夫卡连接循环。 |
|
|
队列的自由能力用来传递事件之间的快照和主卡夫卡连接循环。 |
|
|
表的总数被包含在快照。 |
|
|
表的数量尚未复制快照。 |
|
|
快照是否开始。 |
|
|
快照是否中止。 |
|
|
快照是否完成。 |
|
|
总秒数,快照到目前为止,即使不完整。 |
|
|
地图包含扫描的行数为每个表的快照。表在处理过程中也逐渐被添加到地图。更新一个表扫描并完成每10000行。 |
|
|
的最大缓冲区队列以字节为单位。这个指标是可用的 |
|
|
当前的体积,以字节为单位,记录在队列中。 |
连接器还提供了以下额外的快照指标执行增量快照时:
属性 | 类型 | 描述 |
---|---|---|
|
当前的快照数据块的标识符。 |
|
|
下界的主键设置定义当前块。 |
|
|
主键的上限设置定义当前块。 |
|
|
下界的当前快照的表的主键设置。 |
|
|
主键的上界的当前快照表。 |
流指标
的MBean是开云体育官方注册网址debezium.sql_server: type = connector-metrics, server =< sqlserver.server.name >、任务=< task.id >上下文=流
。
下表列出了流指标可用。
属性 | 类型 | 描述 |
---|---|---|
|
过去的流事件连接器已经阅读。 |
|
|
连接器以来的毫秒数读取和处理最近的事件。 |
|
|
事件,该连接器的总数已经重置自上次启动或指标。 |
|
|
创建事件的总数,这个连接器以来最后复位启动或指标。 |
|
|
更新事件的总数,这个连接器以来最后复位启动或指标。 |
|
|
删除事件,该连接器的总数已经重置自上次启动或指标。 |
|
|
事件的数量已经被包括/排除列表过滤规则过滤配置连接器。 |
|
|
表的列表被连接器。 |
|
|
队列长度之间的拖缆和主要用来传递事件卡夫卡连接循环。 |
|
|
队列的自由能力用来传递事件之间的拖缆和主卡夫卡连接循环。 |
|
|
国旗,表示连接器是否正在连接到数据库服务器。开云体育电动老虎机 |
|
|
的毫秒数去年更改事件的时间戳和连接器之间的处理它。值将会把机器上的任何差异时钟运行数据库服务器和连接器。开云体育电动老虎机 |
|
|
处理事务的数量。 |
|
|
去年收到事件的坐标。 |
|
|
事务标识符的处理事务。 |
|
|
的最大缓冲区队列以字节为单位。这个指标是可用的 |
|
|
当前的体积,以字节为单位,记录在队列中。 |
模式历史指标
的MBean是开云体育官方注册网址debezium.sql_server: type = connector-metrics、上下文= schema-history服务器=< sqlserver.server.name >
。
下表列出了模式历史指标可用。
属性 | 类型 | 描述 |
---|---|---|
|
之一 |
|
|
时间在时代秒复苏已经开始。 |
|
|
的数量变化,阅读在复苏阶段。 |
|
|
模式变化的总数在复苏和运行时应用。 |
|
|
后经过的毫秒数,最后从历史存储变化是恢复。 |
|
|
后经过的毫秒数,最后应用改变。 |
|
|
最后变化的字符串表示从历史存储中恢复过来。 |
|
|
最后应用变化的字符串表示。 |