您正在查看的文档Debezium的过时的版本。开云体育官方注册网址
如果你想查看这个页面的最新稳定版本,请走吧在这里

开云体育官方注册网址Debezium为MySQL连接器

MySQL有二进制日志(binlog)记录所有操作的顺序提交到数据库。开云体育电动老虎机这包括表模式的变化以及变化的数据表。MySQL使用binlog复制和恢复。

Debe开云体育官方注册网址zium MySQL连接器读取binlog,为行级别发生变化的事件插入,更新,删除操作,并发出更改事件卡夫卡的话题。客户端应用程序读卡夫卡的话题。

MySQL是通常设置清洗binlogs指定时间后,MySQL连接器执行初始一致的快照你的每一个数据库。开云体育电动老虎机MySQL连接器读取binlog从快照的。

连接器是如何工作的

概述的MySQL拓扑连接器支持计划是有用的应用程序。优化配置并运行一个Debezium MySQL连接器,它有助于了解开云体育官方注册网址连接器跟踪表的结构,使模式变化,执行快照,并确定卡夫卡主题名称。

支持MySQL拓扑

Debe开云体育官方注册网址zium MySQL连接器支持MySQL拓扑如下:

独立的

当使用一个MySQL服务器时,服务器必须启用binlog (和有选择地GTIDs启用)所以Debezi开云体育官方注册网址um MySQL连接器可以监视服务器。这通常是可以接受的,因为二进制日志也可以被用作一个增量备份。在这种情况下,总是连接到MySQL连接器和遵循这一独立的MySQL服务器实例。

主数据网格和副本

Debe开云体育官方注册网址zium MySQL连接器可以遵循的一个主服务器或一个副本(如果启用了它binlog复制品),但是连接器看到的变化只有可见的集群服务器。一般来说,这不是一个问题,除了multi-primary拓扑。

连接器记录其位置在服务器的binlog,集群中的每个服务器上是不同的。因此,连接器必须遵循一个MySQL服务器实例。如果该服务器失败,必须重新启动服务器或连接器可以继续之前恢复。

高可用集群

各种各样的高可用性MySQL的解决方案,他们使它明显更容易容忍和几乎立即恢复问题和失败。大多数HA MySQL集群使用GTIDs这副本可以跟踪任何主服务器上的所有更改。

Multi-primary

网络数据库(ND开云体育电动老虎机B)集群复制使用一个或多个MySQL复制节点,每个复制从多个主服务器。这是一个强大的方式聚合多个MySQL集群复制。这种拓扑需要GTIDs的使用。

De开云体育官方注册网址bezium MySQL连接器可以使用这些multi-primary MySQL复制品来源,并且可以故障转移到不同multi-primary MySQL副本只要新副本是赶上了旧的复制品。也就是说,新副本出现在第一个副本的所有事务。这作品即使连接器仅使用数据库和/或表的一个子集,可以配置为连接器包括或排除特定GTID来源当试图连接到一个新的mult开云体育电动老虎机i-primary MySQL binlog复制品和找到正确的位置。

主持

有支持Debezium MySQL连接器使用托管选开云体育官方注册网址项如Amazon RDS和亚马逊极光。

因为这些托管选项不允许全球读锁,用于创建表级锁一致的快照

模式的历史话题

当一个数据库客开云体育电动老虎机户端查询数据库,客户端采用数据库的当前模式。然而,随时可以更改数据库模开云体育电动老虎机式,这意味着连接器必须能够识别模式当时每个插入、更新或删除操作记录。同时,连接器不能使用当前模式因为连接器可能处理的事件相对较老,可能是记录在表的模式改变了。

处理这件事,MySQL在binlog不仅包括数据行级的变化,也应用于数据库的DDL语句。开云体育电动老虎机连接器读取binlog和遇到这些DDL语句,它解析和更新每个表的模式的内存中表示。连接器使用这个模式识别的结构表示表的时候每个插入、更新或删除操作,产生适当的更改事件。在一个单独的数据库历史卡夫卡开云体育电动老虎机的话题,连接器记录所有DDL语句的位置在每个DDL语句的binlog出现了。

当连接器重启后坠毁或被优雅地停了下来,开始阅读binlog连接器从一个特定的位置,也就是说,从一个特定的时间点。连接器的表结构重建存在在这个时间点通过读取数据库历史卡夫卡和解析所有DDL语句话题点binlog连接器在哪里开始。开云体育电动老虎机

这个数据库开云体育电动老虎机的历史主题是仅供连接器使用。连接器可以看到排放模式更改事件到一个不同的主题,是为消费者应用程序

MySQL连接器时捕捉变化的表模式改变等工具gh-ostpt-online-schema-change应用有辅助表在迁移过程中创建的。连接器需要配置为捕获改变这些辅助表。如果消费者不需要辅助表的生成记录然后单个消息变换可用于过滤出来。

看到缺省名称为主题接收Debezium事件记开云体育官方注册网址录。

模式改变话题

您可以配置一个Debezium MySQ开云体育官方注册网址L连接器生产模式更改事件,包括所有DDL语句应用在MySQL数据库服务器。开云体育电动老虎机卡夫卡的连接器发出这些事件主题命名serverName在哪里serverName连接器的名称是指定的吗开云体育电动老虎机database.server.name连接器配置属性。

如果你选择使用模式改变事件,确保你的消费记录模式改变话题。数据库历开云体育电动老虎机史话题是仅供连接器使用。

事件发出的全球秩序模式改变话题是至关重要的。因此,您必须不分区数据库的历史主题。开云体育电动老虎机这意味着您必须指定一个分区数1当创建数据库历史话题。开云体育电动老虎机当依赖汽车主题创作,确保卡夫卡的num.partitions配置选项,指定默认的分区数量,设置1

连接器发出的每条记录模式改变主题包含一个消息键的名称,包括连接数据库的DDL语句时应用,例如:开云体育电动老虎机

{"模式":{“类型”:“结构”、“名称”:“io.debezium.connector开云体育官方注册网址.mysql.SchemaChangeKey”、“可选”:假的,“字段”:[{“字段”:“数据库名”、“类型”:“弦”、“可选”:假}]},“有效载荷”开云体育电动老虎机:{“数据库名”:"库存"}}

方案更改事件记录值包含一个结构,其中包括DDL语句,语句的数据库的名称,和位置binlog语句出现的地方,例如:开云体育电动老虎机

{"模式":{“类型”:“结构”、“名称”:“io.debezium.connector开云体育官方注册网址.mysql.SchemaChangeValue”、“可选”:假的,“字段”:[{“字段”:“数据库名”、“类型”:“弦”、“可选”:假},{”字段”:“d开云体育电动老虎机dl”、“类型”:“弦”、“可选”:假},{”字段”:“源”、“类型”:“结构”、“名称”:“io.debezium.connector.mysql.Source”、“可选”:假的,“字段”:[{“类型”:“弦”、“可选”:真的,“场”:“版本”},{“类型”:“弦”、“可选”:假的,“场”:“name”},{“类型”:“int64”、“可选”:假的,“场”:“server_id”},{“类型”:“int64”、“可选”:假的,“场”:“ts_ms”},{“类型”:“弦”、“可选”:真的,“场”:“gtid”},{“类型”:“弦”、“可选”:假的,“场”:“文件”},{“类型”:“int64”、“可选”:假的,“场”:“pos”},{“类型”:“int32”、“可选”:假的,“场”:“行”},{“类型”:“布尔”、“可选”:真的,“默认”:假的,“场”:“快照”},{“类型”:“int64”、“可选”:真的,“场”:“线程”},{“类型”:“弦”、“可选”:真的,“场”:“分贝”},{“类型”:“弦”、“可选”:真的,“场”:“表”},{“类型”:“弦”、“可选”:真的,“场”:“查询”}]}]},“有效载荷”:{“数据库名”:“库存”、“ddl”:“创建表产品(id整数NOT NULL AUTO_INCREMENT主键名称VARCHAR (255) NOT NULL,描述VARCHAR(512),重量浮动);ALTER TABLE产品AUTO_INCREMENT = 101;”、“源”:{“版本”:“1.4.2。最后”、“名称”:“mysql-server-1”、“server_id”: 0,”ts_ms”: 0,”gtid”:空,“文件”:“mysql-bin。000003", "pos": 154, "row": 0, "snapshot": true, "thread": null, "db": null, "table": null, "query": null } } }

ddl字段可能包含多个DDL语句。每个语句适用于数据库中开云体育电动老虎机开云体育电动老虎机数据库名字段。语句出现在他们的顺序应用到数据库中。开云体育电动老虎机的场结构就像一个标准的数据更改事件写入table-specific主题。这个领域是有用的关联事件在不同的主题。

....“有效载荷”:{“数据库名”开云体育电动老虎机:“库存”、“ddl”:“创建表的产品(id的整数NOT NULL AUTO_INCREMENT主键,…)”“源”:{…}}....

一个客户可以提交多个DDL语句应用到多个数据库。开云体育电动老虎机如果MySQL适用于自动,连接器将DDL语句,组织他们的数据库,并创建一个模式为每个组更改事件。开云体育电动老虎机如果MySQL适用它们单独,连接器为每个语句创建一个单独的模式更改事件。

快照

Debeziu开云体育官方注册网址m MySQL连接器是刚开始的时候,它执行一个初始一致的快照你的数据库。开云体育电动老虎机以下流程描述了连接器创建快照。这个流为默认快照模式最初的。其他快照模式的信息,请参阅MySQL连接器snapshot.mode配置属性

表1。工作流执行初始快照全球读锁
一步 行动

1

抓住一个全球读锁块被其他客户数据库。开云体育电动老虎机

快照本身并不阻止其他客户应用DDL可能干扰连接器试图读binlog位置和表模式。连接器保持全局读锁虽然读取binlog位置,和释放锁在后面所述步骤。

2

开始一个事务可重复读取语义,以确保所有后续读取在事务完成的一致的快照

3

读取当前binlog位置。

4

读取模式的数据库和表连接器配置为捕捉变化。开云体育电动老虎机

5

释放全局读锁。其他数据库的开云体育电动老虎机客户现在可以写入数据库。

6

DDL写道,如果适用的变化模式改变的话题,包括所有必要的下降…创建…DDL语句。

7

扫描数据库表。开云体育电动老虎机对于每一行,连接器发出创建事件相关table-specific卡夫卡的话题。

8

提交事务。

9

连接器补偿记录完成的快照。

连接器重启

如果连接失败,停止,或者是重新平衡,同时执行初始快照连接器重启之后,那么,它执行一个新的快照。在那之后开始快照完成后,重启Debezium MyS开云体育官方注册网址QL连接器从同一位置binlog所以不会错过任何更新。

如果连接器停留足够长的时间,MySQL可以清除旧的binlog文件和连接器的位置将会丢失。如果这个职位如有遗失,连接器回归正常初始快照它的起始位置。故障排除Debezium MySQL连接器的更多提示,看到的开云体育官方注册网址当事情出错的行为

全球读取锁不允许的

某些环境中不允许全球读锁。如果Debez开云体育官方注册网址ium MySQL连接器检测到全球不允许读锁,连接器使用的表级锁而不是用这种方法并执行一个快照。这需要的数据库用户Debezium连开云体育电动老虎机接器开云体育官方注册网址锁表特权。

表2。工作流执行初始快照和表级锁
一步 行动

1

获得表级锁。

2

开始一个事务可重复读取语义,以确保所有后续读取在事务完成的一致的快照

3

读取和过滤器的数据库和表的名称。开云体育电动老虎机

4

读取当前binlog位置。

5

读取模式的数据库和表连接器配置为捕捉变化。开云体育电动老虎机

6

DDL写道,如果适用的变化模式改变的话题,包括所有必要的下降…创建…DDL语句。

7

扫描数据库表。开云体育电动老虎机对于每一行,连接器发出创建事件相关table-specific卡夫卡的话题。

8

提交事务。

9

释放表级锁。

10

连接器补偿记录完成的快照。

快照操作类型的事件

MySql连接器发出快照事件使用“r”操作类型()。如果你希望连接器发送快照事件“c”事件(创建在早期版本错误),这可以通过使用一个简单的消息转换(SMT)。配置Debezium开云体育官方注册网址ReadToInsertEventSMT通过添加SMT配置连接器的配置细节。

配置的一个例子是这样的:

变换= snapshotasinsert,…transforms.snapshotasinsert.type = i开云体育官方注册网址o.debezium.connector.mysql.transforms.ReadToInsertEvent

主题名称

默认行为是Debezium MySQL连接器写事件开云体育官方注册网址插入,更新,删除操作在一个表一个卡夫卡的话题。卡夫卡的主题命名约定如下:

serverName.开云体育电动老虎机databaseName.tableName

假设实现是服务器名称,库存数据库名称,数开云体育电动老虎机据库包含表命名订单,客户,产品。Debe开云体育官方注册网址zium MySQL连接器发送事件到三卡夫卡话题,一个用于数据库中的每个表:开云体育电动老虎机

fulfillment.inventory。订单fulfillment.inventory。客户fulfillment.inventory。产品

数据更改事件

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

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

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

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

1

模式

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

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

2

有效载荷

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

3

模式

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

4

有效载荷

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

默认情况下,连接器流改变事件记录主题名称是一样的事件的原始表。看到主题名称

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

这可能会导致意想不到的冲突如果逻辑服务器名称,数据库名称,或一个表名称包含无效字符,和唯一的字符,区分名称从一个另一个无效,从而替换为下开云体育电动老虎机划线。

更改事件的钥匙

改变事件的主要包含的模式改变表的键和改变行实际的关键。模式和相应的有效载荷包含一个字段更改表中的每一列的主键(或唯一约束)当时的事件创建的连接器。

考虑以下客户表,紧随其后的是一个更改事件这个表的关键。

创建表的客户(id的整数NOT NULL AUTO_INCREMENT主键,first_name VARCHAR (255) NOT NULL, last_name VARCHAR (255) NOT NULL,邮件VARCHAR (255) NOT NULL唯一键)AUTO_INCREMENT = 1001;

每一个变化事件,抓住了改变客户表具有相同的事件模式的关键。只要客户表有前面的定义,每一个更改事件捕获的变化客户表有以下键结构。在JSON,看起来像这样:

{"模式":{(1)“类型”:“结构”、“名称”:“mysql -服务器- 1. inventory.customers.key”,(2)“可选”:假的,(3)“字段”:[(4){“字段”:“id”,“类型”:“int32”,“可选”:假}},“有效载荷”:{(5)“id”: 1001}}
表4。描述变化事件的关键
字段名 描述

1

模式

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

2

mysql服务器- 1. inventory.customers.key

的名字的结构模式,它定义了关键的负载。该模式描述表的主键的结构改变。关键模式名的格式connector-name开云体育电动老虎机数据库名称表名关键。在这个例子中:

  • mysql-server-1连接器的名称,生成的这一事件。

  • 库存是数据库包含表开云体育电动老虎机改变了。

  • 客户是表更新。

3

可选

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

4

字段

指定每个字段,预计有效载荷,包括每个字段的名称、类型和是否需要它。

5

有效载荷

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

更改事件值

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

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

创建表的客户(id的整数NOT NULL AUTO_INCREMENT主键,first_name VARCHAR (255) NOT NULL, last_name VARCHAR (255) NOT NULL,邮件VARCHAR (255) NOT NULL唯一键)AUTO_INCREMENT = 1001;

的价值部分的更改事件改变这个表描述:

创建事件

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

{"模式":{(1)“类型”:“结构”、“字段”:[{“类型”:“结构”、“字段”:[{“类型”:“int32”、“可选”:假的,“场”:“id”},{“类型”:“弦”、“可选”:假的,“场”:“first_name”},{“类型”:“弦”、“可选”:假的,“场”:“last_name”},{“类型”:“弦”、“可选”:假的,“场”:“电子邮件”}],“可选”:真的,“名字”:“mysql -服务器- 1. inventory.customers.value”,(2)“字段”:“之前”},{“类型”:“结构”、“字段”:[{“类型”:“int32”、“可选”:假的,“场”:“id”},{“类型”:“弦”、“可选”:假的,“场”:“first_name”},{“类型”:“弦”、“可选”:假的,“场”:“last_name”},{“类型”:“弦”、“可选”:假的,“场”:“电子邮件”}],“可选”:真的,“名字”:“mysql -服务器- 1. inventory.customers。值”、“场”:“后”},{“类型”:“结构”、“字段”:[{“类型”:“弦”、“可选”:假的,“场”:“版本”},{“类型”:“弦”、“可选”:假的,“场”:“连接器”},{“类型”:“弦”、“可选”:假的,“场”:“name”},{“类型”:“int64”、“可选”:假的,“场”:“ts_ms”},{“类型”:“布尔”、“可选”:真的,“默认”:假的,“场”:“快照”},{“类型”:“弦”、“可选”:假的,“场”:“分贝”},{“类型”:“弦”、“可选”:真的,“场”:“表”},{“类型”:“int64”、“可选”:假的,“场”:“server_id”},{“类型”:“弦”、“可选”:真的,“场”:“gtid”},{“类型”:“弦”、“可选”:假的,“场”:“文件”},{“类型”:“int64”、“可选”:假的,“场”:“pos”},{“类型”:“int32”、“可选”:假的,“场”:“行”},{“类型”:“int64”、“可选”:真的,“场”:“线程”},{“类型”:“弦”、“可选”:真的,“场”:“查询”}],“可选”:假的,“名字”:“io.debezium.connector.mysql.Source”,开云体育官方注册网址(3)“字段”:“源”},{“类型”:“弦”、“可选”:假的,“场”:“人事处”},{“类型”:“int64”、“可选”:真的,“场”:“ts_ms”}],“可选”:假的,“名字”:“mysql -服务器- 1. inventory.customers.envelope”(4)},“有效载荷”:{(5)“人事处”:“c”,(6)“ts_ms”: 1465491411815,(7)“之前”:空,(8)"后":{(9)“id”: 1004年,“first_name”:“安妮”,“last_name”:“Kretchmar”、“电子邮件”:“annek@noanswer.org”},“源”:{(10)“版本”:“1.4.2。最后”、“连接器”:“mysql”、“名称”:“mysql-server-1”、“ts_ms”: 0,“快照”:假的,“分贝”:“库存”、“表”:“客户”、“server_id”: 0,”gtid”:空,“文件”:“mysql-bin。000003”、“pos”: 154年,“行”:0,“线程”:7,“查询”:“插入客户(first_name、last_name、电子邮件)值(“安妮”,“Kretchmar”、“annek@noanswer.org”)”}}}
表5所示。的描述创建事件值字段
字段名 描述

1

模式

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

2

的名字

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

mysql服务器- 1. inventory.customers.value是负载的模式吗之前字段。该模式是特定的客户表。

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

3

的名字

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

4

的名字

mysql服务器- 1. inventory.customers.envelope是模式的总体结构载荷,在哪里mysql-server-1连接器的名称,库存是数据库,开云体育电动老虎机客户是表。

5

有效载荷

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

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

6

人事处

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

  • c=创建

  • u=更新

  • d=删除

  • r=阅读(只适用于快照)

7

ts_ms

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

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

8

之前

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

9

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

10

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

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

  • 连接器的名字

  • binlog名称的事件被记录

  • binlog位置

  • 行中的事件

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

  • 的数据库和表名称包含新行开云体育电动老虎机

  • 创建事件的MySQL线程的ID(仅non-snapshot)

  • MySQL服务器ID(如果可用)

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

如果binlog_rows_query_log_eventsMySQL配置选项启用和连接器配置include.query属性,启用现场还提供了查询字段,其中包含原始SQL语句导致更改事件。

更新事件

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

{"模式":{…},“有效载荷”:{“前”:{(1)“id”: 1004年,“first_name”:“安妮”,“last_name”:“Kretchmar”、“电子邮件”:“annek@noanswer.org”},“后”:{(2)“id”: 1004年,“first_name”:“安妮玛丽”、“last_name”:“Kretchmar”、“电子邮件”:“annek@noanswer.org”},“源”:{(3)“版本”:“1.4.2。最后”、“名称”:“mysql-server-1”、“连接器”:“mysql”、“名称”:“mysql-server-1”、“ts_ms”: 1465581029100,“快照”:假的,“分贝”:“库存”、“表”:“客户”、“server_id”: 223344年,“gtid”:空,“文件”:“mysql-bin。000003”、“pos”: 484年,“行”:0,“线程”:7,“查询”:“更新客户设置first_name =“安妮玛丽”id = 1004 "}, op”:“u”,(4)“ts_ms”: 1465581029523(5)}}
表6所示。的描述更新事件值字段
字段名 描述

1

之前

一个可选的字段指定事件发生之前的状态行。在一个更新事件的价值,之前为每个表列字段包含一个字段和值的列在数据库提交。开云体育电动老虎机在这个例子中,first_name值是安妮。

2

一个可选的字段指定事件发生后的状态行。你可以比较之前结构来确定更新这一行。在这个例子中,first_name值是现在安妮玛丽

3

强制性字段描述了事件源的元数据。的场结构有相同的字段中创建事件,但一些值是不同的,例如,样本更新binlog事件从一个不同的位置。元数据来源包括:

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

  • 连接器的名字

  • binlog名称的事件被记录

  • binlog位置

  • 行中的事件

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

  • 数据库和表的名称包含更新开云体育电动老虎机的行

  • 创建事件的MySQL线程的ID(仅non-snapshot)

  • MySQL服务器ID(如果可用)

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

如果binlog_rows_query_log_eventsMySQL配置选项启用和连接器配置include.query属性,启用现场还提供了查询字段,其中包含原始SQL语句导致更改事件。

4

人事处

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

5

ts_ms

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

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

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

主键更新

一个更新操作,连续变化的主键字段(s)被称为一个主键改变。一个主键变化的更新事件记录,连接器发出删除旧的键和一个事件记录创建新(更新)关键事件记录。这些事件通常的结构和内容,此外,每一个都有一个消息头与主键改变:

  • 删除事件记录__开云体育官方注册网址debezium.newkey消息头。这个头的值是新更新的行的主键。

  • 创建事件记录__开云体育官方注册网址debezium.oldkey消息头。这个头的值是前(旧)主键更新的行。

删除事件

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

{"模式":{…},“有效载荷”:{“前”:{(1)“id”: 1004年,“first_name”:“安妮玛丽”、“last_name”:“Kretchmar”、“电子邮件”:“annek@noanswer.org”},“后”:空,(2)“源”:{(3)“版本”:“1.4.2。最后”、“连接器”:“mysql”、“名称”:“mysql-server-1”、“ts_ms”: 1465581902300,“快照”:假的,“分贝”:“库存”、“表”:“客户”、“server_id”: 223344年,“gtid”:空,“文件”:“mysql-bin。000003”、“pos”: 805年,“行”:0,“线程”:7,“客户查询”:“删除id = 1004},“人事处”:“d”,(4)“ts_ms”: 1465581902461(5)}}
表7所示。的描述删除事件值字段
字段名 描述

1

之前

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

2

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

3

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

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

  • 连接器的名字

  • binlog名称的事件被记录

  • binlog位置

  • 行中的事件

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

  • 数据库和表的名称包含更新开云体育电动老虎机的行

  • 创建事件的MySQL线程的ID(仅non-snapshot)

  • MySQL服务器ID(如果可用)

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

如果binlog_rows_query_log_eventsMySQL配置选项启用和连接器配置include.query属性,启用现场还提供了查询字段,其中包含原始SQL语句导致更改事件。

4

人事处

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

5

ts_ms

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

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

一个删除更改事件记录为消费者提供了信息需要处理删除这一行。包括旧值,因为一些消费者可能需要他们为了妥善处理消除。

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

墓碑上的事件

当一行被删除的删除事件的价值仍然使用日志压实,因为卡夫卡之前删除所有消息可以拥有同样的关键。然而,对于卡夫卡删除所有消息,相同的密钥,必须的信息价值。为做到这一点,Debezium MySQL连接器后发出开云体育官方注册网址删除事件,连接器发出一种特别的墓碑上活动,但是有相同的关键价值。

数据类型的映射

Debe开云体育官方注册网址zium MySQL连接器代表改变行等结构化事件存在的表行。事件的每一列都包含一个字段值。MySQL数据类型的列规定如何Debezium代表事件的价值。开云体育官方注册网址

列存储字符串定义在MySQL字符集和校对。MySQL连接器使用列的字符集当阅读binlog列值的二进制表示的事件。

连接器可以映射两个MySQL数据类型文字语义类型。

  • 文字类型:如何使用卡夫卡所代表的值是连接模式类型

  • 语义类型:卡夫卡连接模式捕获字段的含义(模式名称)

基本类型

下面的表显示了MySQL连接器地图基本数据类型。

表8所示。描述基本的类型映射
MySQL类型 文字类型 语义类型

布尔,布尔值

布尔

n /一个

位(1)

布尔

n /一个

位(> 1)

字节

io.开云体育官方注册网址debezium.data.Bits
长度模式参数包含一个整数,代表的比特数。的byte []包含的位低位优先形式和大小的包含指定的位数。例如,在哪里n位:
numBytes = n / 8 + (n % 8 = = 0 ?0:1)

非常小的整数

INT16

n /一个

短整型((M))

INT16

n /一个

MEDIUMINT ((M))

INT32

n /一个

整数,整数((M))

INT32

n /一个

长整型数字((M))

INT64

n /一个

真正的((M, D))

FLOAT32

n /一个

浮动((M, D))

FLOAT64

n /一个

双((M, D))

FLOAT64

n /一个

CHAR (M))

字符串

n /一个

VARCHAR (M))

字符串

n /一个

二进制(M))

字节字符串

n /一个
原始字节(默认),一个base64编码的字符串,或hex-encoded字符串,根据binary.handling.mode连接器配置属性设置。

VARBINARY (M))

字节字符串

n /一个
原始字节(默认),一个base64编码的字符串,或hex-encoded字符串,根据binary.handling.mode连接器配置属性设置。

TINYBLOB

字节字符串

n /一个
原始字节(默认),一个base64编码的字符串,或hex-encoded字符串,根据binary.handling.mode连接器配置属性设置。

非常小的文本串

字符串

n /一个

字节字符串

n /一个
原始字节(默认),一个base64编码的字符串,或hex-encoded字符串,根据binary.handling.mode连接器配置属性设置。

文本

字符串

n /一个

MEDIUMBLOB

字节字符串

n /一个
原始字节(默认),一个base64编码的字符串,或hex-encoded字符串,根据binary.handling.mode连接器配置属性设置。

简单

字符串

n /一个

LONGBLOB

字节字符串

n /一个
原始字节(默认),一个base64编码的字符串,或hex-encoded字符串,根据binary.handling.mode连接器配置属性设置。

量变

字符串

n /一个

JSON

字符串

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

枚举

字符串

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

字符串

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

年[(2 | 4)]

INT32

io.开云体育官方注册网址debezium.time.Year

时间戳((M))

字符串

io.开云体育官方注册网址debezium.time.ZonedTimestamp
ISO 8601格式以微秒级精度。MySQL允许的范围0 - 6

时间类型

不包括时间戳数据类型,MySQL时间依赖的价值类型time.precision.mode连接器配置属性。为时间戳列的默认值被指定为CURRENT_TIMESTAMP现在,该值1970-01-01就是在卡夫卡作为默认值连接模式。

MySQL允许零值日期,日期时间,时间戳列,因为零值有时优于null值。MySQL连接器将零值表示为null值列定义允许空值时,或当时代的日子当列不允许空值。

没有时区的时间值

DATETIME类型代表当地的日期和时间,如“2018-01-13 09:48:27”。正如您可以看到的,没有时区信息。这些列转换成时代毫秒或微秒使用UTC基于列的精度。的时间戳类型代表没有时区的时间戳信息。它被转换的MySQL服务器(或会话)当前时区UTC当从UTC写作和到服务器(或会话)当前时区当阅读价值。例如:

  • DATETIME的价值2018-06-20 06:37:03就变成了1529476623000

  • 时间戳的价值2018-06-20 06:37:03就变成了2018 - 06 - 20 - t13:37:03z

这些列转化为一个等价的io.开云体育官方注册网址debezium.time.ZonedTimestamp在UTC基于服务器当前时区(或会话)。来自服务器的时区将查询默认情况下。如果失败,它必须显式地指定数据库开云体育电动老虎机serverTimezoneMySQL配置选项。例如,如果数据库时区(全球或连接器的配置开云体育电动老虎机serverTimezone“美国/ Los_Angeles”选项),时间戳值由“2018-06-20 06:37:03”ZonedTimestamp值“2018 - 06 - 20 t13:37:03z”。

运行的JVM的时区卡夫卡连接和Debezium并不影响这些转换。开云体育官方注册网址

更多细节属性termporal相关值的文档MySQL连接器配置属性

time.precision.mode = adaptive_time_microseconds(默认)

MySQL连接器决定了文本类型和语义类型基于列的数据类型定义,事件表示完全值在数据库中。开云体育电动老虎机时间字段都在微秒。只有积极的时间字段值的范围00:00:00.00000023:59:59.999999可以正确地捕获。

表9所示。映射时time.precision.mode = adaptive_time_microseconds
MySQL类型 文字类型 语义类型

日期

INT32

io.开云体育官方注册网址debezium.time.Date
代表时代以来的天数。

((M))

INT64

io.开云体育官方注册网址debezium.time.MicroTime
代表了时间价值以微秒为单位,不包括时区信息。MySQL允许的范围0 - 6

DATETIME, DATETIME (0) DATETIME (1) DATETIME DATETIME (2), (3)

INT64

io.开云体育官方注册网址debezium.time.Timestamp
代表了过去时代的毫秒数,不包括时区信息。

DATETIME DATETIME (4) (5), DATETIME (6)

INT64

io.开云体育官方注册网址debezium.time.MicroTimestamp
代表微秒过去时代的数量,不包括时区信息。

time.precision.mode =连接

卡夫卡连接逻辑类型定义的MySQL连接器使用。这种方法不如默认方法和精确的事件可能是不精确的,如果有一个数据库列开云体育电动老虎机精确到小数部分的第二的价值大于3。值的范围00:00:00.00023:59:59.999可以处理。集time.precision.mode =连接只有你可以确保时间表中的值不超过所支持的范围。的连接设置将被移除Debezium的未来版本。开云体育官方注册网址

表10。映射时time.precision.mode =连接
MySQL类型 文字类型 语义类型

日期

INT32

org.apache.kafka.connect.data.Date
代表时代以来的天数。

((M))

INT64

org.apache.kafka.connect.data.Time
代表自午夜微秒的时间价值,不包括时区信息。

DATETIME ((M))

INT64

org.apache.kafka.connect.data.Timestamp
代表时代以来的毫秒数,不包括时区信息。

十进制类型

开云体育官方注册网址Debezium连接器处理小数的设置decimal.handling.mode连接器配置属性

decimal.handling.mode =精确
表11所示。映射时decimal.handing.mode =精确
MySQL类型 文字类型 语义类型

数字((M [D]))

字节

org.apache.kafka.connect.data.Decimal
规模模式参数包含一个整数,表示小数点位数有多少发生了变化。

小数((M [D]))

字节

org.apache.kafka.connect.data.Decimal
规模模式参数包含一个整数,表示小数点位数有多少发生了变化。

decimal.handling.mode =双
表12。映射时decimal.handing.mode =双
MySQL类型 文字类型 语义类型

数字((M [D]))

FLOAT64

n /一个

小数((M [D]))

FLOAT64

n /一个

decimal.handling.mode =字符串
表13。映射时decimal.handing.mode =字符串
MySQL类型 文字类型 语义类型

数字((M [D]))

字符串

n /一个

小数((M [D]))

字符串

n /一个

布尔值

MySQL处理布尔内部价值在一个特定的方式。的布尔列映射到内部非常小的整数(1)数据类型。在创建表时,在流然后它使用适当的布尔映射Debezium接开云体育官方注册网址收原来的DDL。在快照,Debezium执行开云体育官方注册网址显示创建表获取返回的表定义非常小的整数(1)对于这两个布尔非常小的整数(1)列。开云体育官方注册网址Debezium则无法获取原始类型映射和地图非常小的整数(1)

操作员可以配置开箱即用TinyIntOneToBooleanConverter自定义转换器要么映射非常小的整数(1)布尔或者如果选择器参数设置然后使用逗号分隔列的一个子集可以枚举正则表达式。

下面是一个示例配置:

转换器=布尔boolean.type = io.debezium.co开云体育官方注册网址nnector.mysql.converters.TinyIntOneToBooleanConverter boolean.selector = db1.table1。*,db1.table2.column1

空间类型

目前,Debezium MyS开云体育官方注册网址QL连接器支持下面的空间数据类型。

表14。空间类型映射的描述
MySQL类型 文字类型 语义类型

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

结构体

io.开云体育官方注册网址debezium.data.geometry.Geometry
与两个字段包含一个结构:

  • srid (INT32:空间引用系统ID定义几何对象存储在结构的类型

  • wkb(字节):几何对象编码的二进制表示Well-Known-Binary (wkb)格式。看到开放地理空间的财团为更多的细节。

设置

需要一些MySQL设置任务才能安装和运行一个Debezium连接器。开云体育官方注册网址

创建一个用户

De开云体育官方注册网址bezium MySQL连接器需要MySQL用户帐户。这个MySQL用户必须有适当的权限Debezium MySQL连接器捕获的所有数据库更改。开云体育官方注册网址开云体育电动老虎机

先决条件
  • 一个MySQL服务器。

  • SQL命令的基本知识。

过程
  1. 创建MySQL用户:

    mysql >创建用户“用户”@“localhost”被“密码”;
  2. 授予用户所需的权限:

    mysql >格兰特选择、重载、显示数据库复制的奴隶,复制客户*。开云体育电动老虎机*“用户”被“密码”;

    下表描述了权限。

    如果使用托管选项,如Amazon RDS或亚马逊极光,不允许一个全球性的读锁,用于创建表级锁一致的快照。在这种情况下,您也需要资助锁表你创建的权限给用户。看到快照为更多的细节。
  3. 完成用户的权限:

    mysql >冲洗特权;
表15。用户权限的描述
关键字 描述

选择

使连接器从表在数据库中选择行。开云体育电动老虎机这是只执行一个快照时使用。

重新加载

使连接器的使用冲洗声明明确或重载内部缓存,平表,或获得锁。这是只执行一个快照时使用。

显示数据库开云体育电动老虎机

连接器可以看到数据库名称通过发行开云体育电动老虎机显示数据库开云体育电动老虎机声明。这是只执行一个快照时使用。

复制的奴隶

使连接器来连接和读取binlog MySQL服务器。

复制客户端

使连接器的使用以下语句:

  • 显示主状态

  • 显示奴隶状态

  • 显示二进制日志

连接器总是需要这个。

标识数据库的权限申请。开云体育电动老虎机

“用户”

指定用户授予权限。

被“密码”

指定用户的MySQL密码。

使binlog

你必须为MySQL复制启用二进制日志记录。二进制日志记录事务复制工具的更新传播的变化。

先决条件
  • 一个MySQL服务器。

  • 适当的MySQL用户权限。

过程
  1. 检查是否log-bin选择已经在:

    mysql >选择variable_value作为“二进制日志状态(log-bin)::“从information_schema。global_variables variable_name =“log_bin”;
  2. 如果它是,配置您的MySQL服务器配置文件使用以下属性,如下表中所描述的:

    服务器id = 223344 log_bin = mysql-bin binlog_format =行binlog_row_image =全expire_logs_days = 10
  3. 再次确认您的更改通过检查binlog状态:

    mysql >选择variable_value作为“二进制日志状态(log-bin)::“从information_schema。global_variables variable_name =“log_bin”;
表16所示。MySQL binlog配置属性的描述
财产 描述

服务器id

的值服务器id必须是唯一的MySQL集群中的每个服务器和复制客户端。在MySQL连接器设置,Debezium连接器服务器分配一个独开云体育官方注册网址一无二的ID。

log_bin

的价值log_bin的基本名称的顺序binlog文件。

binlog_format

binlog-format必须设置为

binlog_row_image

binlog_row_image必须设置为完整的完整的

expire_logs_days

这是自动的天数binlog文件删除。默认值是0,这意味着没有自动删除。设置值以匹配您的环境的需求。看到MySQL清洗binlog文件

使GTIDs

全局事务标识符(GTIDs)唯一地标识事务发生在集群服务器上。虽然不是所需Debezium MySQL连接器,使用开云体育官方注册网址GTIDs简化了复制和使您能够更容易地确认如果主数据网格和副本服务器是一致的。

GTIDs在MySQL 5.6.5后来。看到MySQL文档为更多的细节。

先决条件
  • 一个MySQL服务器。

  • SQL命令的基本知识。

  • 访问MySQL配置文件。

过程
  1. 启用gtid_mode:

    mysql > gtid_mode =
  2. 启用enforce_gtid_consistency:

    mysql > enforce_gtid_consistency =
  3. 确认更改:

    mysql >显示全局变量就像“% GTID %”;
结果
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + | Variable_name | | +价值- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + | enforce_gtid_consistency上| | | gtid_mode | | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
表17所示。GTID选项的描述
选项 描述

gtid_mode

布尔值,用于指定是否GTID MySQL服务器的模式是否启用。

  • =启用

  • =禁用

enforce_gtid_consistency

布尔值,用于指定是否服务器执行GTID一致性通过允许执行的语句,可以登录以事务安全的方式。需要使用GTIDs时。

  • =启用

  • =禁用

配置会话超时

当一个初始一致的快照是为大型数据库,建立连接超时,表被阅读。开云体育电动老虎机你可以通过配置防止这种行为interactive_timeoutwait_timeout在你的MySQL配置文件。

先决条件
  • 一个MySQL服务器。

  • SQL命令的基本知识。

  • 访问MySQL配置文件。

过程
  1. 配置interactive_timeout:

    mysql > interactive_timeout = < duration-in-seconds >
  2. 配置wait_timeout:

    mysql > wait_timeout = < duration-in-seconds >
表18。MySQL会话超时选项的描述
选项 描述

interactive_timeout

服务器等待的秒数活动在一个交互式连接前关闭它。看到MySQL的文档为更多的细节。

wait_timeout

服务器等待的秒数活动非交互式连接前关闭它。看到MySQL的文档为更多的细节。

启用查询日志事件

你可能想看到原件SQL声明为每个binlog事件。使binlog_rows_query_log_events选择在MySQL配置文件允许你这样做。

这个选项可以在MySQL 5.6和以后。

先决条件
  • 一个MySQL服务器。

  • SQL命令的基本心态。

  • 访问MySQL配置文件。

过程
  • 启用binlog_rows_query_log_events:

    mysql > binlog_rows_query_log_events =

    binlog_rows_query_log_events将一个值,启用/禁用支持包括原来的吗SQL声明binlog条目。

    • =启用

    • =禁用

部署

部署Debezium M开云体育官方注册网址ySQL连接器,安装Debezium MySQL连接器存档,配置连接器,并开始通过添加其配置卡夫卡连接连接器。

过程
  1. 下载Debezium开云体育官方注册网址MySQL连接器插件

  2. 将文件解压缩到卡夫卡连接环境中。

  3. 添加JAR文件的目录卡夫卡连接的plugin.path

  4. 配置连接器添加配置集群卡夫卡连接。

  5. 重新启动卡夫卡连接过程去接新的JAR文件。

如果你正在与不可变的容器,明白了开云体育官方注册网址Debezium集装箱的图片对于Apache管理员,Apache卡夫卡、MySQL和卡夫卡与MySQL连接器已经安装并准备运行。

MySQL连接器配置示例

下面是配置的一个示例连接器实例捕获数据在192.168.99.100从MySQL服务器在端口3306上,逻辑上我们的名字fullfillment。通常,您在JSON文件中配置Debezium MySQL连开云体育官方注册网址接器通过设置配置属性可用于连接器。

你可以选择生成事件的一个子集模式和表在数据库中。开云体育电动老虎机可选地,您可以忽略,面具,或包含敏感数据的截断列,超过指定的尺寸,或者你不需要。

{" name ": " inventory-connector”,(1)“配置”:{“连接器。class": "io.debezium.connector.mysql.MySqlConnector",(2)“开云体育电动老虎机数据库。主机名”:“192.168.99.100”,(3)“开云体育电动老虎机数据库。港”:“3306”,(4)“开云体育电动老虎机数据库。user": "debezium-user",(5)“开云体育电动老虎机数据库。密码”:“debeziu开云体育官方注册网址m-user-pw”,(6)“开云体育电动老虎机database.server。id”:“184054”,(7):开云体育电动老虎机“database.server.name fullfillment”,(8)“开云体育电动老虎机database.include。列表”:“库存”,(9)“开云体育电动老虎机database.history.kafka.bootstrap。服务器”:“卡夫卡:9092”,(10)“开云体育电动老虎机database.history.kafka。来pic": "dbhistory.fullfillment",(11)“include.schema。变化”:“真正的”(12)}}
1 连接器与卡夫卡连接服务注册时的名字。
2 连接器的类名。
3 MySQL服务器地址。
4 MySQL服务器端口号。
5 MySQL用户提供适当的特权。
6 MySQL用户的密码。
7 连接器的惟一ID。
8 MySQL服务器或集群的逻辑名称。
9 数据库由指定的服开云体育电动老虎机务器列表。
10 连接器的卡夫卡经纪人列表用来编写和恢复对数据库的DDL语句历史话题。开云体育电动老虎机
11 数据库历史主题的名称。开云体育电动老虎机这个话题是仅供内部使用,不应被消费者使用。
12 标记,用于指定连接器是否应该为DDL生成事件变化和释放他们实现模式改变话题,供消费者使用。

配置属性的完整列表,您可以设置Debezium MySQL连接器,明白了开云体育官方注册网址MySQL连接器配置属性

你可以发送这个配置帖子命令来运行卡夫卡连接服务。服务记录配置并启动一个连接器任务执行下列操作:

  • 连接到MySQL数据库。开云体育电动老虎机

  • 在捕获模式下读取更改数据表的表。

  • 流变化事件记录卡夫卡的话题。

添加连接器配置

开始运行MySQL连接器,连接器配置一个配置和配置添加到您的卡夫卡连接集群。

先决条件
过程
  1. 创建一个配置MySQL连接器。

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

结果

当连接器,它执行一个一致的快照连接器的MySQL数据库的开云体育电动老虎机配置。连接器然后开始生成数据行级操作的事件和流媒体改变事件记录,卡夫卡的话题。

连接器属性

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

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

表19。需要MySQL连接器配置属性
财产 默认的 描述

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

连接器的Java类的名称。总是指定io.开云体育官方注册网址debezium.connector.mysql.MySqlConnectorMySQL连接器。

1

的最大数量的任务应该创建连接器。MySQL连接器总是使用一个单一的任务,因此不使用这个值,所以默认总是可以接受的。

MySQL数据库服务器的IP地址或主机名。开云体育电动老虎机

3306年

整数MySQL数据库服务器的端口号。开云体育电动老虎机

MySQL用户时使用的名称连接到MySQL数据库服务器。开云体育电动老虎机

密码时使用连接到MySQL数据库服务器。开云体育电动老虎机

逻辑名,确定并提供一个名称空间的特定集群/ MySQL数据库服务器Debezium正在捕捉变化。开云体育官方注册网址开云体育电动老虎机逻辑名称应该是唯一的在所有其他连接器,因为它是所有卡夫卡主题名称作为前缀接收事件发出的这个连接器。只允许字母数字字符以及下划线在这个名字。

随机

这个数据库客户机的数字ID,它必须是唯一的开云体育电动老虎机所有当前运行在集群MySQL数据库的过程。这个连接器连接MySQL数据库集群作为另一台服务器(这个惟一的开云体育电动老虎机ID)所以它可以读取binlog。默认情况下,5400年和6400年之间的一个随机数生成,虽然建议是显式地设置一个值。

连接器的卡夫卡主题的全称存储数据库模式的历史。开云体育电动老虎机

一个主机/端口对列表,建立一个初始的连接器使用连接到卡夫卡集群。这个连接是用于检索以前存储的数据库模式历史连接器,写作和每个DDL语句从源数据开云体育电动老虎机库读取。每一对应该指向同一个卡夫卡集群卡夫卡所使用的连接过程。

空字符串

可选,以逗号分隔的正则表达式匹配的数据库的名称来捕捉变化。开云体育电动老虎机连接器不捕捉任何数据库的名字不在变化开云体育电动老虎机开云体育电动老虎机database.include.list。默认情况下,连接器捕获所有数据库的变化。开云体育电动老虎机不还开云体育电动老虎机database.exclude.list连接器confiuration财产。

空字符串

可选,以逗号分隔的正则表达式匹配数据库的名字,你不希望捕获变化。开云体育电动老虎机连接器捕捉任何数据库的变化,他的名字叫不在开云体育电动老虎机开云体育电动老虎机database.exclude.list。不还开云体育电动老虎机database.include.list连接器配置属性。

空字符串

一个可选,以逗号分隔的正则表达式匹配完全限定表标识符的表要捕捉变化。连接器不捕捉任何表不包含在变化table.include.list。每个标识符的形式开云体育电动老虎机数据库名的表。默认情况下,连接器捕捉变化在每一个非系统的表在每个数据库的更改被捕获。开云体育电动老虎机还不指定吗table.exclude.list连接器配置属性。

空字符串

一个可选,以逗号分隔的正则表达式匹配完全限定表标识符表你不希望捕获的变化。连接器捕捉任何表不包含在变化table.exclude.list。每个标识符的形式开云体育电动老虎机数据库名的表。还不指定吗table.include.list连接器配置属性。

空字符串

一个可选,以逗号分隔的正则表达式匹配的完全限定名称列从更改事件排除记录值。完全限定名称列的形式开云体育电动老虎机数据库名的表columnName

空字符串

可选,以逗号分隔的正则表达式匹配的完全限定名称列包含在变更事件记录值。完全限定名称列的形式开云体育电动老虎机数据库名的表columnName

n /一个

可选,以逗号分隔的正则表达式匹配的完全限定名称基于字符的列的值应该被截断在更改事件记录值字段值是否超过指定数量的字符。您可以配置多个属性具有不同的长度在一个配置。长度必须是一个正整数。完全限定名称列的形式开云体育电动老虎机数据库名的表columnName

n /一个

可选,以逗号分隔的正则表达式匹配的完全限定名称基于字符的列的值应该被替换更改事件消息值的字段值由指定数量的星号(*)字符。您可以配置多个属性具有不同的长度在一个配置。每个长度必须是一个正整数或零。完全限定名称列的形式开云体育电动老虎机数据库名的表columnName

n /一个

可选,以逗号分隔的正则表达式匹配的完全限定名称基于字符的列的值应该是假名在更改事件记录值。假名由散列值的获得的应用算法hashAlgorithm和盐

基于使用的哈希函数,引用完整性pseudonymized保存在数据。支持哈希函数的描述MessageDigest节Java加密体系结构标准算法名称的文档。散列结果自动缩短列的长度。

您可以配置多个属性具有不同的长度在一个配置。每个长度必须是一个正整数或零。完全限定名称列的形式开云体育电动老虎机数据库名的表columnName。例如:

column.mask.hash.sha with.salt——256.。CzQMA0cB5K = inventory.orders。customerName, inventory.shipment.customerName

CzQMA0cB5K是一个随机选择的盐。
根据配置的hashAlgorithm,选择的和实际数据集,由此产生的蒙面数据集可能不是完全匿名。

n /一个

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

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

__开云体育官方注册网址Debezium.source.column.length

__开云体育官方注册网址Debezium.source.column.scale

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

开云体育电动老虎机数据库名的表columnName

开云体育电动老虎机数据库名schemaName的表columnName

n /一个

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

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

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

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

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

开云体育电动老虎机数据库名的表typeName

开云体育电动老虎机数据库名schemaName的表typeName

看到MySQL连接器如何映射数据类型对于mysql数据类型名称的列表。

adaptive_time_microseconds

时间、日期和时间戳可以代表不同的精度,包括:

adaptive_time_microseconds(默认)抓住了日期,日期时间和时间戳值在数据库中一样使用毫秒、微秒,或者基于数据库列的纳秒精度值类型,除了时间类型字段,它总是捕获为微秒。开云体育电动老虎机

自适应(弃用)捕获时间和时间戳值在数据库中一样使用毫秒、微秒或纳秒精度值基于数据库列的类型。开云体育电动老虎机

连接总是代表着时间和时间戳值使用卡夫卡连接的内置表示时间、日期和时间戳,使用毫秒精度无论数据库列的精度。开云体育电动老虎机

精确的

指定连接器应如何处理的值小数数字列:

精确的(默认)代表他们精确地使用java.math.BigDecimal价值观在改变事件在一个二进制形式表示。

代表他们使用值,这可能会导致丧失精度,而且更容易使用。

字符串编码值格式化的字符串,这很容易消耗但语义信息真正的类型。

指定应该如何在长整型数字符号列更改事件。可能的设置:

通过使用Java的代表值可能不提供精确,但在消费者很容易使用。通常是首选的设置。

精确的使用java.math.BigDecimal代表值,通过使用二进制编码在改变事件表示和卡夫卡的连接org.apache.kafka.connect.data.Decimal类型。使用这个设置在处理值大于2 ^ 63年,因为不能转达了通过使用这些值

真正的

布尔值,用于指定连接器是否应该发布数据库模式的变化到卡夫卡的主题名称相同的数据库服务器ID。每个模式变化记录通过使用一个键包含的数据库名称和值包括DDL语句(年代开云体育电动老虎机)。这是独立的连接器内部数据库历史记录。开云体育电动老虎机

布尔值,用于指定连接器是否应该包括原始SQL查询生成更改事件。

如果您设置这个选项真正的那么你也必须配置MySQL的binlog_rows_query_log_events选项设置为。当include.query真正的,查询不存在的事件快照生成过程。

设置include.query真正的可能暴露表或字段明确排除或掩饰了包括原始SQL语句更改事件。出于这个原因,默认设置

失败

在反序列化指定连接器应该如何应对异常binlog事件。

失败传播例外,这表明问题事件及其binlog抵消,并导致连接器停下来。

警告记录有问题的事件及其binlog抵消,然后跳过事件。

跳过通过问题的事件,不记录任何东西。

失败

指定连接器应该如何应对binlog事件与表中没有的内部模式表示。即内部表示不与数据库一致。开云体育电动老虎机

失败抛出一个异常,指示有问题的事件及其binlog抵消,并导致连接器停下来。

警告记录有问题的事件及其binlog抵消和跳过了事件。

跳过通过问题的事件,不记录任何东西。

8192年

正整数的值指定的阻塞队列的最大大小改变事件从数据库读取日志放置之前写入卡夫卡。开云体育电动老虎机这个队列可以提供反压力binlog读者时,例如,写入卡夫卡是缓慢或者卡夫卡是不可用的。事件出现在队列中不包括补偿定期记录下这个连接器。默认为8192,应该总是大于指定的最大批量大小max.batch.size财产。

2048年

正整数的值指定的最大大小每一批处理的事件,应该在每个迭代的连接器。默认为2048。

0

长值阻塞队列的最大大小的字节。功能默认是禁用的,它将与一个积极的活动如果是集长值。

1000年

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

30000年

一个正整数的值指定该连接器应该等待的最长时间,以毫秒为单位后试图连接到MySQL数据库服务器超时。开云体育电动老虎机默认为30秒。

一个以逗号分隔的正则表达式匹配源uuid GTID集中用于查找binlog MySQL服务器位置。只有GTID范围有相匹配的其中一个来源包括使用模式。还不指定设置gtid.source.excludes

一个以逗号分隔的正则表达式匹配源uuid GTID集中用于查找binlog MySQL服务器位置。只有GTID范围,资源不匹配任何这些排除使用模式。还不指定一个值gtid.source.includes

gtid.new.channel.position
弃用,定于切除

最早的

当设置为最新的,当连接器看到一个新的GTID通道,它从去年开始使用事务在执行GTID通道。如果设置为最早的(默认),连接器开始阅读,从第一个可用通道(不清除)GTID位置。最早的是有用的,当你有一个主动-被动MySQL安装Debezium连接到主服务器。开云体育官方注册网址在这种情况下,故障转移期间,复制新的UUID (GTID频道)开始接受Debezium连接前写道。开云体育官方注册网址这些写将失去在使用最新的

真正的

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

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

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

源记录被删除后,发射一个墓碑事件(默认行为)允许卡夫卡完全删除所有事件有关的关键行删除。

n /一个

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

单独的条目分号。之间插入一个结肠完全限定表名和它的正则表达式。(仅显示与空间清晰)的格式是:

开云体育电动老虎机数据库名称表名:正则表达式;

例如:

dbA.table_a: regex_1; dbB.table_b: regex_2; dbC.table_c: regex_3

如果table_a有一个id列,regex_1^我(匹配任何列开始),连接器映射中的值id列的table_a关键字段的更改事件连接器发送卡夫卡。

字节

例如,指定如何二进制列,二进制,varbinary应该在更改事件。可能的设置:

字节将二进制数据表示为一个字节数组。

base64将二进制数据表示为一个base64编码的字符串。

十六进制代表二进制数据作为hex-encoded (base16)字符串。

先进的MySQL连接器配置属性

下面的表描述高级MySQL连接器属性。这些属性的默认值很少需要更改。因此,您不需要指定连接器配置。

表20。MySQL连接器先进的配置属性的描述
财产 默认的 描述

真正的

一个布尔值,用于指定是否应该使用一个单独的线程,以确保连接到MySQL服务器/集群保持活着。

真正的

一个布尔值,用于指定内置系统表是否应该被忽略。这适用于无论表包括和排除列表。默认情况下,系统表被排除在自己改变了,和没有任何事件发生更改时,将生成系统表。

One hundred.

一个整数值,它指定的最大数量毫秒连接器应该等待在启动/恢复,同时为持久化数据轮询。默认是100 ms。

4

连接器的最大次数应该尝试读取保存历史数据连接器之前恢复失败的错误。最大的时间等待后没有数据recovery.attemptsxrecovery.poll.interval.ms

一个布尔值,用于指定连接器是否应该忽略畸形或未知的数据库语句或停止处理,所以人类可以解决这个问题。开云体育电动老虎机安全默认是。不应该只有小心使用,因为它会导致数据丢失或矫直时binlog正在处理。

一个布尔值,用于指定连接器是否应该记录所有DDL语句

真正的只记录那些变化的相关表的DDL语句被Debezium捕获。开云体育官方注册网址设置为真正的小心因为缺失的数据可能成为必要的如果你改变哪些表变化捕获。

安全默认是

禁用

指定是否使用一个加密连接。可能的设置:

禁用指定的使用未加密的连接。

首选建立一个加密的连接如果服务器支持安全连接。如果服务器不支持安全连接,回落到一个未加密的连接。

要求建立一个加密的连接或失败如果不能为任何理由。

verify_ca表现得像要求但此外TLS验证服务器证书根据配置的证书颁发机构(CA)证书和失败如果服务器TLS证书不匹配任何有效的CA证书。

verify_identity表现得像verify_ca但另外验证服务器证书匹配主机的远程连接。

0

有预见性的缓冲区的大小binlog读者使用。默认设置的0禁用缓冲。

在特定的条件下,有可能是MySQL binlog包含未提交的数据完成的回滚声明。典型的例子是使用保存点或混合临时和常规表的变化在一个事务。

当检测到一个事务开始Debezium试图滚binlog位置和发现开云体育官方注册网址提交回滚所以它可以确定从事务流的变化。binlog缓冲区的大小定义的最大数量的变化事务Debezium可以缓冲,同时寻找事务边界。开云体育官方注册网址如果事务大于缓冲区的大小然后Debezium必须倒带和重读的事件还没有适应缓冲而流。开云体育官方注册网址

注意:此功能是孵化。反馈是鼓励。预计这个特性并非完全抛光。

最初的

指定的标准运行连接器开始时一个快照。可能的设置:

最初的——连接器运行快照只有当没有记录补偿逻辑服务器的名称。

when_needed——连接器运行快照启动时只要它认为有必要。当没有补偿,或者当一个先前记录的偏移指定binlog位置或GTID服务器不可用。

从来没有——连接器从未使用快照。在第一次启动逻辑服务器名称,连接器binlog读取从一开始。配置这个行为。它是有效的只有当binlog保证包含数据库的整个历史。开云体育电动老虎机

schema_only——连接器运行模式,而不是数据的快照。这个设置是非常有用的,当你不需要的主题包含的一个一致的快照数据但需要他们只有连接器开始以后的更改。

schema_only_recovery——这是一个恢复设置连接器已经捕捉变化。当你重新启动连接器,该设置可以恢复数据库损坏或丢失的历史主题。开云体育电动老虎机你可能把它定期“清理”数据库历史话题,意外增长。开云体育电动老虎机开云体育电动老虎机数据库历史主题需要无限的保留。

最小的

控制是否和全球MySQL连接器持有多久读锁,防止任何更新到数据库,在连接器执行快照。开云体育电动老虎机可能的设置:

最小的——连接器只持有全球读锁快照中连接器的初始部分读取数据库模式和其他元数据。开云体育电动老虎机剩下的工作涉及选择快照从每个表的所有行。连接器可以以一致的方式使用一个可重复读事务。是这种情况即使全球读锁不再持有MySQL和其他客户正在更新数据库。开云体育电动老虎机

minimal_percona——连接器持有全局备份锁只有快照中连接器的初始部分读取数据库模式和其他元数据。开云体育电动老虎机剩下的工作涉及选择快照从每个表的所有行。连接器可以以一致的方式使用一个可重复读事务。是这种情况即使全局备份锁不再举行MySQL和其他客户正在更新数据库。开云体育电动老虎机这种模式不表刷新到磁盘,不是被长期阅读,只在Percona服务器是可用的。

扩展——块期间写的快照。使用此设置如果有客户从可重复读取提交操作MySQL不包括语义。

没有一个——防止连接器收购任何表锁在快照。虽然这个设置是允许所有快照模式,它的使用是安全的,如果和只有如果没有快照运行时模式变化正在发生。与MyISAM引擎定义的表,表仍将被锁定,尽管这个属性被设置为MyISAM表获得锁。这种行为与InnoDB引擎获得行级锁。

所有表中指定table.include.list

一个可选,以逗号分隔的正则表达式匹配模式中指定的名称table.include.list想要快照。

控制哪些表行包含在快照。这个属性只影响快照。它不影响事件从binlog捕获。指定一个以逗号分隔的完全限定表名的形式开云体育电动老虎机databaseName.tableName

还为每个表指定,指定另一个配置属性:snapshot.select.statement.overrides。DB_NAMETABLE_NAME。例如,其他的配置属性的名称可能是:snapshot.select.statement.overrides.customers.orders。设置该属性选择声明,只得到你想要的行快照。当连接器执行快照,它执行选择语句表检索数据。

可能的用例设置这些属性很大,只能添加表。您可以指定一个选择声明中设置一个特定的点从哪里开始一个快照,或者恢复快照如果之前的快照被打断。

1000年

在一个快照,每个表的连接查询连接器配置为捕捉变化。连接器使用每个查询结果产生一个包含数据读取事件表的所有行。这个属性决定了MySQL连接器将结果表到内存,速度快,但需要大量的内存,或流结果,可以慢,但工作非常大的表。这个属性指定的设置至少一个表的行数必须包含连接器之前流的结果。

跳过所有表大小检查和结果总是流在一个快照,设置该属性0

0

控制频率连接器发送心跳消息到卡夫卡的主题。默认行为是连接器不发送心跳消息。

心跳消息是有用的监测从数据库连接器是否接受更改事件。开云体育电动老虎机心跳消息可能有助于减少更改事件的数量时,需要发送一个连接器将重新启动。发送心跳消息,将此属性设置为一个正整数,这表明心跳消息之间的毫秒数。

__开云体育官方注册网址debezium-heartbeat

控件的名称连接器发送心跳消息的主题。主题名称有这种模式:

heartbeat.topics.prefixserver.name

例如,如果数据库服务器名称开云体育电动老虎机实现,默认的主题名称__开云体育官方注册网址debezium-heartbeat.fulfillment

分号分隔的SQL语句执行JDBC连接时,不读事务日志的连接,建立了数据库。开云体育电动老虎机指定一个分号字符在一个SQL语句,而不是作为一个分隔符,使用两个分号,(;;)。

连接器可能建立JDBC连接自己的自由裁量权,所以这个属性只是配置会话参数。它不是为执行DML语句。

以毫秒为单位间隔,连接器之前应该等待连接器启动时执行一个快照。如果你开始集群中的多个连接器,这个属性是有用的为避免快照中断,这可能导致连接器的调整。

在一个快照,连接器批量读取表内容的行。这个属性指定批处理的最大行数。

10000年

正整数指定最大的时间(以毫秒为单位)等来获取表锁在执行一个快照。如果连接器不能获得表锁在这个时间间隔,快照就会失败。看到MySQL连接器执行数据库快照吗开云体育电动老虎机

真正的

布尔值,用于显示连接器将两位年规范转换为4位数。设置为当转换是完全委托给数据库。开云体育电动老虎机

MySQL允许用户插入值和2数字或重复速率。对于便是值,这个值映射到一年范围1970 - 2069。默认行为是连接器的转换。

v2

模式的版本块Debezium开云体育官方注册网址事件。开云体育官方注册网址Debezium 0.10引入了一些打破的结构变化块为了统一所有连接器接触结构。

通过设置这个选项v1早期版本中使用的结构可以生产。然而,这个设置不推荐,并计划在未来Debezium删除版本。开云体育官方注册网址

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

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

以逗号分隔的操作类型中跳过流。下面的值:c插入/创建、u的更新,d删除。默认情况下,不跳过操作。

直通配置属性

MySQL连接器还支持使用直通配置属性在创建卡夫卡生产国和消费国。具体地说,所有从连接器配置属性开云体育电动老虎机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

看到卡夫卡的文档更多的细节直通属性。

直通属性数据库驱动程序开云体育电动老虎机

除了直通属性卡夫卡生产国和消费国,直通属性数据库驱动程序开云体育电动老虎机。这些属性的开云体育电动老虎机数据库。前缀。例如,开云体育电动老虎机database.tinyInt1isBit = false传递给JDBC URL。

监控

Debe开云体育官方注册网址zium MySQL连接器提供了三种类型的指标,除了动物园管理员的内置支持JMX的度量,卡夫卡,卡夫卡提供连接。

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

快照指标

MBean开云体育官方注册网址debezium.mysql: type = connector-metrics上下文=快照,server =<开云体育电动老虎机 database.server.name >

属性 类型 描述

字符串

读过的最后一个快照事件连接器。

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

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

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

string []

表的列表所监控的连接器。

int

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

int

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

int

表的总数被包含在快照。

int

表的数量尚未复制快照。

布尔

快照是否开始。

布尔

快照是否中止。

布尔

快照是否完成。

总秒数,快照到目前为止,即使不完整。

Map < String,长>

地图包含扫描的行数为每个表的快照。表在处理过程中也逐渐被添加到地图。更新一个表扫描并完成每10000行。

的最大缓冲区队列以字节为单位。这将是如果启用max.queue.size.in.bytes传递积极的长期价值。

当前数据字节的记录在队列中。

Debe开云体育官方注册网址zium MySQL连接器也提供了HoldingGlobalLock自定义度量快照。这个指标被设置为一个布尔值来指示连接器目前持有全球或表写锁。

Binlog指标

MBean开云体育官方注册网址debezium.mysql: type = connector-metrics、上下文= binlo开云体育电动老虎机g服务器= < database.server.name >

Transaction-related属性可用只有binlog事件启用缓冲。看到binlog.buffer.size先进的连接器配置属性的更多细节。

属性 类型 描述

字符串

过去的流事件连接器已经阅读。

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

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

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

string []

表的列表所监控的连接器。

int

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

int

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

布尔

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

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

处理事务的数量。

Map < String, String >

去年收到事件的坐标。

字符串

事务标识符的处理事务。

的最大缓冲区队列以字节为单位。

当前数据字节的记录在队列中。

Debe开云体育官方注册网址zium MySQL连接器还提供定制binlog指标如下:

表21。自定义的描述binlog指标
属性 类型 描述

BinlogFilename

字符串

binlog文件的名称,连接器最近阅读。

BinlogPosition

最近的位置(以字节为单位)内binlog连接器已经阅读。

IsGtidModeEnabled

布尔

国旗,表示是否连接器目前跟踪GTIDs从MySQL服务器。

GtidSet

字符串

的字符串表示最近GTID设置阅读binlog时处理的连接器。

NumberOfSkippedEvents

事件的数量已经跳过的MySQL连接器。事件通常跳过由于畸形或从MySQL的binlog unparseable事件。

NumberOfDisconnects

MySQL连接器断开连接的数量。

NumberOfRolledBackTransactions

的数量处理事务被回滚,不流。

NumberOfNotWellFormedTransactions

交易的数量不符合预期的协议开始+提交/回滚。这个值应该是0在正常情况下。

NumberOfLargeTransactions

交易的数量并没有融入先行的缓冲区。为获得最佳性能,应显著小于这个值NumberOfCommittedTransactionsNumberOfRolledBackTransactions

模式历史指标

MBean开云体育官方注册网址debezium.mysql: type = connector-metrics、上下文= schema-history服务器=<开云体育电动老虎机 database.server.name >

属性 类型 描述

字符串

之一停止,恢复(恢复历史存储),运行描述了历史数据库的状态。开云体育电动老虎机

时间在时代秒复苏已经开始。

的数量变化,阅读在复苏阶段。

模式变化的总数在复苏和运行时应用。

后经过的毫秒数,最后从历史存储变化是恢复。

后经过的毫秒数,最后应用改变。

字符串

最后变化的字符串表示从历史存储中恢复过来。

字符串

最后应用变化的字符串表示。

当事情出错的行为

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

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

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

配置和启动错误

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

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

  • 连接器不能成功地连接到MySQL服务器通过使用指定的连接参数。

  • 连接器试图重启在MySQL的binlog位置不再有可用的历史。

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

MySQL变得不可用

如果你的MySQL服务器变得不可用,那么Debezium MySQL连接器失败与错误和连接器开云体育官方注册网址停止。当服务器可用,重新启动连接器。

然而,如果启用了GTIDs MySQL集群高可用性,您可以立即重新启动连接器。它将连接到另一个集群中的MySQL服务器,在服务器的binlog找到位置,代表过去的事务,并开始阅读新服务器的binlog从特定的位置。

如果不启用,GTIDs连接器只记录的binlog位置的MySQL服务器连接。从正确的重新启动binlog位置,你必须重新连接到特定服务器。

卡夫卡连接停止优雅

当卡夫卡连接停止优雅,有一个短暂的延迟而Debezium MySQL连接器任务停止并重新启动新的卡夫卡连接过程。开云体育官方注册网址

卡夫卡连接过程崩溃

如果卡夫卡连接崩溃了,这个过程停止,任何Debezium MySQL连接器任务终止没有他们最最近处理补偿开云体育官方注册网址被记录。在分布式模式中,卡夫卡在其他进程重启连接器连接任务。然而,MySQL连接器简历上次抵消之前记录的过程。这意味着更换任务可能产生一些相同的事件处理事故前,创建重复的事件。

每个更改数据源特定事件消息包括信息,您可以使用它们来识别重复的事件,例如:

  • 事件的起源

  • MySQL服务器的事件时间

  • binlog文件名和位置

  • GTIDs(如果使用)

卡夫卡变得不可用

卡夫卡连接框架Debezium改变事件记录在卡夫卡通过卡夫卡生产商API开云体育官方注册网址。如果卡夫卡经纪人不可用,Debezium MySQL连接器停顿,直到连接重建和连接器的简历开云体育官方注册网址。

MySQL清洗binlog文件

如果Debez开云体育官方注册网址ium MySQL连接器停止太长时间,MySQL服务器清洗旧binlog文件和连接器的最后位置可能会丢失。当重新启动连接器,MySQL服务器不再有起点和连接器执行另一个初始快照。如果快照是禁用的,连接器失败的错误。

看到快照详情如何MySQL连接器执行初始快照。