开云体育官方注册网址对SQL Server Debezium连接器
想要帮助我们进一步的磨练和提高吗?学习如何。 |
开云体育官方注册网址Debezium SQL Server连接器可以监测和记录的行级的变化模式SQL Server数据库。开云体育电动老虎机这个连接器添加Debezium 0.9.0。开云体育官方注册网址
第一次连接到SQL Server数据库/集群,它读取一个一致的快照的所有模式。开云体育电动老虎机快照完成时,连接器连续流的变化是致力于SQL Server并生成对应的插入、更新和删除事件。为每个表的所有事件被记录在一个单独的卡夫卡的话题,在那里他们可以很容易被应用程序和服务。
概述
连接器的功能是基于变化数据捕获SQL Server提供的功能标准(因为SQL Server 2016 SP1)或企业版。使用此机制一个SQL Server捕获过程监视所有数据库和表并存储用户感兴趣变成专门创建的开云体育电动老虎机疾病预防控制中心表,存储过程外观。连接器与SQL Server 2017已经测试,但据报道社区成员与早期版本2014,它成功地使用了(只要CDC特性提供)。
数据库操开云体育电动老虎机作符必须启用疾病预防控制中心表(s)应该被Debezium连接器。开云体育官方注册网址连接器然后产生一个更改事件对于每一行级插入、更新和删除操作,通过出版美国疾病控制与预防中心的API为每个表,记录所有的更改事件在一个单独的卡夫卡的话题。客户机应用程序读卡夫卡主题对应数据库表他们感兴趣后,应对每一个行级事件它看到在这些话题。开云体育电动老虎机
数据库操开云体育电动老虎机作符通常使疾病预防控制中心中年的数据库或表。开云体育电动老虎机这意味着所有的连接器没有完整的历史变化,已经到数据库。开云体育电动老虎机因此,当SQL Server连接器连接到一个特定的SQL Server数据库,它开始执行开云体育电动老虎机一致的快照每个数据库的模式。开云体育电动老虎机连接器完成后快照,它继续流变化的确切点快照。通过这种方式,我们从所有的数据都是一致的,然而继续阅读没有失去任何更改而发生快照。
连接器还容忍失败。随着连接器读取的变化和产生的事件,它记录在数据库日志的位置(开云体育电动老虎机LSN /日志序列号),与相关联疾病预防控制中心记录,每个事件。如果连接器停止任何理由(包括通信失败,网络问题,或崩溃),重新启动时它只是继续阅读疾病预防控制中心表最后一个离开。这包括快照:如果快照不是在连接器停止时完成,重新启动时它将开始一个新的快照。
设置SQL Server
使用前Debezium SQL S开云体育官方注册网址erver连接器监视更改SQL服务器上提交,第一次启用疾病预防控制中心被监控的数据库。开云体育电动老虎机请记住疾病预防控制中心不能支持主
开云体育电动老虎机数据库。
——= = = =为疾控中心启用数据开云体育电动老虎机库模板——= = = =使用MyDB去执行系统。sp_cdc_enable_db去
然后启用疾病预防控制中心你计划来监视的每个表
——= = = = = = = = =——启用一个表指定Filegroup选项模板——= = = = = = = = =使用MyDB去执行系统。sp_cdc_enable_table @source_schema = N 'dbo”、@source_name = N 'MyTable”@role_name = N 'MyRole”、@filegroup_name = N 'MyDB_CT”@supports_net_changes = 1
验证该用户可以访问疾病预防控制中心表。
——= = = = = = = = =——验证连接器的用户访问,该查询不应该空的结果——= = = = = = = = =执行系统。sp_cdc_help_change_data_capture去
如果结果为空,请确保用户访问捕获实例和特权疾病预防控制中心表。
SQL Server连接器是如何运作的吗
快照
SQL Server疾控中心不是用来存储数据库更改的完整历史。开云体育电动老虎机因此有必要Debezium建立当前的数据库内容的基线开云体育官方注册网址和小溪卡夫卡。开云体育电动老虎机这是通过一个过程被称为快照。
在默认情况下(快照模式最初的)连接器将在第一个启动执行初始一致的快照数据库的(这意开云体育电动老虎机味着在任何表结构和数据被捕获的连接器的过滤器配置)。
每个快照包含以下步骤:
确定表被捕获
每个监控表上获得一个锁来确保没有结构性变化可能发生的任何表。锁是由水平
snapshot.isolation.mode
配置选项。阅读的最大LSN(“日志序列号”)在服务器的事务日志。
捕获所有相关表的结构。
在步骤2中选择释放锁获得,即锁通常只有很短的一段时间。
扫描所有相关的数据库表和模式有效的LSN位置读在步开云体育电动老虎机骤3中,并生成一个
读
事件为每一行和写事件到适当的table-specific卡夫卡的话题。记录的快照的成功完成连接器补偿。
阅读改变数据表
第一次启动时,连接器需要结构快照捕获的结构表和坚持这一信息在其内部数据库的历史主题。开云体育电动老虎机然后连接器标识更改表的每个源表并执行主循环
为每个变更表读取之间创建的所有更改存储最大LSN和当前最大LSN
顺序读取变化逐步根据提交LSN和改变LSN。这就确保了Debezium变化是重播的顺序是由数据库。开云体育官方注册网址开云体育电动老虎机
通过提交和改变lsn抵消卡夫卡连接。
存储最大的LSN和重复循环。
在重启之后,连接器将恢复从偏移量(提交和改变lsn)之前离开。
连接器能够检测中心是否为白名单启用或禁用源表在运行时修改其行为。
主题名称
SQL Server连接器写事件对于所有插入、更新和删除操作在一个桌子一个卡夫卡的话题。卡夫卡的话题总是表单的名称serverName。schemaName。的表,在那里serverName连接器的逻辑名称是指定的吗开云体育电动老虎机database.server.name
配置属性,schemaName是操作的模式的名称,然后呢的表是数据库表的名称的操作发生。开云体育电动老虎机
例如,考虑一个SQL Server安装的库存
开云体育电动老虎机数据库包含四个表:产品
,products_on_hand
,客户
,订单
在模式dbo
。如果连接器监控这数据库有一个逻辑服务器的名称开云体育电动老虎机实现
,那么连接器生产这四个卡夫卡事件主题:
fulfillment.dbo.products
fulfillment.dbo.products_on_hand
fulfillment.dbo.customers
fulfillment.dbo.orders
模式改变话题
面向用户的模式还没有实现(参见改变话题dbz - 753)。
事件
所有数据更改事件产生的SQL Server连接器有一个键和一个值,尽管键和值的结构取决于表的更改事件的起源(见主题名称)。
卡夫卡D开云体育官方注册网址ebezium SQL Server连接器确保所有连接模式名是有效Avro模式名。这意味着逻辑服务器名称必须从拉丁字母或下划线(例如,[a - z、a - z _]),剩下的字符在逻辑服务器名称和所有字符在模式和表名称必须是拉丁字母,数字或下划线(例如,[a - z、a - z 0 - 9, \ _])。如果不是这样,那么所有无效字符将自动替换为下划线字符。 这可能会导致意想不到的冲突逻辑服务器名称时,模式名称,表名包含其他字符,表之间唯一的区别人物全名是无效的,因此替换为下划线。 |
开云体育官方注册网址Debezium和卡夫卡连接的设计连续的事件消息流的结构,这些事件可能会随着时间而改变。这可能是消费者很难处理,所以很容易卡夫卡连接每个事件独立。每条消息键和值有两个部分:一个模式和有效载荷。模式描述了结构的负载,而负载包含实际的数据。
更改事件的钥匙
对于一个给定的表,更改事件的关键将有一个结构,包含一个字段主键的每一列(或独特的键约束)当时的事件创建的表。
考虑一个客户
表中定义库存
开云体育电动老虎机数据库的模式dbo
:
创建表的客户(id的整数标识(1001 1)NOT NULL主键,first_name VARCHAR (255) NOT NULL, last_name VARCHAR (255) NOT NULL,邮件VARCHAR (255) NOT NULL独特的);
如果开云体育电动老虎机database.server.name
配置属性的值server1
,每一个事件的变化客户
表时,这个定义将功能相同的关键结构,这在JSON是这样的:
{"模式":{“类型”:“结构”、“字段”:[{“类型”:“int32”、“可选”:假的,“场”:“id”}],“可选”:假的,“名字”:“server1.dbo.customers。关键”},“有效载荷”:{" id ": 1004}}
的模式
卡夫卡的关键部分包含一个连接模式描述的关键部分,在我们的案例中,意味着有效载荷
值不是可选的,是一个结构由模式定义命名server1.dbo.customers.Key
,有一个必需的字段命名id
类型的int32
。如果我们观察的价值的关键有效载荷
领域,我们会发现它的确是一个结构(在JSON只是一个对象)和单一id
领域,其价值1004年
。
因此,我们解释这关键中的描述行dbo.customers
表(输出连接器server1
),其id
主键列的值1004年
。
更改事件值
像消息键事件消息都有一个变化的价值模式节和有效载荷部分。每一个变化的有效载荷部分事件产生的SQL Server连接器有一个值信封结构有以下字段:
人事处
是一个强制性的字段,其中包含一个字符串值描述操作的类型。SQL Server连接器的值c
创建(或插入),u
对于更新,d
删除,r
读(在快照的情况下)。之前
是一个可选的字段,如果现在包含的状态行吗之前事件发生。将所描述的结构server1.dbo.customers.Value
卡夫卡连接模式,server1
连接器使用的所有行dbo.customers
表。后
是一个可选的字段,如果现在包含的状态行吗后事件发生。描述的结构是相同的server1.dbo.customers.Value
卡夫卡连接模式中使用之前
。源
是一个强制性的字段,其中包含一个结构描述元数据来源,在SQL Server中包含这些字段:Debezium版本,连接器名称、事件是否进行的一个快照,提交LSN(不是在快照),的LSN变化,数据库,模式和表发生了改变,和一个时间戳,表示时的时间点记录是改变源数据库(在快照,它将快照的时间点)开云体育官方注册网址开云体育电动老虎机ts_ms
是可选的,如果存在包含时间(使用系统时钟在JVM中运行卡夫卡连接任务)的连接器处理事件。
当然,模式部分事件消息的值包含一个模式描述了这个信封的结构和嵌套的字段。
创建事件
让我们看看创建事件的价值为我们的样子客户
表:
{"模式":{“类型”:“结构”、“字段”:[{“类型”:“结构”、“字段”:[{“类型”:“int32”、“可选”:假的,“场”:“id”},{“类型”:“弦”、“可选”:假的,“场”:“first_name”},{“类型”:“弦”、“可选”:假的,“场”:“last_name”},{“类型”:“弦”、“可选”:假的,“场”:“电子邮件”}],“可选”:真的,“名字”:“server1.dbo.customers。值”、“场”:“之前”},{“类型”:“结构”、“字段”:[{“类型”:“int32”、“可选”:假的,“场”:“id”},{“类型”:“弦”、“可选”:假的,“场”:“first_name”},{“类型”:“弦”、“可选”:假的,“场”:“last_name”},{“类型”:“弦”、“可选”:假的,“场”:“电子邮件”}],“可选”:真的,“名字”:“server1.dbo.customers。值”、“场”:“后”},{“类型”:“结构”、“字段”:[{“类型”:“弦”、“可选”:假的,“场”:“版本”},{“类型”:“弦”、“可选”:假的,“场”:“连接器”},{“类型”:“弦”、“可选”:假的,“场”:“name”},{“类型”:“int64”、“可选”:假的,“场”:“ts_ms”},{“类型”:“布尔”、“可选”:真的,“默认”:假的,“场”:“快照”},{“类型”:“弦”、“可选”:假的,“场”:“分贝”},{“类型”:“弦”、“可选”:假的,“场”:“模式”},{“类型”:“弦”、“可选”:假的,“场”:“表”},{“类型”:“弦”、“可选”:真的,“场”:“change_lsn”},{“类型”:“弦”、“可选”:真的,“场”:“commit_lsn”}],“可选”:假的,“名字”:“io.debezium.connector.sqlserver.Source”、“字段”:“源”},{“类型”:“弦”、“可选”:假的,“场”:“人事处”},{“类型”:“int64”、“可选”:真的,“场”:“ts_ms”}],“可选”:假的,“名字”:“server1.dbo.customers。开云体育官方注册网址信封”},“有效载荷”:{“前”:空,“后”:{" id ": 1005年,“first_name”:“约翰”,“last_name”:“母鹿”、“电子邮件”:“john.doe@example.org”},“源”:{“版本”:“0.10.0。α1”、“连接器”:“”、“名称”:“server1状态"置疑"”、“ts_ms”: 1559729468470,“快照”:假的,”数据库testDB”:“”、“”:“dbo模式”、“表”:“客户”、“change_lsn”:“00000027:00000758:0003”、“commit_lsn”:“00000027:00000758:0005“}”, op”:“c”、“ts_ms”: 1559729471739}}
如果我们看一下模式
这个事件的一部分价值,我们可以看到的模式信封的模式源
结构(这是特定于SQL Server连接器和重用所有事件),和table-specific模式之前
和后
字段。
的模式的名称 |
如果我们看一下有效载荷
这个事件的一部分价值事件,我们可以看到的信息,即描述,行(因为创建op = c
),后
字段值包含值的新插入的行id
,first_name
,last_name
,电子邮件
列。
似乎的JSON表示的事件是远远大于他们描述的行。这是真的,因为JSON表示必须包括模式和有效载荷的部分信息。它甚至是可能的,推荐使用Avro转换器大幅减少的大小实际写入卡夫卡主题的消息。 |
更新事件
的价值更新更改事件在这个表会有完全相同的模式,它的有效载荷结构相同但会持有不同的价值观。这里有一个例子:
{"模式":{…},“有效载荷”:{“前”:{" id ": 1005年,“first_name”:“约翰”,“last_name”:“母鹿”、“电子邮件”:“john.doe@example.org”},“后”:{" id ": 1005年,“first_name”:“约翰”,“last_name”:“母鹿”、“电子邮件”:“noreply@example.org”},“源”:{“版本”:“0.10.0。α1”、“连接器”:“”、“名称”:“server1状态"置疑"”、“ts_ms”: 1559729995937,“快照”:假的,”数据库testDB”:“”、“”:“dbo模式”、“表”:“客户”、“change_lsn”:“00000027:00000ac0:0002”、“commit_lsn”:“00000027:00000ac0:0007“}”, op”:“u”、“ts_ms”: 1559729998706}}
当我们比较的价值插入事件中,我们看到一些差异有效载荷
部分:
的
人事处
字段值现在u
,表示这一行改变,因为一个更新的
之前
领域目前的状态与之前的值数据库行提交开云体育电动老虎机的
后
现在有更新的状态行,这里是可以看到的电子邮件
值是现在noreply@example.org
。的
源
场结构有相同的字段,但值是不同的,因为这事件是在事务日志从不同的位置。的
ts_ms
显示了Debezium处理这个事件的时间戳。开云体育官方注册网址
有几件事情我们可以通过看这个学习有效载荷
部分。我们可以比较之前
和后
结构来确定实际上改变了这一行,因为提交。的源
SQL服务器的结构告诉我们信息的记录这种变化(提供可追溯性),但更重要的是这信息我们可以比较其他事件在这个和其他主题知道这个事件发生之前,之后,或相同的SQL服务器提交其他事件。
当列一行的主要/更新唯一键,值的行键改变了所以Debezium输出开云体育官方注册网址三个事件: |
删除事件
到目前为止,我们已经看到样品创建和更新事件。现在,让我们看的价值删除事件相同的表。再一次,模式
部分的值将被一模一样的创建和更新事件:
{"模式":{…}},“有效载荷”:{“前”:{" id ": 1005年,“first_name”:“约翰”,“last_name”:“母鹿”、“电子邮件”:“noreply@example.org”},“后”:空,“源”:{“版本”:“0.10.0。α1”、“连接器”:“”、“名称”:“server1状态"置疑"”、“ts_ms”: 1559730445243,“快照”:假的,”数据库testDB”:“”、“”:“dbo模式”、“表”:“客户”、“change_lsn”:“00000027:00000db0:0005”、“commit_lsn”:“00000027:00000db0:0007“}”, op”:“d”、“ts_ms”: 1559730450205}}
如果我们看一下有效载荷
部分,我们看到许多差异相比创建或更新事件的有效载荷:
的
人事处
字段值现在d
,表示这一行被删除的
之前
领域目前的状态行,删除与数据库提交。开云体育电动老虎机的
后
字段为空,表示这一行已不复存在的
源
场结构有许多相同的值,除了ts_ms
,commit_lsn
和change_lsn
领域已经发生了变化的
ts_ms
显示了Debezium处理这个事件的时间戳。开云体育官方注册网址
这个事件给消费者各种各样的信息,它可以用来处理删除这一行。
SQL Server连接器设计的事件卡夫卡日志压实,允许删除一些旧消息只要至少每个关键是保持最新的消息。这允许卡夫卡回收存储空间同时确保主题包含一个完整的数据集,可用于重新加载密钥的状态。
当一行被删除的删除上面列出的事件值仍然使用日志压实,自卡夫卡仍然可以删除所有消息早些时候同样关键。但只有当消息值零
卡夫卡知道它可以删除吗所有消息用相同的密钥。使这一切成为可能,Debezium SQL S开云体育官方注册网址erver连接器总是遵循删除事件与一个特殊的墓碑上事件,但具有相同的关键零
价值。
开云体育电动老虎机数据库模式演化
开云体育官方注册网址随着时间的推移Debezium能够捕获模式变化。由于疾病预防控制中心是在SQL Server中实现的方式,有必要与数据库运营商合作以确保Debezium连接器继续生产数据更新模式时更改事件。开云体育官方注册网址开云体育电动老虎机
正如已经提到的,Debezium使用SQL Server的变化数据开云体育官方注册网址捕获功能。这意味着,SQL Server创建一个捕捉表,其中包含源表上执行的所有更改。不幸的是,捕捉表是静态的,需要更新当源表结构的变化。这更新不是通过Debezium连接器本身,而是必须由操作员执行开云体育官方注册网址提升特权。
通常有两种程序如何执行模式的改变:
冷——这是当Debezium停止执行开云体育官方注册网址
热- Debezium运行时执行开云体育官方注册网址
这两种方法都有自己的优点和缺点。
在这两种情况下,它是至关重要的新模式更新之前执行过程完全相同的源表。因此建议执行ddl在单个批处理程序只完成一次。 |
并不是所有支持模式变化时,疾控中心启用源表。识别这样的一个例外是重命名列或改变其类型,SQL Server将不允许执行该操作。 |
虽然不是必需的SQL Server的中心机制本身,必须创建一个新的捕获实例时改变从一列 |
冷模式更新
这是最安全的程序,但可能不是可行的应用程序高可用性需求。操作员应该遵循这个步骤的序列
暂停生成数据库记录的应用程序开云体育电动老虎机
等待Debeziu开云体育官方注册网址m流unstreamed所有更改
停止Deb开云体育官方注册网址ezium连接器
所有更改应用到源表模式
创建一个新的捕获表更新源表使用
sys.sp_cdc_enable_table
过程参数的独特价值@capture_instance
重启应用程序
开始Debe开云体育官方注册网址zium连接器
当Debe开云体育官方注册网址zium开始从新捕捉流表可以使用旧的下降
sys.sp_cdc_disable_table
存储过程的参数@capture_instance
将旧的捕获实例名
热模式更新
热模式更新应用程序不需要任何停机时间和数据处理。程序本身也比在寒冷的模式更简单的更新
所有更改应用到源表模式
创建一个新的捕获表更新源表使用
sys.sp_cdc_enable_table
过程参数的独特价值@capture_instance
当Debe开云体育官方注册网址zium开始从新捕捉流表可以使用旧的下降
sys.sp_cdc_disable_table
存储过程的参数@capture_instance
将旧的捕获实例名
热模式更新有一个缺点。数据库模式之间有一段时间更新和创建新的捕获实例。开云体育电动老虎机所有更改,会在此期间将被老旧结构实例。例如这意味着对于新添加的列事件产生任何变化在此期间将不包含一个字段的新列。如果您的应用程序不会容忍这样一个过渡时期我们建议遵循冷模式更新。
例子
让我们部署基于SQL Server开云体育官方注册网址Debezium教程证明热模式更新。一个列phone_number
将被添加到客户
表。
#启动数据库壳docke开云体育电动老虎机r-compose - f docker-compose-sqlserver。yaml exec bash状态"置疑" - c ' / opt / mssql-tools / bin / sqlcmd - u sa - p $ testDB SA_PASSWORD - d '
——修改源表模式改变表客户添加phone_number VARCHAR (32);——创建一个新的捕获实例执行系统。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”}…“后”:{" id ": 1005年,“first_name”:“约翰”,“last_name”:“母鹿”、“电子邮件”:“john.doe@example.com”,“phone_number”:“+ 1-555-123456”},
——原捕获实例执行系统。sp_cdc_disable_table @source_schema = ' dbo ' @source_name = dbo_customers, @capture_instance =“dbo_customers”;去
数据类型
如上所述,SQL Server连接器代表了变化与事件行结构如存在的表行。事件的每一列都包含一个字段值,和如何表示如果这个值取决于SQL数据类型的列。本节描述这种映射。
下表描述了连接器的每个SQL Server数据类型映射到一个文字类型和语义类型在事件”字段。在这里,文字类型描述如何使用所代表的价值就是卡夫卡连接模式类型,即INT8
,INT16
,INT32
,INT64
,FLOAT32
,FLOAT64
,布尔
,字符串
,字节
,数组
,地图
,结构体
。的语义类型描述了卡夫卡如何连接模式了意义使用的名称的字段卡夫卡连接模式。
SQL Server数据类型 | 文字类型(模式类型) | 语义类型(模式名称) | 笔记 |
---|---|---|---|
|
|
n /一个 |
|
|
|
n /一个 |
|
|
|
n /一个 |
|
|
|
n /一个 |
|
|
|
n /一个 |
|
|
|
n /一个 |
|
|
|
n /一个 |
|
|
|
n /一个 |
|
|
|
n /一个 |
|
|
|
n /一个 |
|
|
|
n /一个 |
|
|
|
n /一个 |
|
|
|
n /一个 |
|
|
|
|
XML文档包含的字符串表示 |
|
|
|
的字符串表示一个时间戳和时区信息,格林尼治时间时区的地方 |
其他数据类型映射将在以下小节中描述。
如果存在,一个列的默认值将被传递到相应字段的卡夫卡连接模式。改变信息将包含字段的默认值(除非显式列值了),这应该很少需要获得模式的默认值。通过默认值帮助虽然满足兼容性规则使用Avro注册表的序列化格式一起汇合的模式。
时间值
SQL Server数据类型 | 文字类型(模式类型) | 语义类型(模式名称) | 笔记 |
---|---|---|---|
|
|
|
代表时代以来的天数。 |
|
|
|
代表的是午夜的毫秒数,不包括时区信息。 |
|
|
|
代表微秒午夜的数量,不包括时区信息。 |
|
|
|
代表的是午夜的纳秒数,不包括时区信息。 |
|
|
|
代表的是过去时代的毫秒数,不包括时区信息。 |
|
|
|
代表的是过去时代的毫秒数,不包括时区信息。 |
|
|
|
代表的是过去时代的毫秒数,不包括时区信息。 |
|
|
|
代表微秒的过去时代的数量,不包括时区信息。 |
|
|
|
代表的是过去时代的纳秒数,不包括时区信息。 |
十进制值
PostgreSQL数据类型 | 文字类型(模式类型) | 语义类型(模式名称) | 笔记 |
---|---|---|---|
|
|
|
的 |
|
|
|
的 |
|
|
|
的 |
|
|
|
的 |
部署一个连接器
如果你已经安装了动物园管理员,卡夫卡,卡夫卡连接,那么使用Debezium开云体育官方注册网址 SQL Server的连接器是容易的。简单地下载连接器的插件存档提取罐到卡夫卡连接环境中,并添加jar文件的目录卡夫卡连接的类路径中。重新启动卡夫卡连接过程去接新罐。
如果你不变的容器,然后检查开云体育官方注册网址Debezium码头工人的图片动物园管理员、卡夫卡和卡夫卡与SQL Server连接器已经预装和准备好了。你甚至可以上运行D开云体育官方注册网址ebezium OpenShift。
使用连接器生产更改事件为特定的SQL Server数据库或集群:开云体育电动老虎机
启用SQL服务器上疾病预防控制中心发布疾病预防控制中心数据库中的事件开云体育电动老虎机
创建一个SQL服务器的配置文件连接器并使用卡夫卡REST API连接添加连接器卡夫卡连接集群。
连接器启动时,它会抓住一个一致的快照模式的SQL Server数据库并开始流变化,生产活动为每一个插入、更新和删除行。开云体育电动老虎机你也可以选择生产活动模式和表的一个子集。选择忽略,面具,或截断列敏感,太大,或不需要。
示例配置
使用SQL Server连接器很简单。这是配置的一个示例连接器实例监控192.168.99.100 SQL Server服务器端口3306,我们逻辑上的名字fullfillment
:
{" name ": " inventory-connector”,(1)“配置”:{“连接器。class": "io.debezium.connector.sqlserver.SqlServerConnector",(2)“开云体育电动老虎机数据库。主机名”:“192.168.99.100”,(3)“开云体育电动老虎机数据库。港”:“1433”,(4)“开云体育电动老虎机数据库。user": "sa",(5)“开云体育电动老虎机数据库。密码”:“密码!”(6)“开云体育电动老虎机数据库。dbname": "testDB",(7):开云体育电动老虎机“database.server.name fullfillment”,(8)”表。白名单”:“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语句编写和恢复。这个话题是仅供内部使用,不应被消费者使用。 |
看到连接器属性的完整列表在这些配置可以指定。
这个配置可以通过POST发送到运行卡夫卡连接服务,然后记录配置并启动一个连接器任务连接到SQL Server数据库,读取事务日志和记录事件卡夫卡的话题。开云体育电动老虎机
监控
卡夫卡、饲养员和卡夫卡都有联系内置支持JMX指标。SQL Server连接器还发布了一组标准的连接器的活动可以通过JMX监控。连接器有两种类型的指标。快照指标帮助您监控快照活动和可用连接器时执行一个快照。流指标帮助您监控进展和活动连接器读取CDC表数据。
快照指标
MBean: 开云体育官方注册网址debezium.sql_server: type = connector-metrics上下文=快照,server =<开云体育电动老虎机 database.server.name >
属性名称 | 类型 | 描述 |
---|---|---|
|
|
读过的最后一个快照事件连接器。 |
|
|
连接器以来的毫秒数读取和处理最近的事件。 |
|
|
这个连接器的事件总数已经从去年开始或重置。 |
|
|
事件的数量已经被白名单或黑名单过滤规则过滤配置连接器。 |
|
|
表的列表所监控的连接器。 |
|
|
队列的长度用来传递事件之间的快照和主卡夫卡连接循环。 |
|
|
队列的自由能力用来传递事件之间的快照和主卡夫卡连接循环。 |
|
|
表的总数被包含在快照。 |
|
|
表的数量尚未复制快照。 |
|
|
快照是否开始。 |
|
|
快照是否中止。 |
|
|
快照是否完成。 |
|
|
总秒数,快照到目前为止,即使不完整。 |
|
|
地图包含扫描的行数为每个表的快照。表在处理过程中也逐渐被添加到地图。更新一个表扫描并完成每10000行。 |
流指标
MBean: 开云体育官方注册网址debezium.sql_server: type = connector-metrics、上下文=流媒体服务器=<开云体育电动老虎机 database.server.name >
属性名称 | 类型 | 描述 |
---|---|---|
|
|
过去的流事件连接器已经阅读。 |
|
|
连接器以来的毫秒数读取和处理最近的事件。 |
|
|
这个连接器的事件总数已经从去年开始或重置。 |
|
|
事件的数量已经被白名单或黑名单过滤规则过滤配置连接器。 |
|
|
表的列表所监控的连接器。 |
|
|
队列的长度之间的拖缆和主要用来传递事件卡夫卡连接循环。 |
|
|
队列的自由能力用来传递事件之间的拖缆和主卡夫卡连接循环。 |
|
|
国旗,表示连接器是否正在连接到数据库服务器。开云体育电动老虎机 |
|
|
的毫秒数去年更改事件的时间戳和连接器之间的处理它。将把时钟之间的任何差异值在数据库服务器的机器上和Debezium连接器正在运行。开云体育官方注册网址开云体育电动老虎机 |
|
|
处理事务的数量。 |
|
|
去年收到事件的坐标。 |
|
|
事务标识符的处理事务。 |
模式历史指标
MBean: 开云体育官方注册网址debezium.sql_server: type = connector-metrics、上下文= schema-history, server =<开云体育电动老虎机 database.server.name >
属性名称 | 类型 | 描述 |
---|---|---|
|
|
之一 |
|
|
时间在时代秒复苏已经开始。 |
|
|
的数量变化,阅读在复苏阶段。 |
|
|
模式变化之间的总数在复苏和运行时。 |
|
|
后经过的毫秒数,最后从历史存储变化是恢复。 |
|
|
后经过的毫秒数,最后应用改变。 |
|
|
最后变化的字符串表示从历史存储中恢复过来。 |
|
|
最后应用变化的字符串表示。 |
连接器属性
以下配置属性要求除非一个默认值是可用的。
财产 | 默认的 | 描述 |
---|---|---|
|
独特的连接器的名称。再次尝试注册名称相同的就会失败。(此属性所要求的所有卡夫卡连接连接器)。 |
|
|
连接器的Java类的名称。总是使用的值 |
|
|
|
的最大数量的任务应该创建连接器。SQL Server连接器总是使用一个单一的任务,因此不使用这个值,所以默认总是可以接受的。 |
|
SQL Server数据库服务器的IP地址或主机名。开云体育电动老虎机 |
|
|
|
整数SQL Server数据库服务器的端口号。开云体育电动老虎机 |
|
用户名时使用连接到SQL Server数据库服务器。开云体育电动老虎机 |
|
|
密码时使用连接到SQL Server数据库服务器。开云体育电动老虎机 |
|
|
SQL Server数据库的名称来流的变化开云体育电动老虎机 |
|
|
逻辑名,识别和提供了一个名称空间特定的SQL Server数据库服务器被监视。开云体育电动老虎机逻辑名称应该是唯一的在所有其他连接器,因为它被用作前缀为所有卡夫卡主题名称来自这个连接器。 |
|
|
卡夫卡的全名话题,连接器将存储数据库模式的历史。开云体育电动老虎机 |
|
|
主机/端口列表对连接器将用于建立一个初始连接到卡夫卡集群。此连接将用于检索以前存储的数据库模式历史连接器,并编写每个DDL语句从源数据库读取。开云体育电动老虎机这应该指向同一个卡夫卡集群卡夫卡所使用的连接过程。 |
|
|
一个可选的以逗号分隔的正则表达式匹配完全限定表标识符表监控;任何表不包含在白名单将被排除在监视。每个标识符的形式schemaName。的表。默认情况下,连接器将监控每一个非系统的表在每个监控模式。不得使用吗 |
|
|
一个可选的以逗号分隔的正则表达式匹配完全限定表标识符表被排除在监控;任何表不包含在黑名单将被监控。每个标识符的形式schemaName。的表。不得使用吗 |
|
|
空字符串 |
一个可选的以逗号分隔的正则表达式匹配的完全限定名称列应该排除在更改事件消息值。完全限定名称列的形式schemaName。的表。columnName。请注意,主键列总是包含在事件的关键,如果从价值列入黑名单。 |
|
|
控制一个墓碑事件是否应该删除后生成的事件。 |
|
n /一个 |
一个可选的以逗号分隔的正则表达式匹配的完全限定名称列的原始类型和长度作为参数应该添加相应的字段在发射模式变化的消息。模式参数 |
以下先进的配置属性都有现成的,在大多数情况下工作,因此很少需要指定连接器的配置。
财产 | 默认的 | 描述 |
---|---|---|
|
最初的 |
在初始快照模式的结构和可选地捕捉到表的数据。支持的值最初的(将捕获的表结构和数据的快照;有用的主题应该填充的完整表示)和捕获的数据表initial_schema_only(将快照捕获的结构表;有用如果变化从现在起应该传播到主题)。快照完成后,连接器将继续阅读改变事件从数据库的重做日志。开云体育电动老虎机 |
|
repeatable_read |
使用模式来控制事务隔离级别和多久连接器锁监控表。有四个可能的值
|
|
|
正整数的值指定的毫秒数连接器应该在每个迭代中等待新的更改事件出现。默认为1000毫秒,或者1秒。 |
|
|
正整数的值指定的阻塞队列的最大大小改变事件从数据库读取日志放置之前写入卡夫卡。开云体育电动老虎机这个队列可以为CDC表读者提供反压力时,例如,写入卡夫卡是慢或者卡夫卡是不可用的。事件出现在队列中不包括补偿定期记录下这个连接器。默认为8192,应该超过规定的最大批量大小 |
|
|
正整数的值指定的最大大小每一批处理的事件,应该在每个迭代的连接器。默认为2048。 |
|
|
控制频率的心跳消息被发送。 |
|
|
控制的主题命名的心跳消息被发送。 |
|
在毫秒间隔之前应该等待拍摄快照后启动; |
|
|
|
指定的最大行数应该读入一个从每个表而拍摄快照。连接器将读取表内容在多个批次的大小。默认为2000。 |
|
控制行从表将包含在快照。 |
|
|
v2 |
模式的版本 |
连接器还支持直通配置属性在创建使用卡夫卡生产国和消费国。具体地说,所有从连接器配置属性开云体育电动老虎机database.history.producer。
使用前缀(没有前缀)创建卡夫卡生产商时,写入数据库的历史,和所有那些从前缀开始开云体育电动老虎机开云体育电动老虎机database.history.consumer。
(不使用前缀)创建卡夫卡消费者时,读取数据库历史启动连接器。开云体育电动老虎机
例如,可以使用以下连接器配置属性安全连接到卡夫卡代理:
除了直通卡夫卡生产国和消费国,属性入手开云体育电动老虎机数据库。
,如。开云体育电动老虎机database.applicationName 开云体育官方注册网址= debezium
被传递到JDBC URL。
开云体育电动老虎机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