开云体育官方注册网址Debezium连接器的维塔斯

开云体育官方注册网址Debezium维塔斯的连接器捕捉行级的变化维塔斯的碎片用于。维塔斯的信息版本兼容这个连接器,看到开云体育官方注册网址Debezium释放概述

当连接器连接到维塔斯集群,它需要一个一致的密钥空间的快照。快照完成之后,连接器连续捕获一个维塔斯行级变化,致力于用于插入、更新或删除数据库内容。开云体育电动老虎机连接器生成数据更改事件记录和小溪卡夫卡的话题。为每个表,默认行为是连接器流所有生成的事件到一个单独的卡夫卡主题表。应用程序和服务可以使用数据更改事件记录产生的话题。

概述

维塔斯的VStream功能是在version 4.0中引入的。它是改变事件订阅服务,提供相当于从底层MySQL MySQL二进制日志的信息碎片维塔斯的集群。一个用于用户可以订阅多个碎片,使其满足下游疾控中心流程的方便工具。

读取和处理数据库更改,维塔斯连接器订阅开云体育电动老虎机VTGate的VStream gRPC服务。VTGate是一个轻量级,无状态gRPC服务器集群是维塔斯的一部分设置。

连接器给你选择订阅的灵活性节点,或副本节点变化的事件。

每个行级的连接器生产更改事件插入、更新和删除操作,被捕并发送更改事件记录为每个表在一个单独的卡夫卡的话题。客户端应用程序读卡夫卡的主题对应于感兴趣的数据库表,并可以对每个行级事件他们收到这些话题。开云体育电动老虎机

底层的MySQL实现在维塔斯清洗二进制日志基于每过段时间。因为binlog的内容可能不完整,连接器需要另一种机制,以确保它捕获特定数据库的完整内容。开云体育电动老虎机因此,当首次连接器连接到一个数据库,它执行一个一致的数据库的快照。开云体育电动老虎机连接器完成后快照,它继续流变化的确切点快照。这样,连接器从所有的数据都是一致的,不忽略任何变化所做快照时被采取。

连接器是失败的宽容。随着连接器读取的变化和产生的事件,这对每个事件记录VGTID位置。如果连接器停止任何理由(包括通信失败,网络问题,或崩溃),连接器重新启动后,它继续阅读WAL从停止的点。这种行为并不适用于快照。如果连接器停止在一个快照,重启之后,连接器不继续执行快照去年离开。我们以后再谈关于连接器的行为当事情出错

连接器是如何工作的

优化配置并运行一个Debezium维塔斯连接器,它有助于了解连接器开云体育官方注册网址执行快照,流改变事件,决定了卡夫卡主题名称,并使用元数据。

快照

通常,一个MySQL服务器没有保留完整的历史配置数据库的二进制日志。开云体育电动老虎机因此,连接器无法阅读的整个历史数据库的二进制日志。开云体育电动老虎机出于这个原因,第一次连接器,它执行一个初始数据库的一致的快照。开云体育电动老虎机通过设置你可以改变这一行为snapshot.mode连接器配置属性以外的一个值最初的。这个快照功能是建立在VStream副本在version 7.0中引入的。

自动重试失败的快照预计在将来的版本中可用。

流的变化

维塔斯连接器花所有的时间流的变化从VTGate VStream gRPC是订阅服务。客户端接收到的变化从VStream他们决心在底层MySQL服务器的特定位置上binlog,这被称为VGTID。

维塔斯的VGTID相当于GTID MySQL,它描述了位置的VStream事件发生变化。通常,每个碎片GTID VGTID有多个碎片GTIDs,一个元组(用于切分,GTID),它描述了GTID给定碎片的位置。

当订阅VStream服务时,连接器需要提供VGTID和平板电脑类型(如。,副本)。VGTID描述的位置VStream应该开始发送更改事件;平板电脑类型描述了它潜在的MySQL实例(主或副本)在每个碎片做我们阅读改变事件。

第一次连接器连接到一个集群维塔斯,就当前VGTID维塔斯组件调用VTCtld并提供当前VGTID VStream。

的Deb开云体育官方注册网址ezium维塔斯连接器作为gRPC VStream的客户。当连接器收到它将事件转换成Debezium变化开云体育官方注册网址创建,更新,或删除包括VGTID事件的事件。维塔斯连接器将这些改变事件记录转发给卡夫卡连接框架,它是运行在同一进程中。卡夫卡连接过程异步写更改事件记录他们在同一顺序生成适当的卡夫卡的话题。

定期,卡夫卡连接最近的记录抵消在另一个卡夫卡的话题。数据源特定偏移量表示位置Debezium包括与每一个事件的信息。开云体育官方注册网址维塔斯连接器,VGTID记录在每个变更事件是偏移量。

卡夫卡优雅地连接关闭时,它停止的连接器,卡夫卡将所有事件记录,记录最后抵消收到每个连接器。卡夫卡连接重新启动时,它读取最后一个记录的偏移量为每个连接器,并开始每个连接器的最后记录偏移量。连接器重新启动时,它发送一个请求VStream发送事件刚开始的位置。

主题名称

维塔斯连接器写事件对于所有插入、更新和删除操作在一个桌子一个卡夫卡的话题。默认情况下,卡夫卡主题名称topicPrefixkeyspaceName的表地点:

  • topicPrefix主题是前缀指定的吗topic.prefix连接器配置属性。

  • keyspaceName是密钥空间的名字(也称为数据库)的操作发生。开云体育电动老虎机

  • 的表是数据库表的名称的操作发生。开云体育电动老虎机

例如,假设实现逻辑服务器名称的配置连接器,捕捉变化的维塔斯安装一个吗商务用于包含四个表:产品,products_on_hand,客户,订单。不管有多少碎片密钥空间,连接器将流记录这四个卡夫卡主题:

  • fulfillment.commerce.products

  • fulfillment.commerce.products_on_hand

  • fulfillment.commerce.customers

  • fulfillment.commerce.orders

事务的元数据

开云体育官方注册网址Debezium可以生成事件表示事务边界和丰富数据更改事件消息。

限制当Debezium接收事务开云体育官方注册网址的元数据

开云体育官方注册网址Debezium寄存器和接收元数据只对交易发生后部署连接器。交易发生之前部署连接器的元数据是不可用的。

开云体育官方注册网址Debezium生成事务边界的事件开始结束分隔符在每个事务。事务边界事件包含以下字段:

状态

开始结束

id

唯一的事务标识符的字符串表示。

ts_ms

一个事务边界事件的时间(开始结束事件)的数据源。如果数据源不提供Debezium事件时间,然后字段代表的时间而不是Deb开云体育官方注册网址ezium处理事件。

event_count(结束事件)

发出的事件总数事务。

data_collections(结束事件)

对的数组data_collectionevent_count元素表明事件连接器发出的数量变化,来源于一个数据收集。

例子
{“状态”:“开始”,“id”:“[{\“用于\”,\“test_unsharded_keyspace \”, \“碎片\”:\“0 \”,\“gtid \”, \“MySQL56 / e03ece6c - 4 - c04 - 11 - ec - 8 - e20 - 0242 - ac110004:1 - 37 \”}]”、“ts_ms”: 1486500577125,“event_count”:空,“data_collections”:零}{“状态”:“结束”,“id”:“[{\“用于\”,\“test_unsharded_keyspace \”, \“碎片\”:\“0 \”,\“gtid \”, \“MySQL56 / e03ece6c - 4 - c04 - 11 - ec - 8 - e20 - 0242 - ac110004:1 - 37 \”}]”、“ts_ms”: 1486500577691,“event_count”: 1、“data_collections”: [{:“data_collection test_unsharded_keyspace。my_seq”、“event_count”: 1}]}

除非通过覆盖topic.transaction选项,连接器排放交易事件< topic.prefix >.transaction的话题。

改变数据事件浓缩

当启用事务元数据的数据信息信封富含是新的吗事务字段。这个领域提供关于每一个事件的信息的形式复合的字段:

  • id——唯一的事务标识符的字符串表示

  • total_order-绝对位置的事件在所有事件生成的事务

  • data_collection_order——每个数据收集的事件在所有事件的位置发出的事务

下面是一个例子的信息:

{“前”:零,“后”:{“pk”:“2”,“aa”:“1”},“源”:{…},“人事处”:“c”、“ts_ms”: 1637988245467,“交易”:{" id ": "[{\“用于\”,\“test_unsharded_keyspace \”, \“碎片\”:\“0 \”,\“gtid \”, \“MySQL56 / e03ece6c - 4 - c04 - 11 - ec - 8 - e20 - 0242 ac110004:1 - 68 \”}]”、“total_order”: 1、“data_collection_order”: 1}}

数据更改事件

的Deb开云体育官方注册网址ezium维塔斯连接器生成一个数据为每个行级更改事件插入,更新,删除操作。每个事件都包含一个键和一个值。键和值的结构取决于表的改变。

开云体育官方注册网址Debezium和卡夫卡连接的设计连续的事件消息流。然而,这些事件的结构可能会改变随着时间的推移,可以让消费者难以处理。为了解决这个问题,每个事件包含模式的内容或,如果您正在使用一个模式注册表,一个模式ID,一个消费者可以使用从注册表获取模式。这使得每个事件自包含的。

下面的骨架JSON显示了更改事件的基本四个部分。然而,如何配置卡夫卡连接转换器,你选择在应用程序中使用的决定表示这四个部分的更改事件。一个模式字段的更改事件只有当你配置转换器装出来的。同样,事件关键和事件有效负载的变化事件只有在你配置一个转换器装出来的。如果你使用JSON转换器配置它来生产所有四个基本事件部分改变,改变事件有一个结构:

{"模式":{(1)…},“有效载荷”:{(2)…},"模式":{(3)…},“有效载荷”:{(4)…}},
表1。更改事件基本内容的概述
字段名 描述

1

模式

第一个模式字段是关键事件的一部分。它指定了卡夫卡连接模式描述的事件的关键有效载荷部分。换句话说,第一个模式字段描述了主键的结构,或第一个单列唯一键如果表没有主键,改变表。不支持多列唯一键。

可以通过设置覆盖表的主键message.key.columns连接器配置属性。在这种情况下,第一个模式场描述的结构主要由财产。

2

有效载荷

第一个有效载荷字段是关键事件的一部分。前面描述的结构模式的行字段和它包含的关键是改变。

3

模式

第二个模式场活动价值的一部分。它指定了卡夫卡连接模式描述的事件值有效载荷部分。换句话说,第二模式描述的结构被改变的行。通常,这个模式包含嵌套模式。

4

有效载荷

第二个有效载荷场活动价值的一部分。前面描述的结构模式场和它包含的实际数据为行改变。

默认行为是连接器流改变事件记录主题名称和事件的原始表一样

卡夫卡从卡夫卡0.10开始,可以记录事件的键和值时间戳的消息是由生产者(记录)或由卡夫卡写入到日志。

维塔斯连接器确保所有卡夫卡连接模式名坚持Avro模式名称格式。这意味着逻辑服务器名称必须开始用拉丁字母或下划线,也就是说,a - z、a - z,或_。每个剩余字符在逻辑服务器名称和每个字符在模式和表名必须是一个拉丁字母,数字,下划线,也就是说,a - z、a - z, 0 - 9,或\ _。如果有一个无效的字符替换为下划线字符。

这可能会导致意想不到的冲突如果逻辑服务器名称,模式名称,或一个表名称包含无效字符,和唯一的字符,区分名称从一个另一个无效,从而替换为下划线。

连接器不允许的名字列@前缀。例如,年龄是一个有效的列名,@age不是。原因是维塔斯vstreamer有缺陷与匿名发送事件的列名(例如列名年龄是匿名的@1)。没有简单的方法来区分一个合法的列名@前缀,维塔斯bug。看到更多的讨论在这里

更改事件的钥匙

对于一个给定的表,更改事件的关键结构,每个都包含一个字段列在表的主键事件了。

考虑一个客户表中定义商务用于和改变事件的关键表的例子。

例表
创建表的客户(INT id NOT NULL, first_name VARCHAR (255) NOT NULL, last_name VARCHAR (255) NOT NULL,电子邮件VARCHAR(255)而不是NULL,主键(id));
示例更改事件关键

如果topic.prefix连接器配置属性的值Vitess_server,每一个事件的变化客户表虽然有这个定义有相同的关键结构,这在JSON是这样的:

{"模式":{(1)“类型”:“结构”、“名称”:“Vitess_server.commerce.customers.Key”,(2)“可选”:假的,(3)“字段”:[(4){" name ": " id ", "指数":" 0 ","模式":{“类型”:“INT32”、“可选”:“false”}}},“有效载荷”:{(5)" id ": " 1 "}}
表2。描述变化事件的关键
字段名 描述

1

模式

模式的关键部分指定了卡夫卡连接模式,描述了什么是关键的有效载荷部分。

2

Vitess_server.commerce.customers.Key

的名字的结构模式,它定义了关键的负载。该模式描述表的主键的结构改变。关键模式名的格式connector-namekeyspace-name表名关键。在这个例子中:

  • Vitess_server连接器的名称,生成的这一事件。

  • 商务包含表是用于改变。

  • 客户是表更新。

3

可选

表明事件的键必须包含一个值有效载荷字段。在这个例子中,一个关键的价值的有效载荷是必需的。关键的负载值字段是可选的,当一个表没有主键。

4

字段

指定每个字段,预计有效载荷,包括每个字段的名字、索引和模式。

5

有效载荷

包含这一变化的关键行生成事件。在这个例子中,关键,包含一个单一的id字段的值是1

虽然column.exclude.listcolumn.include.list连接器配置属性允许您捕获只有表列的一个子集,所有列在一个主键或唯一键总是包括在事件的关键。

如果表没有主,那么更改事件的关键是null。没有主键的表中的行约束不能唯一标识。

更改事件值

改变的价值比的关键事件更复杂。像的关键,有价值模式部分和一个有效载荷部分。的模式部分包含模式描述信封的结构有效载荷部分,包括其嵌套的字段。改变事件的操作创建、更新或删除数据有效载荷与信封结构都有一个值。

考虑相同的样本表用来显示的一个例子改变事件的关键:

创建表的客户(INT id NOT NULL, first_name VARCHAR (255) NOT NULL, last_name VARCHAR (255) NOT NULL,电子邮件VARCHAR(255)而不是NULL,主键(id));

发射的事件更新删除操作包含前面的表中的所有列的值。

创建事件

下面的例子显示了更改事件的价值部分的连接器生成创建数据的操作客户表:

{"模式":{(1)“类型”:“结构”、“字段”:[{“类型”:“结构”、“字段”:[{“类型”:“int32”、“可选”:假的,“场”:“id”},{“类型”:“弦”、“可选”:假的,“场”:“first_name”},{“类型”:“弦”、“可选”:假的,“场”:“last_name”},{“类型”:“弦”、“可选”:假的,“场”:“电子邮件”}],“可选”:真的,“名字”:“Vitess_server.commerce.customers.Value”,(2)“字段”:“之前”},{“类型”:“结构”、“字段”:[{“类型”:“int32”、“可选”:假的,“场”:“id”},{“类型”:“弦”、“可选”:假的,“场”:“first_name”},{“类型”:“弦”、“可选”:假的,“场”:“last_name”},{“类型”:“弦”、“可选”:假的,“场”:“电子邮件”}],“可选”:真的,“名字”:“Vitess_server.commerce.customers.Value”、“字段”:“之后”},{“类型”:“结构”、“字段”:[{“类型”:“弦”、“可选”:假的,“场”:“版本”},{“类型”:“弦”、“可选”:假的,“场”:“连接器”},{“类型”:“弦”、“可选”:假的,“场”:“name”},{“类型”:“int64”、“可选”:假的,“场”:“ts_ms”},{“类型”:“布尔”、“可选”:真的,“默认”:假的,“场”:“快照”},{“类型”:“弦”、“可选”:假的,“场”:“分贝”},{“类型”:“弦”、“可选”:假的,“场”:“模式”},{“类型”:“弦”、“可选”:假的,“场”:“表”},{“类型”:“int64”、“可选”:真的,“场”:“vgtid”}],“可选”:假的,“名字”:“io.debezium.connector.vitess.Source”,开云体育官方注册网址(3)“字段”:“源”},{“类型”:“弦”、“可选”:假的,“场”:“人事处”},{“类型”:“int64”、“可选”:真的,“场”:“ts_ms”}],“可选”:假的,“名字”:“Vitess_server.commerce.customers.Envelope”(4)},“有效载荷”:{(5)“之前”:空,(6)"后":{(7)“id”: 1、“first_name”:“安妮”,“last_name”:“Kretchmar”、“电子邮件”:“annek@noanswer.org”},“源”:{(8)“版本”:“2.1.2。最后”、“连接器”:“维塔斯”、“名称”:“my_sharded_connector”、“ts_ms”: 1559033904863,“快照”:假的,“分贝”:“”、“用于”:“商务”、“表”:“客户”、“vgtid”:“[{\“用于\”,\“商务\”,\“碎片\”:\“80 - \”,\“gtid \”, \“MariaDB / 0-54610504-47 \”},{\“用于\”,\“商务\”,\“碎片\”:\“-80 \”,\“gtid \”, \“MariaDB / 0-1592148-45 \”}]“}”, op”:“c”,(9)“ts_ms”: 1559033904863(10)}}
表3。的描述创建事件值字段
字段名 描述

1

模式

价值的模式,描述了价值的有效载荷的结构。更改事件的价值模式都是一样的在每一个更改事件的连接器生成一个特定的表。

2

的名字

模式节中,每的名字字段指定模式的一个字段值的有效载荷。

Vitess_server.commerce.customers.Value是负载的模式吗之前字段。该模式是特定的客户表。

名称的模式之前表单的字段logicalNamekeyspaceName的表value,确保数据库中的模式名称是惟一的。开云体育电动老虎机这意味着,当使用Avro转换器,结果Avro模式为每个表在每个逻辑源有其自身的进化和历史。

3

的名字

io.开云体育官方注册网址debezium.connector.vitess.Source是负载的模式吗字段。该模式是特定于维塔斯连接器。连接器使用它生成的所有事件。

4

的名字

Vitess_server.commerce.customers.Envelope是模式的总体结构载荷,在哪里Vitess_server连接器的名称,商务密钥空间,客户是表。

5

有效载荷

价值的实际数据。这是改变事件提供的信息。

似乎的JSON表示的事件是远远大于他们描述的行。这是因为JSON表示必须包括的模式和有效载荷部分信息。然而,通过使用Avro转换器,你可以显著减少连接器的消息流的大小,卡夫卡的话题。

6

之前

一个可选的字段指定事件发生之前的状态行。当人事处字段是c创建,在这个例子中,之前字段是因为这个更改事件是新内容。

7

一个可选的字段指定事件发生后的状态行。在这个例子中,字段包含的值的新行id,first_name,last_name,电子邮件列。

8

强制性字段描述了事件源的元数据。该字段包含信息,您可以使用它来比较这一事件与其他事件,关于事件的起源,事件发生的顺序,事件是否相同的事务的一部分。元数据来源包括:

  • 开云体育官方注册网址Debezium版本

  • 连接器类型和名称

  • 开云体育电动老虎机数据库(a.k.。一个用于)和表包含新行

  • 如果事件是一个快照(总是的一部分)

  • 抵消binlog操作的数据库开云体育电动老虎机

  • 时间戳在数据库中更改时间开云体育电动老虎机

9

人事处

强制性的描述类型的字符串操作导致连接器生成事件。在这个例子中,c表明,一行创建的操作。有效值:

  • c=创建

  • u=更新

  • d=删除

10

ts_ms

可选字段显示的时间连接器处理事件。基于系统时钟的时间是在JVM中运行卡夫卡连接任务。

对象,ts_ms显示的时间更改到数据库中。开云体育电动老虎机通过比较的值payload.source.ts_ms的价值payload.ts_ms,您可以确定源数据库更新和Debezium之间的滞后。开云体育官方注册网址开云体育电动老虎机

更新事件

更改事件的价值更新的样本客户作为一个表有相同的模式创建事件表。同样,事件相同价值的有效载荷结构。然而,在一个事件有效负载价值包含不同的值更新事件。更改事件的一个例子是价值的事件连接器生成的一个更新客户表:

{"模式":{…},“有效载荷”:{“前”:{(1)“id”: 1、“first_name”:“安妮”,“last_name”:“Kretchmar”、“电子邮件”:“annek@noanswer.org”},“后”:{(2)“id”: 1、“first_name”:“安妮玛丽”、“last_name”:“Kretchmar”、“电子邮件”:“annek@noanswer.org”},“源”:{(3)“版本”:“2.1.2。最后”、“连接器”:“维塔斯”、“名称”:“my_sharded_connector”、“ts_ms”: 1559033904863,“快照”:假的,“分贝”:“”、“用于”:“商务”、“表”:“客户”、“vgtid”:“[{\“用于\”,\“商务\”,\“碎片\”:\“80 - \”,\“gtid \”, \“MariaDB / 0-54610504-47 \”},{\“用于\”,\“商务\”,\“碎片\”:\“-80 \”,\“gtid \”, \“MariaDB / 0-1592148-46 \”}]“}”, op”:“u”,(4)“ts_ms”: 1465584025523(5)}}
表4。的描述更新事件值字段
字段名 描述

1

之前

一个可选的字段包含所有值的所有列在数据库行之前提交。开云体育电动老虎机

2

一个可选的字段指定事件发生后的状态行。在这个例子中,first_name值是现在安妮玛丽

3

强制性字段描述了事件源的元数据。的场结构有相同的字段中创建事件,但一些值是不同的。元数据来源包括:

  • 开云体育官方注册网址Debezium版本

  • 连接器类型和名称

  • 开云体育电动老虎机数据库(a.k.。一个用于)和表包含新行

  • 如果事件是一个快照(总是的一部分)

  • 抵消的操作在数据库日志开云体育电动老虎机

  • 时间戳在数据库中更改时间开云体育电动老虎机

4

人事处

强制性的字符串描述操作的类型。在一个更新事件的价值,人事处字段值是u,表示这一行改变,因为一个更新。

5

ts_ms

可选字段显示的时间连接器处理事件。基于系统时钟的时间是在JVM中运行卡夫卡连接任务。

对象,ts_ms显示的时间更改到数据库中。开云体育电动老虎机通过比较的值payload.source.ts_ms的价值payload.ts_ms,您可以确定源数据库更新和Debezium之间的滞后。开云体育官方注册网址开云体育电动老虎机

更新的主键列一行一行的值变化的关键。当一个关键变化,Debezium输出开云体育官方注册网址三个事件:删除事件和一个墓碑上的事件用旧的关键行,紧随其后的是一个事件的新键行。细节在下一节。

删除事件

在一个值删除有相同的变化事件模式部分为创建更新事件以相同的表。的有效载荷在一个部分删除事件为样本客户表看起来像这样:

{"模式":{…},“有效载荷”:{“前”:{(1)“id”: 1、“first_name”:“安妮玛丽”、“last_name”:“Kretchmar”、“电子邮件”:“annek@noanswer.org”},“后”:空,(2)“源”:{(3)“版本”:“2.1.2。最后”、“连接器”:“维塔斯”、“名称”:“my_sharded_connector”、“ts_ms”: 1559033904863,“快照”:假的,“分贝”:“”、“用于”:“商务”、“表”:“客户”、“vgtid”:“[{\“用于\”,\“商务\”,\“碎片\”:\“80 - \”,\“gtid \”, \“MariaDB / 0-54610504-47 \”},{\“用于\”,\“商务\”,\“碎片\”:\“-80 \”,\“gtid \”, \“MariaDB / 0-1592148-47 \”}]“}”, op”:“d”,(4)“ts_ms”: 1465581902461(5)}}
表5所示。的描述删除事件值字段
字段名 描述

1

之前

可选字段,指定事件发生之前的状态行。在一个删除事件的价值,之前字段包含的值的行之前删除数据库中提交。开云体育电动老虎机

2

可选字段,指定事件发生后的状态行。在一个删除事件的价值,字段是,标志着这一行已不复存在。

3

强制性字段描述了事件源的元数据。在一个删除事件的价值,场结构是一样的创建更新事件以相同的表。许多字段值也相同。在一个删除事件的价值,ts_mslsn字段值、以及其他值可能会改变。但是,在一个删除事件价值提供了相同的元数据:

  • 开云体育官方注册网址Debezium版本

  • 连接器类型和名称

  • 开云体育电动老虎机数据库(a.k.。一个用于)和表包含新行

  • 如果事件是一个快照(总是的一部分)

  • 抵消的操作在数据库日志开云体育电动老虎机

  • 时间戳在数据库中更改时间开云体育电动老虎机

4

人事处

强制性的字符串描述操作的类型。的人事处字段值是d,表示这一行被删除。

5

ts_ms

可选字段显示的时间连接器处理事件。基于系统时钟的时间是在JVM中运行卡夫卡连接任务。

对象,ts_ms显示的时间更改到数据库中。开云体育电动老虎机通过比较的值payload.source.ts_ms的价值payload.ts_ms,您可以确定源数据库更新和Debezium之间的滞后。开云体育官方注册网址开云体育电动老虎机

一个删除更改事件记录为消费者提供了信息需要处理删除这一行。

维塔斯事件连接器设计卡夫卡日志压实。日志压实使删除一些旧消息只要至少每个关键是保持最新的消息。这使卡夫卡回收存储空间同时确保主题包含一个完整的数据集,可用于重新加载密钥的状态。

墓碑上的事件

当一行被删除的删除事件的价值仍然使用日志压实,因为卡夫卡之前删除所有消息可以拥有同样的关键。然而,对于卡夫卡删除所有消息,相同的密钥,必须的信息价值。使这一切成为可能,维塔斯连接器之前删除事件与一个特殊的墓碑上事件,但具有相同的关键价值。

数据类型的映射

维塔斯连接器代表改变行等结构化事件存在的表行。事件的每一列都包含一个字段值。如何表示如果这个值取决于维塔斯列的数据类型。本节描述这些映射。

如果默认数据类型转换不符合你的需要,你可以创建一个自定义转换器连接器。

基本类型

下表描述了连接器维塔斯的基本数据类型映射到一个文字类型和一个语义类型在事件字段。

  • 文字类型描述如何使用卡夫卡连接模式类型所代表的值是:INT8,INT16,INT32,INT64,FLOAT32,FLOAT64,布尔,字符串,字节,数组,地图,结构体

  • 语义类型描述了卡夫卡如何连接模式了意义使用的名称的字段卡夫卡连接模式。

表6所示。维塔斯基本数据类型的映射
维塔斯的数据类型 文字类型(模式类型) 语义类型(模式名称)和笔记

布尔,布尔值

INT16

n /一个

位(1)

还不支持

n /一个

位(> 1)

还不支持

n /一个

非常小的整数

INT16

n /一个

短整型((M))

INT16

n /一个

MEDIUMINT ((M))

INT32

n /一个

整数,整数((M))

INT32

n /一个

长整型数字((M))

INT64

n /一个

真正的((M, D))

FLOAT64

n /一个

浮动((M, D))

FLOAT64

n /一个

双((M, D))

FLOAT64

n /一个

CHAR ((M))

字符串

n /一个

VARCHAR ((M))

字符串

n /一个

二进制((M))

字节

n /一个

VARBINARY ((M))

字节

n /一个

TINYBLOB

字节

n /一个

非常小的文本串

字符串

n /一个

字节

n /一个

文本

字符串

n /一个

MEDIUMBLOB

字节

n /一个

简单

字符串

n /一个

LONGBLOB

字节

n /一个

量变

字符串

n /一个

JSON

字符串

io.开云体育官方注册网址debezium.data.Json
包含的字符串表示JSON文档、数组或标量。

枚举

字符串

io.开云体育官方注册网址debezium.data.Enum
允许模式参数包含逗号分隔的允许的值列表。

字符串

io.开云体育官方注册网址debezium.data.EnumSet
允许模式参数包含逗号分隔的允许的值列表。

年[(2 | 4)]

字符串

n /一个

时间戳((M))

字符串

n /一个
yyyy-MM-dd HH: mm: ss.SSS基于UTC格式以微秒级精度。MySQL允许的范围0 - 6

DATETIME ((M))

字符串

n /一个
yyyy-MM-dd HH: mm: ss.SSS格式以微秒级精度。MySQL允许的范围0 - 6

数字((M [D]))

字符串

n /一个

小数((M [D]))

字符串

n /一个

几何,
LINESTRING,
多边形,
多点,
MULTILINESTRING,
多个多边形,
GEOMETRYCOLLECTION

还不支持

n /一个

凝结了维塔斯

开云体育官方注册网址Debezium不需要任何特定的配置为使用维塔斯。根据指令的标准安装维塔斯本地安装通过码头工人指南,或维塔斯算子对Kubernetes指南。

检查表
  • 确保VTGate主机及其gRPC端口(默认是15991)从维塔斯的机器访问连接器安装

  • 确保VTCtld主机及其gRPC端口(默认是15999)从维塔斯的机器访问连接器安装

gRPC身份验证

因为维塔斯连接器读取改变事件VTGate VStream gRPC服务器,它不需要直接连接到MySQL实例。因此,不需要特殊的数据库用户和权限。开云体育电动老虎机目前,维塔斯连接器只支持未经身份验证的访问VTGate gRPC服务器。

部署

动物园管理员,卡夫卡,卡夫卡连接安装,剩下的任务部署Debezium维塔斯连接器是下载的开云体育官方注册网址连接器的插件存档,将JAR文件提取到卡夫卡连接环境中,并添加JAR文件的目录卡夫卡连接的plugin.path。你需要重新启动你的卡夫卡连接过程去接新的JAR文件。

如果你正在与不可变的容器,明白了开云体育官方注册网址Debezium集装箱的图片动物园管理员、卡夫卡和卡夫卡与维塔斯连接器已经安装并准备运行。你也可以上运行D开云体育官方注册网址ebezium Kubernetes OpenShift

连接器配置示例

下面是一个例子,维塔斯的配置连接器连接到维塔斯(VTGate VStream)在192.168.99.100服务器在端口15991上,其逻辑名fullfillment。它还连接到VTCtld服务器在端口15999上在192.168.99.101初始VGTID。通常,您配置Debezium维塔斯连接器开云体育官方注册网址. json使用连接器可用的配置属性文件。

你可以选择生产活动模式和表的一个子集。可选地,忽略,面具,敏感或截断列,太大,或不需要。

{" name ": " inventory-connector”,(1)“配置”:{“连接器。class": "io.debezium.connector.vitess.VitessConnector",(2)“开云体育电动老虎机数据库。主机名”:“192.168.99.100”,(3)“开云体育电动老虎机数据库。港”:“15991”,(4)“开云体育电动老虎机数据库。user": "vitess",(5)“开云体育电动老虎机数据库。密码”:“vitess_password”,(6)“维塔斯。用于": "commerce",(7)“vitess.tablet。type": "MASTER",(8)“vitess.vtctld。主机”:“192.168.99.101”,(9)“vitess.vtctld。港”:“15999”,(10)“vitess.vtctld。user": "vitess",(11)“vitess.vtctld。密码”:“vitess_password”,(12)”的话题。前缀”:“fullfillment”,(13)”任务。马克斯:1(14)}}
1 连接器的名称注册时卡夫卡连接服务。
2 这个维塔斯连接器类的名称。
3 维塔斯的地址(VTGate VStream)服务器。
4 维塔斯的端口号(VTGate VStream)服务器。
5 维塔斯数据库服务器的用户名(VTGate gRPC)。开云体育电动老虎机
6 维塔斯的密码数据库服务器(VTGate gRPC)。开云体育电动老虎机
7 的名字keyspce (a.k.。一个开云体育电动老虎机数据库)。因为没有指定碎片,它读取用于改变事件的碎片。
8 MySQL实例的类型(主或副本)阅读改变的事件。
9 VTCtld服务器的地址。
10 VTCtld服务器的端口。
11 VTCtld服务器的用户名(VTCtld gRPC)。
12 VTCtld数据库服务器的密码(VTCtld gRPC开云体育电动老虎机)。
13 维塔斯的话题前缀集群,形成一个名称空间中使用所有的名字卡夫卡主题的连接器写道,卡夫卡连接模式名称和对应的Avro模式的名称空间,当Avro使用转换器。
14 在任何一次只有一个任务应该操作。

看到维塔斯连接器属性的完整列表在这些配置可以指定。

你可以发送这个配置帖子命令来运行卡夫卡连接服务。服务记录任务配置和启动连接器,连接到维塔斯卡夫卡主题数据库和流变化事件记录。开云体育电动老虎机

连接器配置示例offset-storage-per-task模式

当你有一个大的维塔斯安装需要不止一个连接器任务来处理更改日志,您可以使用offset-storage-per-task功能推出多个连接器任务,每个任务使用的一个子集维塔斯碎片。每个任务将持续其偏移量(碎片的vgtids跟踪)在卡夫卡的抵消自己的分区空间的主题。

下面是维塔斯的相同的示例连接器连接到维塔斯(VTGate VStream)服务器,但另外三个参数来调用offset-storage-per-task模式。

{" name ": " inventory-connector”、“配置”:{“连接器。类”:“io.debez开云体育官方注册网址ium.connector.vitess.VitessConnector”,“开云体育电动老虎机数据库。主机名”:“192.168.99.100”、“数据库。开云体育电动老虎机港”:“15991”、“数据库。开云体育电动老虎机用户”:“维塔斯”,“开云体育电动老虎机数据库。密码”:“vitess_password”、“维塔斯。用于”:“商务”、“vitess.tablet。类型”:“大师”、“vitess.vtctld。主机”:“192.168.99.101”,“vitess.vtctld。港”:“15999”,“vitess.vtctld。user": "vitess", "vitess.vtctld.password": "vitess_password", "database.server.name": "fullfillment", "vitess.offset.storage.per.task": true,(1)“vitess.offset.storage.task.key。创”:1、(2)“vitess.prev.num。任务”:1、(3)”任务。马克斯:2(4)}}
1 指定要打开offset-storage-per-task特性
2 指定当前任务并行的一代数量是1
3 指定数量的任务在前一代的任务并行性是1
4 指定,我们想推出两个任务当前任务并行性

维塔斯碎片分配的任务是基于一个简单的轮询调度算法。在这个例子中发射两个连接器的任务,假设我们有4维塔斯碎片(-40、40 - 80、80 - c0, c0 -), task0将致力于碎片(-40年、80年- c0)和task1将致力于碎片(40 - 80,c0 -)。

的原因,我们需要三个配置参数是确保补偿被每个连接器任务不相互碰撞和办理移民的补偿由前任务自动paralleism。为了确保我们不碰撞在卡夫卡抵消分区键的话题,我们使用这个分区名称方案为每个连接器的任务:taskId_numTasks_gen。对于当前的例子,与一代1号发射两个任务,task0将在卡夫卡的写作其补偿抵消分区键的主题:task0_2_1 task1将使用分区键:(task1_2_1)。创配置参数是用来区分分区键生成不同代(任务并行生成对应于每个变更)

当任务paralleism变化(如你想推出4连接器的任务,而不是2处理大体积的流量来自维塔斯),您将指定任务。max = 4, vitess.offset.storage.task.key。创= 2,vitess.prev.num。tasks=2, the offset partition for this task paralleism generation will be: task0_4_2, task1_4_2, task2_4_2, task3_4_2. Once the connector restarts, the connector will detect there is no previous offsets saved for the current 4 partition keys and it will invoke an automatic offset migration from the offsets saved in the previous generation keys: task0_2_1 and task1_2_1. For the current example of 4 vitess shards (-40,40-80,80-c0,c0-), task0 will be working on shard:(-40), task1:(40-80), task2:(80-c0), task3:(c0-). The offsets for those 4 shards from the previous generation of parallelism (using 2 tasks with each task working with 2 shards) will be auto-migrated to this generation of using 4 tasks (one task working with one shard each).

注意任务并行性创号码是违约为0的偏移量保存在卡夫卡抵消主题启用offset-storage-per-task特性之前,会有一个特殊的抵消抵消迁移期间查找。如果你有维塔斯连接器没有offset-storage-per-task功能运行一段时间,现在你想打开此功能,请指定vitess.offset.storage.task.key。创= 1,vitess.prev.num。tasks=1 to help the offset auto migration.

注意,vitess.prev.num。tasks needs to match the actual number of tasks launched in the previous task parallelism generation. The number of connector tasks is usually the same as the tasks.max config params you specified, but in the rare case that tasks.max > number of vitess shards, the connector will only launch the_number_of_tasks = the_number_of_vitess_shards. This rare case is probably a mis-configuration in the first place.

看到维塔斯连接器属性的完整列表在这些配置可以指定。

你可以发送这个配置帖子命令来运行卡夫卡连接服务。服务记录任务配置和启动连接器,连接到维塔斯卡夫卡主题数据库和流变化事件记录。开云体育电动老虎机

添加连接器配置

开始运行维塔斯的连接器,创建一个连接器配置和配置添加到您的卡夫卡连接集群。

先决条件
  • 其gRPC VTGate主机和端口(默认是15991)从维塔斯的机器访问连接器安装

  • 其gRPC VTCtld主机和端口(默认是15999)从维塔斯的机器访问连接器安装

  • 维塔斯连接器安装。

过程
  1. 创建一个配置维塔斯连接器。

  2. 使用卡夫卡REST API连接卡夫卡添加连接器配置连接集群。

结果

当连接器启动时,它开始产生数据行级操作的事件和流媒体改变事件记录,卡夫卡的话题。

监控

的Deb开云体育官方注册网址ezium维塔斯连接器只提供了一种度量,除了动物园管理员的内置支持JMX的度量,卡夫卡,卡夫卡提供连接。

  • 流指标提供连接器的信息操作连接器时捕捉变化和流改变事件记录。

开云体育官方注册网址Debezium监控文档提供细节如何通过使用JMX公开这些指标。

流指标

MBean开云体育官方注册网址debezium.vitess: type = connector-metrics、上下文=流媒体服务器=< vitess.server.name >

属性 类型 描述

连接器以来的毫秒数读取和处理最近的事件。

这个连接器的事件总数已经从去年开始或重置。

事件的数量已经被包括/排除列表过滤规则过滤配置连接器。

int

队列长度之间的拖缆和主要用来传递事件卡夫卡连接循环。

int

队列的自由能力用来传递事件之间的拖缆和主卡夫卡连接循环。

布尔

国旗,表示连接器是否正在连接到数据库服务器。开云体育电动老虎机

的毫秒数去年更改事件的时间戳和连接器之间的处理它。值将会把机器上的任何差异时钟运行数据库服务器和连接器。开云体育电动老虎机

处理事务的数量。

字节的最大缓冲区队列中用来传递事件之间的拖缆和主卡夫卡连接循环。

当前队列的缓冲区字节用来传递事件之间的拖缆和主卡夫卡连接循环。

连接器配置属性

的Deb开云体育官方注册网址ezium维塔斯连接器有许多配置属性,您可以使用它们来实现正确的连接器为您的应用程序的行为。许多属性的默认值。属性信息的组织结构如下:

以下配置属性要求除非一个默认值是可用的。

表7所示。需要连接器配置属性
财产 默认的 描述

没有默认的

独特的连接器的名称。再次尝试注册名称相同的就会失败。这个属性是必需的所有卡夫卡连接连接器。

没有默认的

连接器的Java类的名称。总是使用的值io.开云体育官方注册网址debezium.connector.vitess.VitessConnector维塔斯的连接器。

1

的最大数量的任务应该创建连接器。维塔斯连接器可以使用超过1任务如果你启用offset.storage.per。任务模式。

没有默认的

维塔斯的数据库服务器的IP地址或主机名(VTGate)。开云体育电动老虎机

15991年

整数维塔斯数据库服务器的端口号(VTGate)。开云体育电动老虎机

流的密钥空间的名称更改。

n /一个

一个可选的名字的碎片流的变化。如果不配置,以防unsharded用于,连接器流变化唯一的碎片,在分片的情况下用于,连接器流变化从所有密钥空间碎片。我们不推荐配置它,以流从所有在密钥空间碎片,因为它具有更好的支持reshard操作。例如,如果配置-80年,连接器将流的变化-80年碎片。

当前的

一个可选的碎片流从GTID位置。这是一起vitess.shard。如果不配置,连接器流变化对给定的碎片从最新的位置。

控制stop_on_reshard维塔斯的旗帜。

真正的——流reshard操作后将会停止。

——流将自动迁移reshard操作后的碎片。

如果设置为真正的,你也应该考虑设置vitess.gtid在配置。

n /一个

一个可选的维塔斯数据库服务器的用户名(VTGate)。开云体育电动老虎机如果不配置,未经身份验证的VTGate gRPC使用。

n /一个

维塔斯的一个可选的密码数据库服务器(VTGate)。开云体育电动老虎机如果不配置,未经身份验证的VTGate gRPC使用。

平板电脑的类型(因此MySQL)流的变化:

代表流从主MySQL实例

副本代表流从副本奴隶MySQL实例

RDONLY代表了只读流从奴隶MySQL实例。

没有默认的

主题提供一个名称空间前缀为特定维塔斯数据库服务器或集群Debezium捕捉变化。开云体育官方注册网址开云体育电动老虎机只有字母数字字符,连字符,点和强调必须用于数据库服务器逻辑名。开云体育电动老虎机前缀应该是唯一的在所有其他连接器,因为它是用作所有卡夫卡主题主题名称前缀接收记录这个连接器。

+

不改变这个属性的值。如果你改变名称值,重启之后,而不是继续发出事件最初的话题,连接器发出后续事件主题的名字是基于新值。

没有默认的

一个可选,以逗号分隔的正则表达式匹配完全限定表标识符表你想捕捉的变化。不包括在任何表table.include.list没有捕获它的变化。每个标识符的形式用于的表。默认情况下,连接器捕捉变化在每一个非系统的表在每个模式的变化被抓获。不还table.exclude.list财产。

没有默认的

一个可选,以逗号分隔的正则表达式匹配完全限定表标识符表的变化想要捕捉。不包括在任何表table.exclude.list它捕获的变化。每个标识符的形式用于的表。不还table.include.list财产。

没有默认的

可选,以逗号分隔的正则表达式匹配列的完全限定名称应该包含在变更事件记录值。完全限定名称列的形式用于的表columnName。不还column.exclude.list财产。

没有默认的

可选,以逗号分隔的正则表达式匹配的完全限定名称列应该排除在更改事件记录值。完全限定名称列的形式用于的表columnName。不还column.include.list财产。

真正的

控制是否删除事件是紧随其后的是一个墓碑上的事件。

真正的——由一个一个删除操作删除事件和随后的墓碑事件。

——只有一个删除发送事件。

源记录被删除后,发射一个墓碑事件(默认行为)允许卡夫卡属于完全删除所有事件的关键,以防被删除的行日志压实启用主题。

指定是否要打开offset-storage-per-task模式启动多个连接器任务和持续补偿分区的任务。

真正的——打开offset-storage-per-task模式。

——不使用offset-storage-per-task模式。

你也你也需要指定vitess.offset.storage.task.key。创和vitess.prev.num。tasks params if you turn on offset-storage-per-task mode.

1

指定任务paralleism代当vitess.offset.storage.per数量。任务是打开的。你应该增加一代当你决定改变连接器任务并行性(发射更多的连接器的任务或更少)

1

指定使用的连接器的任务数量paralleism当vitess.offset.storage.per前一代的任务。任务是打开的。

空字符串

分号分隔的列表的表用正则表达式匹配表列名。连接器匹配列中的值映射到关键字段在改变事件记录发送给卡夫卡的话题。这是非常有用的,当一个表没有主键,或当你想要订单更改事件记录在卡夫卡的话题不是主键的字段。

单独的条目分号。之间插入一个结肠完全限定表名和它的正则表达式。格式是:

keyspace-name表名:_regexp_;…

例如,

keyspaceA.table_a: regex_1; keyspaceA.table_b: regex_2; keyspaceA.table_c: regex_3

如果table_a有一个id列,regex_1^我(匹配任何列开始),连接器地图的价值table_aid列的键字段改变事件连接器发送给卡夫卡。

没有一个

指定应该如何调整的兼容模式名消息转换器使用的连接器。可能的设置:

  • 没有一个不应用任何调整。

  • avro替换字符,不能用于强调Avro类型名称。

最初的

指定的标准连接器启动时执行一个快照。将属性设置为以下值之一:

最初的

当连接器开始,如果它不检测其补偿价值的话题,它执行数据库的快照。开云体育电动老虎机

从来没有

当连接器,它跳过快照过程和立即开始改变事件流操作,数据库记录的二进制日志。开云体育电动老虎机

以下先进的配置属性默认值,在大多数情况下工作,因此很少需要指定连接器的配置。

表8所示。先进的连接器配置属性
财产 默认的 描述

没有默认的

列举了一个以逗号分隔的符号名称自定义转换器连接器可以使用实例。例如,

国际标准图书编号

你必须设置转换器财产让连接器使用一个自定义转换器。

对于每一个转换配置连接器,您必须添加一个.type属性,该属性指定了fully-qualifed实现converter接口的类的名称。的.type财产使用以下格式:

< converterSymbolicName >.type

例如,

isbn。type: io.debezium.test.IsbnConverter

如果你想进一步控制配置转换器的行为,您可以添加一个或多个配置参数值传递给转换器。把任何额外的配置参数和一个转换器,前缀符号名称的参数名称的转换器。例如,

isbn.schema.name: io.开云体育官方注册网址debezium.vitess.type.Isbn

失败

指定连接器应该如何应对异常事件的处理过程中:

失败传播例外,表示问题事件的偏移,导致连接器停止。

警告日志的抵消问题事件,事件的跳过,继续处理。

跳过跳过问题事件,并继续处理。

20240年

正整数的值指定了阻塞队列的最大记录数所能容纳的量。当Debe开云体育官方注册网址zium从数据库读取事件流,它将事件阻塞队列之前写卡夫卡。开云体育电动老虎机阅读改变事件的阻塞队列可以提供反压力的情况下从数据库连接器吸入消息的速度比它可以编写卡夫卡,或者当卡夫卡变得不可用。开云体育电动老虎机事件队列连接器时忽视举行定期记录偏移量。总是设置的值max.queue.size更大的价值max.batch.size

2048年

正整数的值指定的最大大小每一批连接器的事件过程。

0

一个长整型值,指定字节的阻塞队列的最大体积。默认情况下,体积限制不指定阻塞队列。指定的字节数,队列可以消费,将此属性设置为一个积极的长期价值。
如果max.queue.size也是集,写作时队列阻塞队列的大小达到通过属性指定的限制。例如,如果您设置max.queue.size = 1000,max.queue.size.in.bytes = 5000、写作到队列阻塞队列包含1000条记录后,或记录在队列的体积后达到5000字节。

500年

正整数的值指定的毫秒数连接器应该等待新的更改事件出现之前,开始处理一批事件。默认为500毫秒,或0.5秒。

真正的如果连接器配置设置key.convertervalue.converter房地产Avro转换器。
如果不是。

显示字段名是否消毒坚持Avro命名要求

t

一个以逗号分隔的操作类型,在流将被忽略。的操作包括:c插入/创建、u的更新,d删除,t截断,没有一个不要跳过任何操作。默认情况下,截断操作跳过(不发出该连接器)。

决定连接器生成事件与事务与事务边界和丰富变化事件信封的元数据。指定真正的如果你想连接器。看到事务的元数据获取详细信息。

Long.MAX_VALUE

控制之间的间隔周期gPRC keepalive VStream ping。默认为Long.MAX_VALUE(禁用)。

没有默认的

指定一个以逗号分隔的gRPC头。默认为空。格式是:

key1: value1, key2: value2,…

例如,

x-envoy-upstream-rq-timeout-ms: 0, x-envoy-max-retries: 2

没有默认的

指定允许的最大消息大小的字节接收通道。

默认值是4 mib

n /一个

可选,以逗号分隔的正则表达式匹配的完全限定名称列的原始类型和长度应该是作为一个参数添加到相应字段模式发出更改事件记录。这些模式参数:

__开云体育官方注册网址debezium.source.column.type

用于繁殖的原始类型名称和长度不同宽度的类型,分别。这是有用的正确大小水槽数据库中相应的列。开云体育电动老虎机完全限定名称列下面的形式:

keyspaceName的表columnName

n /一个

可选,以逗号分隔的正则表达式匹配的特定于数据库的数据类型名称列的原始类型和长度都应该作为一个参数添加到相应字段模式发出更改事件记录。开云体育电动老虎机这些模式参数:

__开云体育官方注册网址debezium.source.column.type

用于繁殖的原始类型名称和长度不同宽度的类型,分别。这是有用的正确大小水槽数据库中相应的列。开云体育电动老虎机完全限定名称列下面的形式:

keyspaceName的表columnName

看到维塔斯连接器如何映射数据类型Vitess-specific数据类型名称的列表。

io.开云体育官方注册网址debezium.schema.SchemaTopicNamingStrategy

TopicNamingStrategy类的名称应该用于确定数据的主题名称变化,模式改变,交易,心跳事件等,默认SchemaTopicNamingStrategy

为主题名称指定分隔符,违约

10000年

大小用于举办的主题名称有界并发散列映射。这个缓存将有助于确定主题名称对应于给定的数据收集。

事务

控制主题的连接器的名称发送交易信息的元数据。主题名称有这种模式:

topic.prefixtopic.transaction

例如,如果话题是前缀实现,默认的主题名称fulfillment.transaction

直通连接器配置属性

连接器还支持直通配置属性在创建使用卡夫卡生产国和消费国。

一定要查阅卡夫卡的文档所有配置属性对卡夫卡的生产者和消费者。维塔斯连接器使用新的消费者配置属性

当事情出错的行为

开云体育官方注册网址Debezium是一个分布式系统,捕获所有更改多个上游数据库;开云体育电动老虎机它从不错过或失去一个事件。当系统正常操作或管理仔细然后Debezium提供开云体育官方注册网址只有一天交付的每一个变化事件记录。

如果发生错误,那么系统不丢失任何事件。然而,尽管从故障中恢复,这可能重复一些更改事件。在异常情况下,Debezium,就像卡夫卡,提供开云体育官方注册网址至少一次交付更改事件。

本节的其余部分描述如何Debezium处理各种故障和问题。开云体育官方注册网址

配置和启动错误

在下列情况下,连接失败时开始,报告错误/异常日志,并停止运行:

  • 连接器的配置是无效的。

  • 连接器不能成功地连接到维塔斯通过使用指定的连接参数。

在这些情况下,错误消息的细节问题和建议解决方案。正确配置或解决维塔斯的问题后,重新启动连接器。

维塔斯变得不可用

当连接器正在运行,Vitses服务器(VTGate),它连接到可以为任意数量的原因不可用。如果发生这种情况,连接器与一个错误并停止失败。当服务器可用,重新启动连接器。

维塔斯连接器去年加工抵消外部存储的形式维塔斯VGTID。连接器后重新启动并连接到一个服务器实例中,连接器与服务器通信继续流从特定的偏移量。

无效的列名称错误

这个错误发生很少。如果你收到一个错误消息非法前缀“@”专栏:x,从模式:y,表:z没有这样一个列,你的表,它是一个维塔斯vstream错误这是由列重命名或列类型的改变。这是一个瞬态误差。你可以重新启动连接器后小自动补偿,它应该解决。

卡夫卡连接过程停止优雅

假设卡夫卡连接正在运行在分布式模式和卡夫卡连接过程是优雅地停了下来。关闭这一过程之前,卡夫卡迁移任务进程的连接器连接到另一个组的卡夫卡连接过程。新连接器的任务开始处理之前任务的确切位置停了下来。有一个短暂的延迟在处理连接器任务优雅地停止并重新启动新的流程。

卡夫卡连接过程崩溃

如果卡夫卡连接器进程意外停止,任何连接器任务是运行终止没有记录他们最近补偿处理。当卡夫卡连接正在运行在分布式模式中,卡夫卡在其他进程重启这些连接器连接任务。然而,从去年抵消,维塔斯连接器的简历记录早些时候的过程。这意味着新的替换任务可能产生一些相同的更改事件被处理之前就崩溃。重复事件的数量取决于抵消冲洗周期和变化的数据量就在崩溃。

因为一些事件可能有机会复制从失败中恢复期间,消费者应该预见到一些重复的事件。开云体育官方注册网址Debezium变化是幂等的,所以一系列事件总是导致相同的状态。

在每个更改事件记录,Debezium连接器插入源特定事件的开云体育官方注册网址起源信息,包括事件的维塔斯服务器的时间,位置在binlog事务的变化。消费者可以跟踪这些信息,特别是VGTID,确定一个事件是否重复。

卡夫卡变得不可用

连接器生成变化事件,卡夫卡连接框架记录这些事件在卡夫卡通过卡夫卡生产商API。定期在指定频率卡夫卡连接配置,卡夫卡连接记录最新的抵消,出现在这些更改事件。如果卡夫卡经纪人不可用,卡夫卡连接过程运行连接器多次试图重新连接到卡夫卡经纪人。换句话说,连接器任务暂停,直到可以重新建立一个连接,此时连接器简历哪里他们离开。

连接器停止时间

如果连接器优雅地停止,数据库可以继续被使用。开云体育电动老虎机任何变化都记录在维塔斯binlog。连接器重启的时候,简历流变化的地方重新开始,也就是说,它生成变化事件记录所有数据库更改了同时连接器停了下来。开云体育电动老虎机

正确配置卡夫卡集群能够处理大吞吐量。卡夫卡连接是根据卡夫卡写的最佳实践,并给予足够的资源卡夫卡连接连接器还可以处理大量数据库变更事件。开云体育电动老虎机正因为如此,停了一段时间后,Debezium连接器重新启动时,它很可能赶上的数据库更改时停止。开云体育官方注册网址开云体育电动老虎机如何迅速发生取决于卡夫卡的功能和性能和体积的变化在维塔斯的数据。

连接器失败之前完成快照

如果一个快照未能完成,连接器并不会自动重新尝试快照。如果重新启动连接器与前面的抵消,连接器跳过快照过程并立即开始改变事件流。

因此,从失败中恢复过来,手动删除连接器补偿并启动连接器。

限制与早期维塔斯的版本

维塔斯8.0.0
  • 由于小维塔斯填充问题(这是固定在维塔斯9.0.0),十进制值的精度大于或等于13将导致额外的空格前面的号码。例如,如果列类型小数(13、4)表定义的值-1.2300就变成了“- 1.2300”,值1.2300就变成了“1.2300”

  • 不支持JSON列类型。

  • VStream 8.0.0不提供额外的元数据允许的值枚举列。因此,连接器不支持枚举列类型。基于指数()将发出而不是枚举值。如。“3”将发出的价值而不是“L”如果枚举的定义是枚举(“S”,“M”,“L”)