开云体育官方注册网址Debezium为MySQL连接器
MySQL有二进制日志(binlog)记录所有操作的顺序提交到数据库。开云体育电动老虎机这包括表模式的变化以及变化的数据表。MySQL使用binlog复制和恢复。
Debe开云体育官方注册网址zium MySQL连接器读取binlog,为行级别发生变化的事件插入
,更新
,删除
操作,并发出更改事件卡夫卡的话题。客户端应用程序读卡夫卡的话题。
MySQL是通常设置清洗binlogs指定时间后,MySQL连接器执行初始一致的快照你的每一个数据库。开云体育电动老虎机MySQL连接器读取binlog从快照的。
MySQL数据库信息版本兼容这个连接器,看到开云体育电动老虎机开云体育官方注册网址Debezium释放概述。
连接器是如何工作的
概述的MySQL拓扑连接器支持计划是有用的应用程序。优化配置并运行一个Debezium MySQL连接器,它有助于了解开云体育官方注册网址连接器跟踪表的结构,使模式变化,执行快照,并确定卡夫卡主题名称。
Debe开云体育官方注册网址zium MySQL连接器与MariaDB还有待检验,但多个社区的报告显示成功使用这个数据库的连接器。开云体育电动老虎机官方支持MariaDB计划在未来Debezium版本。开云体育官方注册网址 |
支持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语句的位置binlog每个DDL语句出现的地方。
当连接器重启后坠毁或被优雅地停了下来,开始阅读binlog连接器从一个特定的位置,也就是说,从一个特定的时间点。连接器的表结构重建存在在这个时间点通过阅读数据库模式历史卡夫卡和解析所有DDL语句话题点binlog连接器在哪里开始。开云体育电动老虎机
这个数据库开云体育电动老虎机模式的历史主题是仅供连接器使用。连接器可以选择排放模式更改事件到一个不同的主题,是为消费者应用程序。
MySQL连接器时捕捉变化的表模式改变等工具gh-ost
或pt-online-schema-change
应用,有辅助表在迁移过程中创建的。连接器需要配置为捕获改变这些辅助表。如果消费者不需要辅助表的生成记录,那么一个消息变换可用于过滤出来。
有关更多信息,请参见缺省名称为主题接收Debezium事件记开云体育官方注册网址录。
模式改变话题
您可以配置一个Debezium MySQ开云体育官方注册网址L连接器生产模式更改事件描述模式变化应用于捕获数据库中的表。开云体育电动老虎机连接器写模式更改事件卡夫卡主题命名< topicPrefix >
,在那里topicPrefix
中指定的名称空间吗topic.prefix
连接器配置属性。连接器的消息发送模式改变主题包含负载,可选地,也包含模式的改变事件消息。
模式变化的负载事件消息包括以下要素:
-
ddl
-
提供了SQL
创建
,改变
,或下降
模式中声明,结果的变化。 -
开云体育电动老虎机数据库名
-
数据库的名称应用的DDL语句。开云体育电动老虎机的价值
开云体育电动老虎机数据库名
作为关键的消息。 -
pos
-
出现的位置在binlog语句。
-
tableChanges
-
整个表的结构化表示模式后改变。的
tableChanges
字段包含一个数组,包括表的每一列的条目。因为JSON或Avro的结构化表示了数据格式,消费者可以很容易地读取消息没有首先通过DDL解析器处理它们。
表是在捕获模式下,不仅连接器商店模式的变化模式变化的历史主题,而且在一个内部数据库模式的历史主题。开云体育电动老虎机内部数据库模式的历史主题是开云体育电动老虎机连接器只使用,不用于直接消费应用程序使用。确保应用程序只需要通知关于消费模式变化信息的模式改变话题。 |
没有分区数据库模式的历史主题。开云体育电动老虎机数据库模式的历史开云体育电动老虎机主题功能正确,必须保持一致的全球秩序连接器发出的事件记录。 确保主题不是分配给分区,设置分区数为主题通过使用下列方法之一:
|
连接器的消息的格式发出其模式改变话题是在酝酿状态和可随时更改,不另行通知。 |
下面的示例显示了一个典型的模式改变消息以JSON格式。消息包含一个表模式的逻辑表示。
{"模式":{},“有效载荷”:{“源”:{(1)“版本”:“tripwire。最后”、“连接器”:“mysql”、“名称”:“mysql”、“ts_ms”: 1651535750218,(2)“快照”:“false”,“分贝”:“库存”、“序列”:空,“表”:“客户”、“server_id”: 223344年,“gtid”:空,“文件”:“mysql-bin。000003”、“pos”: 570年,“行”:0,“线程”:空,“查询”:零},“数据库名”:“库存”,开云体育电动老虎机(3)“schemaName”:空,“ddl”:“ALTER TABLE客户first_name之后添加middle_name varchar (255)”,(4)“tableChanges”:((5){“类型”:“改变”,(6)“id”:“\”客户库存\”,\“\”,(7)"表":{(8):“defaultCharsetName utf8mb4”、“primaryKeyColumnNames”:((9)“id”],“列”:[(10){" name ": " id ",“jdbcType”: 4,“nativeType”:空,“typeName”:“INT”、“typeExpression”:“INT”、“charsetName”:空,“长度”:空,“规模”:空,“位置”:1、“可选”:假的,“自动增量”:真的,“生成”:真正的},{“名称”:“first_name”,“jdbcType”: 12日“nativeType”:空,“typeName”:“VARCHAR”、“typeExpression”:“VARCHAR”、“charsetName”:“utf8mb4”、“长度”:255年,“规模”:空,“位置”:2,“可选”:假的,“自动增量”:假的,“生成”:假},{“名称”:“middle_name”,“jdbcType”: 12日“nativeType”:空,“typeName”:“VARCHAR”、“typeExpression”:“VARCHAR”、“charsetName”:“utf8mb4”、“长度”:255年,“规模”:空,“位置”:3,“可选”:真的,“自动增量”:假的,“生成”:假},{“名称”:“last_name”,“jdbcType”: 12日“nativeType”:空,“typeName”:“VARCHAR”、“typeExpression”:“VARCHAR”、“charsetName”:“utf8mb4”、“长度”:255年,“规模”:空,“位置”:4,“可选”:假的,“自动增量”:假的,“生成”:假},{“名称”:“电子邮件”、“jdbcType”: 12日“nativeType”:空,“typeName”:“VARCHAR”、“typeExpression”:“VARCHAR”、“charsetName”:“utf8mb4”、“长度”:255年,“规模”:空,“位置”:5,“可选”:假的,“自动增量”:假的,“生成”:假}],“属性”:[(11){“customAttribute”:“attributeValue”}]}}]}}
项 | 字段名 | 描述 |
---|---|---|
1 |
|
的 |
2 |
|
可选字段显示的时间连接器处理事件。基于系统时钟的时间是在JVM中运行卡夫卡连接任务。 在源对象,ts_ms表示的时间更改到数据库中。开云体育电动老虎机通过比较payload.source的值。ts_ms载荷的值。ts_ms,you can determine the lag between the source database update and Debezium. |
3 |
|
标识包含的数据库和模式的变化。开云体育电动老虎机的值 |
4 |
|
该字段包含负责模式变化的DDL。的 |
5 |
|
一个或多个数组项包含一个DDL命令生成的模式变化。 |
6 |
|
描述的那种变化。价值是下列之一:
|
7 |
|
创建的表的完整标识符,修改或删除。对于表重命名,这个标识符是一个连接的 |
8 |
|
代表表元数据应用后改变。 |
9 |
|
列表的列组成表的主键。 |
10 |
|
改变表中的每一列的元数据。 |
11 |
|
自定义属性为每个表元数据变化。 |
有关更多信息,请参见模式的历史话题。
快照
Debeziu开云体育官方注册网址m MySQL连接器是刚开始的时候,它执行一个初始一致的快照你的数据库。开云体育电动老虎机以下流程描述了连接器创建快照。这个流为默认快照模式最初的
。其他快照模式的信息,请参阅MySQL连接器snapshot.mode
配置属性。
一步 | 行动 |
---|---|
1 |
抓住一个全球读锁块写被其他客户数据库。开云体育电动老虎机 |
2 |
开始一个事务可重复读取语义,以确保所有后续读取在事务完成的一致的快照。 |
3 |
读取当前binlog位置。 |
4 |
读取模式的数据库和表连接器配置为捕捉变化。开云体育电动老虎机 |
5 |
释放全局读锁。其他数据库的开云体育电动老虎机客户现在可以写入数据库。 |
6 |
DDL写道,如果适用的变化模式改变的话题,包括所有必要的 |
7 |
扫描数据库表。开云体育电动老虎机对于每一行,连接器发出 |
8 |
提交事务。 |
9 |
连接器补偿记录完成的快照。 |
- 连接器重启
-
如果连接失败,停止,或者是重新平衡,同时执行初始快照连接器重启之后,那么,它执行一个新的快照。在那之后开始快照完成后,重启Debezium MyS开云体育官方注册网址QL连接器从同一位置binlog所以不会错过任何更新。
如果连接器停留足够长的时间,MySQL可以清除旧的binlog文件和连接器的位置将会丢失。如果这个职位如有遗失,连接器回归正常初始快照它的起始位置。故障排除Debezium MySQL连接器的更多提示,看到的开云体育官方注册网址当事情出错的行为。
- 全球读取锁不允许的
-
某些环境中不允许全球读锁。如果Debez开云体育官方注册网址ium MySQL连接器检测到全球不允许读锁,连接器使用的表级锁而不是用这种方法并执行一个快照。这需要的数据库用户Debezium连开云体育电动老虎机接器开云体育官方注册网址
锁表
特权。表3。工作流执行初始快照和表级锁 一步 行动 1
获得表级锁。
2
开始一个事务可重复读取语义,以确保所有后续读取在事务完成的一致的快照。
3
读取和过滤器的数据库和表的名称。开云体育电动老虎机
4
读取当前binlog位置。
5
读取模式的数据库和表连接器配置为捕捉变化。开云体育电动老虎机
6
DDL写道,如果适用的变化模式改变的话题,包括所有必要的
下降…
和创建…
DDL语句。7
扫描数据库表。开云体育电动老虎机对于每一行,连接器发出
创建
事件相关table-specific卡夫卡的话题。8
提交事务。
9
释放表级锁。
10
连接器补偿记录完成的快照。
特别的快照
默认情况下,一个连接器运行初始快照操作之后才开始第一次。这个初始快照后,在正常情况下,连接器不重复快照过程。未来的任何更改事件的数据连接器捕捉只通过流过程。
然而,在某些情况下获得的数据连接器在初始快照可能变得陈旧,丢失,或不完整的。为重新夺回表数据提供一种机制,Debezium包括一个选项来执行特定的快照。开云体育官方注册网址以下更改数据库中可能导致执行一个特设快照:开云体育电动老虎机
连接器配置修改捕获一组不同的表。
卡夫卡主题删除,必须重建。
数据损坏发生由于配置错误或者其他问题。
你可以重新运行你的快照表之前启动一个所谓的捕获快照特别的快照。特别的快照的使用要求信号表。你发起一个特设快照通过发送一个信号请求Debezium信号表。开云体育官方注册网址
当你启动一个特设现有表的快照,连接器附加内容的主题已经存在的表。如果以前现有主题是移除,Debezium可以自动创建一个主题开云体育官方注册网址自动主题创建启用。
特设快照信号中包含指定表快照。快照可以捕捉数据库的全部内容,或者只捕获数据库中的表的一个子集。开云体育电动老虎机此外,快照可以捕获的一个子集表的内容(s)在数据库中。开云体育电动老虎机
您指定的表来捕获通过发送一个execute-snapshot
信息信号表。设置的类型execute-snapshot
信号增量
,并提供表的名称中包含快照,下表中描述:
场 | 默认的 | 价值 |
---|---|---|
|
|
指定类型的快照,你想要运行。 |
|
N /一个 |
一个数组,其中包含正则表达式匹配表的完全限定名称快照。 |
|
N /一个 |
一个可选的字符串,它指定一个条件基于表的列(s) (s),捕获的内容表的一个子集(年代)。 |
|
N /一个 |
一个可选的字符串,指定的列名连接器使用的主键表快照过程中。 |
你发起一个特设的快照通过添加一个条目execute-snapshot
信号类型的信号表。连接器处理消息之后,它开始快照操作。快照过程读取第一个和最后一个主键值,并使用这些值为每个表的开始和结束点。根据表中的条目的数量,和配置的块大小,Debezium把表分成块,每个块和收益快照,在继承,一次一个。开云体育官方注册网址
增量快照
快照管理上提供了很大的灵活性,Debezium包括补充快照机制,称为开云体育官方注册网址增量快照。增量快照依靠Debezium机制开云体育官方注册网址Debezium连接器发送信号开云体育官方注册网址。基于增量快照DDD-3设计文档。
在增量快照,而不是捕捉数据库的完整状态,在一个初始快照,Debezium捕捉每个表的阶段,在一系列的配置块。开云体育官方注册网址开云体育电动老虎机你可以指定表的快照捕获和每个数据块的大小。块大小确定的行数的快照收集在每个提取操作数据库。开云体育电动老虎机默认增量快照块大小为1024行。
作为一个增量快照,Debezium使用水印追踪其进展,保持每个表的记录行,开云体育官方注册网址它捕获。分阶段方法捕获数据提供了以下优势标准初始快照过程:
您可以运行增量快照与流数据获取,而不是推迟直到快照完成流媒体。连接器继续捕获实时事件从快照过程中更改日志,也操作模块。
如果中断增量快照的进步,你可以恢复它而不会丢失任何数据。流程简历后,快照开始时它不禁停了下来,而不是重新夺回表从一开始。
您可以运行一个增量快照随时点播,并根据需要重复这个过程适应数据库更新。开云体育电动老虎机例如,您可以重新运行快照后修改连接器配置向其添加一个表
table.include.list
财产。
当您运行一个增量快照,Debezium每个表的主键,然后将表格分为块的基础上开云体育官方注册网址配置块大小。块的块,然后捕获块中的每个表行。对于每一行,它捕获快照发出读
事件。事件所代表的价值当块的快照开始的行。
快照收益,其他进程的继续访问数据库,可能修改表记录。开云体育电动老虎机反映这种变化,插入
,更新
,或删除
操作是致力于按平常的事务日志。同样,持续Debezium流过程继续检测这些事开云体育官方注册网址件并发出相应的改变事件记录卡夫卡。
在某些情况下,更新
或删除
收到的事件流过程排放的序列。即流过程可能会发出一个事件,修改一个表行之前快照捕获块包含读
事件这一行。当最终发出相应的快照读
行活动,其价值已经取代了。以确保增量快照事件到达的顺序处理正确的逻辑顺序,Debezium采用缓冲方案解决冲突。开云体育官方注册网址只有在快照之间的碰撞事件和事件流解析对卡夫卡Debezium发出一个事件记录。开云体育官方注册网址
协助解决后面到达之间的碰撞读
事件和事件流,修改相同的表行,Debezium雇佣了一个所谓的开云体育官方注册网址快照窗口。快照windows的划定了间隔期间增量快照捕获一个指定表数据块。在一块的快照窗口打开之前,Debezium遵循其一贯的行为和直接从事务日志发出事件下游目标卡开云体育官方注册网址夫卡的话题。但从特定块快照打开,直到关闭,Debezium执行重复数据删除步骤解决之间的碰撞事件具有相同的主键. .开云体育官方注册网址
对于每个数据收集,Debezium发出两种类型的事件,并存储开云体育官方注册网址记录它们在单个目的地卡夫卡的话题。它捕获快照记录直接从表发出读
操作。与此同时,随着用户继续更新记录的数据收集,和事务日志更新以反映每一个提交,Debezium发出开云体育官方注册网址更新
或删除
为每个变更操作。
快照窗口打开,Debezium开始处理一块快照,它提供了快照记录到内开云体育官方注册网址存缓冲区。在快照windows,主键的读
事件缓冲比较传入流的主键事件。如果没有发现匹配,直接发送到卡夫卡流事件记录。如果D开云体育官方注册网址ebezium检测到一个匹配,它丢弃缓冲读
事件,并将流记录写入目标主题,因为流事件逻辑取代静态快照事件。块的快照窗口关闭后,缓冲区只包含读
事件相关的事务日志事件存在。开云体育官方注册网址Debezium发出这些剩余读
事件表的卡夫卡的话题。
连接器为每个快照块重复这个过程。
触发一个增量快照
目前,启动增量快照的唯一方法是发送一个特设快照信号源数据库上的信号表。开云体育电动老虎机
你提交一个信号信号表的SQL插入
查询。
后Debez开云体育官方注册网址ium检测信号的变化表,它读取信号,请求的快照操作运行。
你提交的查询中包含指定表快照,而且,还指定了快照的操作。目前,快照操作的唯一有效的选项是默认值,增量
。
中包括指定表快照,提供一个数据收集
数组列表的表或数组正则表达式用于匹配表,例如,
{“数据收集”:["。米yFirstTable", "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
,类型
,数据
参数对应的命令信号表的字段。下表描述了参数的例子:
表5所示。描述字段的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 |
|
指定事件类型。 |
你可以发送一条消息配置卡夫卡的话题要求连接器运行一个临时增量快照。
卡夫卡的关键消息的值必须匹配topic.prefix
连接器配置选项。
消息是一个JSON对象的值类型
和数据
字段。
信号类型execute-snapshot
,数据
字段必须有以下字段:
场 | 默认的 | 价值 |
---|---|---|
|
|
执行快照的类型。目前Debezium开云体育官方注册网址只支持 |
|
N /一个 |
逗号分隔的正则表达式匹配数组中包含的完全限定名称表快照。 |
|
N /一个 |
一个可选的字符串,指定一个条件是连接器评估指定列的一个子集,包括在一个快照。 |
的一个例子execute-snapshot卡夫卡的信息:
关键= ' test_connector ' Value = '{“类型”:“execute-snapshot”、“数据”:{代码基于schema1中“数据收集”:["。表1”、“代码基于schema1中。表2"], "type": "INCREMENTAL"}}`
开云体育官方注册网址Debezium使用附加条件
字段选择一个表的内容的一个子集。
通常,当Debezium运行一个开云体育官方注册网址快照,它运行一个SQL查询,如:
SELECT * FROM<表>…。
当请求包含一个快照附加条件
,附加条件
添加到SQL查询,例如:
SELECT * FROM<表>在哪里<附加条件>…。
例如,给定一个产品
表的列id
(主键),颜色
,品牌
,如果你想要一个快照只包括的内容颜色=蓝色
当你请求快照,您可以添加一个附加条件
声明内容过滤:
关键= ' test_connector ' Value = '{“类型”:“execute-snapshot”、“数据”:{代码基于schema1中“数据收集”:["。产品”),“类型”:“增量”、“附加条件”:“颜色=蓝色"}}
您可以使用附加条件
声明中通过条件基于多个列。例如,使用相同的产品
表在前面的例子,如果你想要一个快照只包括的内容产品
表颜色=蓝色
,品牌= MyBrand
你可以发送以下请求:
关键= ' test_connector ' Value = '{“类型”:“execute-snapshot”、“数据”:{代码基于schema1中“数据收集”:["。产品”),“类型”:“增量”、“附加条件”:“颜色=蓝色和品牌= MyBrand "}}
停止一个增量快照
你也可以停止增量快照通过发送一个信号对源数据库表。开云体育电动老虎机你提交一个停止信号表快照通过发送一个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
,类型
,数据
参数对应的信号命令信号表的字段。下表描述了参数的例子:
表7所示。描述字段的SQL命令发送停止信号到信号表增量快照 项 价值 描述 1
myschema.开云体育官方注册网址debezium_signal
指定完全限定名称的信号在源数据库表。开云体育电动老虎机
2
ad-hoc-1
的
id
参数指定一个任意字符串,指定的id
标识符的请求信号。
使用这个字符串来识别信号表中的日志消息条目。开云体育官方注册网址Debezium不使用这个字符串。3
stop-snapshot
指定
类型
参数指定的操作信号触发。4
数据收集
一个可选的组成部分
数据
领域的一个信号,指定表名数组或正则表达式匹配表名删除快照。
数组列表正则表达式匹配表的完全限定名称,使用相同的格式使用指定连接器的信号表的名称signal.data.collection
配置属性。如果该组件数据
省略字段,那么信号停止整个增量快照的进展。5
增量
一个必需的组成部分
数据
领域的一个信号,表明指定的快照操作停止。
目前,唯一有效的选项增量
。
如果你不指定一个类型
值时,信号无法停止增量快照。
你可以发送消息到一个信号卡夫卡信号配置主题停止一个临时增量快照。
卡夫卡的关键消息的值必须匹配topic.prefix
连接器配置选项。
消息是一个JSON对象的值类型
和数据
字段。
信号类型stop-snapshot
,数据
字段必须有以下字段:
场 | 默认的 | 价值 |
---|---|---|
|
|
执行快照的类型。目前Debezium开云体育官方注册网址只支持 |
|
N /一个 |
一个可选的逗号分隔的正则表达式匹配的完全限定名称中包含的表快照。 |
下面的例子显示了一个典型stop-snapshot
卡夫卡的信息:
关键= ' test_connector ' Value = '{“类型”:“stop-snapshot”、“数据”:{代码基于schema1中“数据收集”:["。表1”、“代码基于schema1中。表2"], "type": "INCREMENTAL"}}`
只读增量快照
运行的MySQL连接器允许增量快照与一个只读连接到数据库。开云体育电动老虎机与只读访问运行增量快照,连接器使用执行全局事务id (GTID)设置为高和低的水印。块的状态更新的窗口通过对比GTIDs二进制日志(binlog)事件或对高低水印服务器的心跳。
切换到一个只读的实现,设置的值read.only
财产真正的
。
如果连接器从多线程副本读取(即复制的价值
replica_parallel_workers
大于0
)你必须设置以下选项之一:replica_preserve_commit_order =对
slave_preserve_commit_order =对
特设只读增量快照
当MySQL连接是只读的,您可以使用卡夫卡信号通道发送消息到卡夫卡的话题。
快照事件的操作类型
MySQL连接器放出快照事件读
操作(“人事处”:“r”)
。如果你喜欢这事件连接器放出快照创建
(c
)事件,配置Debezium开云体育官方注册网址ReadToInsertEvent
单独的消息变换(SMT)来修改事件类型。
下面的例子展示了如何配置SMT:
ReadToInsertEvent
SMT改变快照事件的类型变换= snapshotasinsert,…transforms.snapshotasinsert.type = i开云体育官方注册网址o.debezium.connector.mysql.transforms.ReadToInsertEvent
主题名称
默认情况下,MySQL连接器写事件的所有变化插入
,更新
,删除
操作发生在一个表到一个Apache卡夫卡主题特定的表。
连接器使用以下约定名称更改事件主题:
topicPrefix.开云体育电动老虎机databaseName.tableName
假设实现
主题是前缀,库存
数据库名称,数开云体育电动老虎机据库包含表命名订单
,客户
,产品
。Debe开云体育官方注册网址zium MySQL连接器发送事件到三卡夫卡话题,一个用于数据库中的每个表:开云体育电动老虎机
fulfillment.inventory。订单fulfillment.inventory。客户fulfillment.inventory。产品
下面的列表提供了定义组件的默认名称:
- topicPrefix
-
这个话题作为指定的前缀
topic.prefix
连接器配置属性。 - schemaName
-
模式的名称的操作发生。
- 的表
-
表的名称的操作发生。
如果默认主题名称不符合您的需求,您可以配置自定义主题名称。配置自定义主题名称,您指定正则表达式在逻辑主题路由SMT。关于使用逻辑主题的更多信息路由SMT定制主题命名,明白了主题的路由。
事务的元数据
开云体育官方注册网址Debezium可以生成事件表示事务边界和丰富数据更改事件消息。
限制当Debezium接收事务开云体育官方注册网址的元数据
开云体育官方注册网址Debezium寄存器和接收元数据只对交易发生后部署连接器。交易发生之前部署连接器的元数据是不可用的。 |
开云体育官方注册网址Debezium生成事务边界的事件开始
和结束
分隔符在每个事务。事务边界事件包含以下字段:
-
状态
-
开始
或结束
。 -
id
-
唯一的事务标识符的字符串表示。
-
ts_ms
-
一个事务边界事件的时间(
开始
或结束
事件)的数据源。如果数据源不提供Debezium事件时间,然后字段代表的时间而不是Deb开云体育官方注册网址ezium处理事件。 -
event_count
(结束
事件) -
发出的事件总数事务。
-
data_collections
(结束
事件) -
对的数组
data_collection
和event_count
元素表明事件连接器发出的数量变化,来源于一个数据收集。
{“状态”:“开始”,“id”:“0 e4d5dcd - a33b f1 - 11 - ea - 80 - 02010 - a22a99e: 10“,“ts_ms”: 1486500577125,“event_count”:空,“data_collections”:零}{“状态”:“结束”,“id”:“0 e4d5dcd - a33b f1 - 11 - ea - 80 - 02010 - a22a99e: 10“,“ts_ms”: 1486500577691,“event_count”: 2,“data_collections”: [{:“data_collection s1。”、“event_count”: 1}, {:“data_collection s2。”、“event_count”: 1}]}
除非通过覆盖topic.transaction
选项,连接器排放交易事件< topic.prefix >
.transaction
的话题。
当启用事务元数据的数据信息信封
富含是新的吗事务
字段。这个领域提供关于每一个事件的信息的形式复合的字段:
-
id
-
唯一的事务标识符的字符串表示。
-
total_order
-
事件在所有事件的绝对位置生成的事务。
-
data_collection_order
-
每个数据收集事件在所有事件的位置,发出的事务。
下面是一个例子的信息:
{“前”:零,“后”:{“pk”:“2”,“aa”:“1”},“源”:{…},“人事处”:“c”、“ts_ms”:“1580390884335”,“交易”:{" id ": " 0 e4d5dcd - a33b f1 - 11 - ea - 80 - 02010 - a22a99e: 10“,“total_order”:“1”,“data_collection_order”: " 1 "}}
对系统没有启用GTID,事务标识符使用的组合构造binlog文件名和binlog位置。例如,如果binlog文件名和位置mysql-bin相应的事务开始事件。000002年和1913年分别Debezium事务标识符是构造开云体育官方注册网址文件= mysql-bin.000002 pos = 1913
。
数据更改事件
Debe开云体育官方注册网址zium MySQL连接器生成一个数据为每个行级更改事件插入
,更新
,删除
操作。每个事件都包含一个键和一个值。键和值的结构取决于表的改变。
开云体育官方注册网址Debezium和卡夫卡连接的设计连续的事件消息流。然而,这些事件的结构可能会改变随着时间的推移,可以让消费者难以处理。为了解决这个问题,每个事件包含模式的内容或,如果您正在使用一个模式注册表,一个模式ID,一个消费者可以使用从注册表获取模式。这使得每个事件自包含的。
下面的骨架JSON显示了更改事件的基本四个部分。然而,如何配置卡夫卡连接转换器,你选择在应用程序中使用的决定表示这四个部分的更改事件。一个模式
字段的更改事件只有当你配置转换器装出来的。同样,事件关键和事件有效负载的变化事件只有在你配置一个转换器装出来的。如果你使用JSON转换器配置它来生产所有四个基本事件部分改变,改变事件有一个结构:
{"模式":{(1)…},“有效载荷”:{(2)…},"模式":{(3)…},“有效载荷”:{(4)…}},
项 | 字段名 | 描述 |
---|---|---|
1 |
|
第一个 |
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}}
项 | 字段名 | 描述 |
---|---|---|
1 |
|
模式的关键部分指定了卡夫卡连接模式,描述了什么是关键的 |
2 |
|
的名字的结构模式,它定义了关键的负载。该模式描述表的主键的结构改变。关键模式名的格式connector-name。开云体育电动老虎机数据库名称。表名。
|
3 |
|
表明事件的键必须包含一个值 |
4 |
|
指定每个字段,预计 |
5 |
|
包含这一变化的关键行生成事件。在这个例子中,关键,包含一个单一的 |
更改事件值
改变的价值比的关键事件更复杂。像的关键,有价值模式
部分和一个有效载荷
部分。的模式
部分包含模式描述信封
的结构有效载荷
部分,包括其嵌套的字段。改变事件的操作创建、更新或删除数据有效载荷与信封结构都有一个值。
考虑相同的样本表用来显示的一个例子改变事件的关键:
创建表的客户(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。价值", "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": true, "field": "table" }, { "type": "int64", "optional": false, "field": "server_id" }, { "type": "string", "optional": true, "field": "gtid" }, { "type": "string", "optional": false, "field": "file" }, { "type": "int64", "optional": false, "field": "pos" }, { "type": "int32", "optional": false, "field": "row" }, { "type": "int64", "optional": true, "field": "thread" }, { "type": "string", "optional": true, "field": "query" } ], "optional": false, "name": "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)“版本”:“tripwire。最后”、“连接器”:“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”)”}}}
项 | 字段名 | 描述 |
---|---|---|
1 |
|
价值的模式,描述了价值的有效载荷的结构。更改事件的价值模式都是一样的在每一个更改事件的连接器生成一个特定的表。 |
2 |
|
在 |
3 |
|
|
4 |
|
|
5 |
|
价值的实际数据。这是改变事件提供的信息。 |
6 |
|
强制性的描述类型的字符串操作导致连接器生成事件。在这个例子中,
|
7 |
|
可选字段显示的时间连接器处理事件。基于系统时钟的时间是在JVM中运行卡夫卡连接任务。 |
8 |
|
一个可选的字段指定事件发生之前的状态行。当 |
9 |
|
一个可选的字段指定事件发生后的状态行。在这个例子中, |
10 |
|
强制性字段描述了事件源的元数据。该字段包含信息,您可以使用它来比较这一事件与其他事件,关于事件的起源,事件发生的顺序,事件是否相同的事务的一部分。元数据来源包括:
如果 |
更新事件
更改事件的价值更新的样本客户
作为一个表有相同的模式创建事件表。同样,事件相同价值的有效载荷结构。然而,在一个事件有效负载价值包含不同的值更新事件。更改事件的一个例子是价值的事件连接器生成的一个更新客户
表:
{"模式":{…},“有效载荷”:{“前”:{(1)“id”: 1004年,“first_name”:“安妮”,“last_name”:“Kretchmar”、“电子邮件”:“annek@noanswer.org”},“后”:{(2)“id”: 1004年,“first_name”:“安妮玛丽”、“last_name”:“Kretchmar”、“电子邮件”:“annek@noanswer.org”},“源”:{(3)“版本”:“tripwire。最后”、“名称”:“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)}}
项 | 字段名 | 描述 |
---|---|---|
1 |
|
一个可选的字段指定事件发生之前的状态行。在一个更新事件的价值, |
2 |
|
一个可选的字段指定事件发生后的状态行。你可以比较 |
3 |
|
强制性字段描述了事件源的元数据。的
如果 |
4 |
|
强制性的字符串描述操作的类型。在一个更新事件的价值, |
5 |
|
可选字段显示的时间连接器处理事件。基于系统时钟的时间是在JVM中运行卡夫卡连接任务。 |
更新列一行的主要/唯一键改变值的行键。当一个关键变化,Debezium输出开云体育官方注册网址三个事件: |
主键更新
一个更新
操作,连续变化的主键字段(s)被称为一个主键改变。一个主键变化的更新
事件记录,连接器发出删除
旧的键和一个事件记录创建
新(更新)关键事件记录。这些事件通常的结构和内容,此外,每一个都有一个消息头与主键改变:
的
删除
事件记录__开云体育官方注册网址debezium.newkey
消息头。这个头的值是新更新的行的主键。的
创建
事件记录__开云体育官方注册网址debezium.oldkey
消息头。这个头的值是前(旧)主键更新的行。
删除事件
在一个值删除有相同的变化事件模式
部分为创建和更新事件以相同的表。的有效载荷
在一个部分删除事件为样本客户
表看起来像这样:
{"模式":{…},“有效载荷”:{“前”:{(1)“id”: 1004年,“first_name”:“安妮玛丽”、“last_name”:“Kretchmar”、“电子邮件”:“annek@noanswer.org”},“后”:空,(2)“源”:{(3)“版本”:“tripwire。最后”、“连接器”:“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)}}
项 | 字段名 | 描述 |
---|---|---|
1 |
|
可选字段,指定事件发生之前的状态行。在一个删除事件的价值, |
2 |
|
可选字段,指定事件发生后的状态行。在一个删除事件的价值, |
3 |
|
强制性字段描述了事件源的元数据。在一个删除事件的价值,
如果 |
4 |
|
强制性的字符串描述操作的类型。的 |
5 |
|
可选字段显示的时间连接器处理事件。基于系统时钟的时间是在JVM中运行卡夫卡连接任务。 |
一个删除更改事件记录为消费者提供了信息需要处理删除这一行。包括旧值,因为一些消费者可能需要他们为了妥善处理消除。
MySQL连接器设计事件卡夫卡日志压实。日志压实使删除一些旧消息只要至少每个关键是保持最新的消息。这使卡夫卡回收存储空间同时确保主题包含一个完整的数据集,可用于重新加载密钥的状态。
墓碑上的事件
当一行被删除的删除事件的价值仍然使用日志压实,因为卡夫卡之前删除所有消息可以拥有同样的关键。然而,对于卡夫卡删除所有消息,相同的密钥,必须的信息价值零
。为做到这一点,Debezium MySQL连接器后发出开云体育官方注册网址删除事件,连接器发出一种特别的墓碑上活动,但是有相同的关键零
价值。
截断事件
一个截断更改事件信号,表已被截断。消息键零
在这种情况下,消息值是这样的:
{"模式":{…},“有效载荷”:{“源”:{(1)“版本”:“tripwire。最后”、“名称”:“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”:“t”,(2)“ts_ms”: 1465581029523(3)}}
项 | 字段名 | 描述 |
---|---|---|
1 |
|
强制性字段描述了事件源的元数据。在一个截断事件的价值,
|
2 |
|
强制性的字符串描述操作的类型。的 |
3 |
|
可选字段显示的时间连接器处理事件。基于系统时钟的时间是在JVM中运行卡夫卡连接任务。 +的 |
在一个单一的截断
声明适用于多个表,一个截断更改事件记录每个截断表将会发出。
注意,因为截断事件代表一个改变了整个表,没有消息键,除非你跟单个分区处理议题,没有订购担保相关的更改事件表(创建,更新等)截断事件表。例如一个消费者可能会接收到一个更新事件后截断事件表,当这些事件读取不同的分区。
数据类型的映射
Debe开云体育官方注册网址zium MySQL连接器代表改变行等结构化事件存在的表行。事件的每一列都包含一个字段值。MySQL数据类型的列规定如何Debezium代表事件的价值。开云体育官方注册网址
列存储字符串定义在MySQL字符集和校对。MySQL连接器使用列的字符集当阅读binlog列值的二进制表示的事件。
连接器可以映射两个MySQL数据类型文字和语义类型。
文字类型:如何使用卡夫卡所代表的值是连接模式类型。
语义类型:卡夫卡连接模式捕获字段的含义(模式名称)。
如果默认数据类型转换不符合你的需要,你可以创建一个自定义转换器连接器。
基本类型
下面的表显示了MySQL连接器地图基本数据类型。
MySQL类型 | 文字类型 | 语义类型 |
---|---|---|
|
|
n /一个 |
|
|
n /一个 |
|
|
|
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
精度是只用来确定存储大小。精密 |
|
|
MySQL 8.0.17,非标准浮动(M, D)和双(M, D)语法被弃用,并应该支持将其删除在未来版本的MySQL,集 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
时间类型
不包括时间戳
数据类型,MySQL时间依赖的价值类型time.precision.mode
连接器配置属性。为时间戳
列的默认值被指定为CURRENT_TIMESTAMP
或现在
,该值1970-01-01就是
在卡夫卡作为默认值连接模式。
MySQL允许零值日期
,DATETIME
,时间戳
列,因为零值有时优于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基于服务器当前时区(或会话)。来自服务器的时区将查询默认情况下。如果失败,它必须显式地指定数据库开云体育电动老虎机connectionTimeZone
MySQL配置选项。例如,如果数据库时区(全球或连接器的配置开云体育电动老虎机connectionTimeZone
“美国/ Los_Angeles”选项),时间戳值由“2018-06-20 06:37:03”ZonedTimestamp
值“2018 - 06 - 20 t13:37:03z”。
运行的JVM的时区卡夫卡连接和Debezium并不影响这些转换。开云体育官方注册网址
更多细节属性相关的时间值的文档MySQL连接器配置属性。
- time.precision.mode = adaptive_time_microseconds(默认)
-
MySQL连接器决定了文本类型和语义类型基于列的数据类型定义,事件表示完全值在数据库中。开云体育电动老虎机时间字段都在微秒。只有积极的
时间
字段值的范围00:00:00.000000
来23:59:59.999999
可以正确地捕获。表16所示。映射时 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.000
来23:59:59.999
可以处理。集time.precision.mode =连接
只有你可以确保时间
表中的值不超过所支持的范围。的连接
设置将被移除Debezium的未来版本。开云体育官方注册网址表17所示。映射时 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 =精确
-
表18。映射时 decimal.handling.mode =精确
MySQL类型 文字类型 语义类型 数字((M [D]))
字节
org.apache.kafka.connect.data.Decimal
的规模
模式参数包含一个整数,表示小数点位数有多少发生了变化。小数((M [D]))
字节
org.apache.kafka.connect.data.Decimal
的规模
模式参数包含一个整数,表示小数点位数有多少发生了变化。 - decimal.handling.mode =双
-
表19。映射时 decimal.handling.mode =双
MySQL类型 文字类型 语义类型 数字((M [D]))
FLOAT64
n /一个
小数((M [D]))
FLOAT64
n /一个
- decimal.handling.mode =字符串
-
表20。映射时 decimal.handling.mode =字符串
MySQL类型 文字类型 语义类型 数字((M [D]))
字符串
n /一个
小数((M [D]))
字符串
n /一个
布尔值
MySQL处理布尔
内部价值在一个特定的方式。的布尔
列映射到内部非常小的整数(1)
数据类型。在创建表时,在流然后它使用适当的布尔
映射Debezium接开云体育官方注册网址收原来的DDL。在快照,Debezium执行开云体育官方注册网址显示创建表
获取返回的表定义非常小的整数(1)
对于这两个布尔
和非常小的整数(1)
列。开云体育官方注册网址Debezium则无法获取原始类型映射和地图非常小的整数(1)
。
使你能够将源列转换成布尔数据类型,Debezium提供开云体育官方注册网址TinyIntOneToBooleanConverter
自定义转换器你可以使用下列方法之一:
映射所有
非常小的整数(1)
或非常小的整数(1)无符号
列布尔
类型。枚举列的一个子集,通过使用一个以逗号分隔的正则表达式。
使用这种类型的转换,您必须设置转换器
配置属性的选择器
参数,如以下示例所示:转换器=布尔boolean.type = io.debezium.co开云体育官方注册网址nnector.mysql.converters.TinyIntOneToBooleanConverter boolean.selector = db1.table1。*,db1.table2.column1
注意:MySQL8不是显示的长度
非常小的整数无符号
当快照执行类型显示创建表
,这意味着这个转换器是行不通的。新选项length.checker
可以解决这个问题,默认值是吗真正的
。禁用length.checker
并指定的列需要转换为选择器
财产,而不是将所有列类型的基础上,如以下示例所示:转换器=布尔boolean.type = io.debezium.co开云体育官方注册网址nnector.mysql.converters.TinyIntOneToBooleanConverter boolean.length。检查程序= false boolean.selector = db1.table1。*,db1.table2.column1
空间类型
目前,Debezium MyS开云体育官方注册网址QL连接器支持下面的空间数据类型。
MySQL类型 | 文字类型 | 语义类型 |
---|---|---|
|
|
|
设置MySQL
需要一些MySQL设置任务才能安装和运行一个Debezium连接器。开云体育官方注册网址
创建一个用户
De开云体育官方注册网址bezium MySQL连接器需要MySQL用户帐户。这个MySQL用户必须有适当的权限Debezium MySQL连接器捕获的所有数据库更改。开云体育官方注册网址开云体育电动老虎机
一个MySQL服务器。
SQL命令的基本知识。
创建MySQL用户:
mysql >创建用户“用户”@“localhost”被“密码”;
授予用户所需的权限:
mysql >格兰特选择、重载、显示数据库复制的奴隶,复制客户*。开云体育电动老虎机*“用户”被“密码”;
下表描述了权限。
如果使用托管选项,如Amazon RDS或亚马逊极光,不允许一个全球性的读锁,用于创建表级锁一致的快照。在这种情况下,您也需要资助 锁表
你创建的权限给用户。看到快照为更多的细节。完成用户的权限:
mysql >冲洗特权;
关键字 | 描述 |
---|---|
|
使连接器从表在数据库中选择行。开云体育电动老虎机这是只执行一个快照时使用。 |
|
使连接器的使用 |
|
连接器可以看到数据库名称通过发行开云体育电动老虎机 |
|
使连接器来连接和读取binlog MySQL服务器。 |
|
使连接器的使用以下语句:
连接器总是需要这个。 |
|
标识数据库的权限申请。开云体育电动老虎机 |
|
指定用户授予权限。 |
|
指定用户的MySQL密码。 |
使binlog
你必须为MySQL复制启用二进制日志记录。二进制日志记录事务复制工具的更新传播的变化。
一个MySQL服务器。
适当的MySQL用户权限。
检查是否
log-bin
选择已经在:/ / MySql 5。x mysql >选择variable_value作为“二进制日志状态(log-bin)::“从information_schema。global_variables variable_name =“log_bin”;/ / MySql 8。x mysql >选择variable_value作为“二进制日志状态(log-bin)::“从performance_schema。global_variables variable_name =“log_bin”;
如果它是
从
,配置您的MySQL服务器配置文件使用以下属性,如下表中所描述的:服务器id = 223344 #查询变量叫做server_id,例如从information_schema选择variable_value。global_variables variable_name =“server_id”;log_bin = mysql-bin binlog_format =行binlog_row_image =全expire_logs_days = 10
再次确认您的更改通过检查binlog状态:
/ / MySql 5。x mysql >选择variable_value作为“二进制日志状态(log-bin)::“从information_schema。global_variables variable_name =“log_bin”;/ / MySql 8。x mysql >选择variable_value作为“二进制日志状态(log-bin)::“从performance_schema。global_variables variable_name =“log_bin”;
财产 | 描述 |
---|---|
|
的值 |
|
的价值 |
|
的 |
|
的 |
|
这是自动的天数binlog文件删除。默认值是 |
使GTIDs
全局事务标识符(GTIDs)唯一地标识事务发生在集群服务器上。虽然不是所需Debezium MySQL连接器,使用开云体育官方注册网址GTIDs简化了复制和使您能够更容易地确认如果主数据网格和副本服务器是一致的。
GTIDs在MySQL 5.6.5后来。看到MySQL文档为更多的细节。
一个MySQL服务器。
SQL命令的基本知识。
访问MySQL配置文件。
启用
gtid_mode
:mysql > gtid_mode =
启用
enforce_gtid_consistency
:mysql > enforce_gtid_consistency =
确认更改:
mysql >显示全局变量就像“% GTID %”;
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + | Variable_name | | +价值- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + | enforce_gtid_consistency上| | | gtid_mode | | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
选项 | 描述 |
---|---|
|
布尔值,用于指定是否GTID MySQL服务器的模式是否启用。
|
|
布尔值,用于指定是否服务器执行GTID一致性通过允许执行的语句,可以登录以事务安全的方式。需要使用GTIDs时。
|
配置会话超时
当一个初始一致的快照是为大型数据库,建立连接超时,表被阅读。开云体育电动老虎机你可以通过配置防止这种行为interactive_timeout
和wait_timeout
在你的MySQL配置文件。
一个MySQL服务器。
SQL命令的基本知识。
访问MySQL配置文件。
配置
interactive_timeout
:mysql > interactive_timeout = < duration-in-seconds >
配置
wait_timeout
:mysql > wait_timeout = < duration-in-seconds >
选项 | 描述 |
---|---|
|
服务器等待的秒数活动在一个交互式连接前关闭它。看到MySQL的文档为更多的细节。 |
|
服务器等待的秒数活动非交互式连接前关闭它。看到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条目。在
=启用从
=禁用
验证binlog行价值选择
检查binlog_row_value_options
变量,并确保值不设置为PARTIAL_JSON
,因为在这种情况下连接器可能无法使用更新事件。
一个MySQL服务器。
SQL命令的基本知识。
访问MySQL配置文件。
检查当前的变量值
mysql >显示全局变量在variable_name =“binlog_row_value_options”;
结果
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + | Variable_name | | +价值- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + | binlog_row_value_options | | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
如果值是
PARTIAL_JSON
,设置这个变量:mysql > @@global设置。binlog_row_value_options = " ";
部署
部署Debezium M开云体育官方注册网址ySQL连接器,安装Debezium MySQL连接器存档,配置连接器,并开始通过添加其配置卡夫卡连接连接器。
MySQL服务器安装和建立与Debezium连接器开云体育官方注册网址。
下载Debezium开云体育官方注册网址MySQL连接器插件。
将文件解压缩到卡夫卡连接环境中。
添加JAR文件的目录卡夫卡连接的
plugin.path
。重新启动卡夫卡连接过程去接新的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)”的话题。前缀”:“fullfillment”,(8)“开云体育电动老虎机database.include。列表”:“库存”,(9)“schema.history.internal.kafka.bootstrap.servers”:“卡夫卡:9092”,(10):“schema.history.internal.kafka.topic schemahistory.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连接器,连接器配置一个配置和配置添加到您的卡夫卡连接集群。
Debe开云体育官方注册网址zium MySQL连接器安装。
创建一个配置MySQL连接器。
使用卡夫卡REST API连接卡夫卡添加连接器配置连接集群。
连接器启动后,它执行一个一致的快照连接器的MySQL数据库的开云体育电动老虎机配置。连接器然后开始生成数据行级操作的事件和流媒体改变事件记录,卡夫卡的话题。
连接器属性
Debe开云体育官方注册网址zium MySQL连接器有许多配置属性,您可以使用它们来实现正确的连接器为您的应用程序的行为。许多属性的默认值。属性信息的组织结构如下:
开云体育电动老虎机数据库模式历史连接器配置属性控制Debezium如何处理事件,开云体育官方注册网址它从数据库中读取模式的历史主题。开云体育电动老虎机
直通数据库驱动程序属性开云体育电动老虎机控制数据库驱动程序的行为。开云体育电动老虎机
以下配置属性要求除非一个默认值是可用的。
需要Debeziu开云体育官方注册网址m MySQL连接器配置属性
财产 | 默认的 | 描述 | ||
---|---|---|---|---|
没有默认的 |
独特的连接器的名称。再次尝试注册名称相同的失败。这个属性是必需的所有卡夫卡连接连接器。 |
|||
没有默认的 |
连接器的Java类的名称。总是指定 |
|||
|
的最大数量的任务应该创建连接器。MySQL连接器总是使用一个单一的任务,因此不使用这个值,所以默认总是可以接受的。 |
|||
没有默认的 |
MySQL数据库服务器的IP地址或主机名。开云体育电动老虎机 |
|||
|
整数MySQL数据库服务器的端口号。开云体育电动老虎机 |
|||
没有默认的 |
MySQL用户时使用的名称连接到MySQL数据库服务器。开云体育电动老虎机 |
|||
没有默认的 |
密码时使用连接到MySQL数据库服务器。开云体育电动老虎机 |
|||
没有默认的 |
主题提供一个名称空间前缀为特定集群/ MySQL数据库服务器,Debezium捕捉变化。开云体育官方注册网址开云体育电动老虎机主题前缀应该是唯一的在所有其他连接器,因为它是所有卡夫卡主题名称作为前缀接收事件发出的这个连接器。只有字母数字字符,连字符,点和强调必须用于数据库服务器逻辑名。开云体育电动老虎机
|
|||
没有默认的 |
这个数据库客户机的数字ID,它必须是唯一的开云体育电动老虎机所有当前运行在集群MySQL数据库的过程。这个连接器连接MySQL数据库集群作为另一台服务器(这个惟一的开云体育电动老虎机ID)所以它可以读取binlog。 |
|||
空字符串 |
可选,以逗号分隔的正则表达式匹配的数据库的名称来捕捉变化。开云体育电动老虎机连接器不捕捉任何数据库的名字不在变化开云体育电动老虎机 匹配一个数据库的名字,Debezium应用指定开云体育电动老虎机的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个字符串的数据库名称;开云体育电动老虎机可能存在不匹配的子字符串在数据库名称。开云体育电动老虎机 |
|||
空字符串 |
可选,以逗号分隔的正则表达式匹配数据库的名字,你不希望捕获变化。开云体育电动老虎机连接器捕捉任何数据库的变化,他的名字叫不在开云体育电动老虎机 匹配一个数据库的名字,Debezium应用指定开云体育电动老虎机的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个字符串的数据库名称;开云体育电动老虎机可能存在不匹配的子字符串在数据库名称。开云体育电动老虎机 |
|||
空字符串 |
一个可选,以逗号分隔的正则表达式匹配完全限定表标识符的表要捕捉变化。连接器不捕捉变化不包括的任何表 匹配一个表的名称,Debezium适用于您指定的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个字符串表的名称;可能存在不匹配的子字符串表中的名称。 |
|||
空字符串 |
一个可选,以逗号分隔的正则表达式匹配完全限定表标识符表你不希望捕获的变化。连接器捕捉变化不包括的任何表 匹配一个列的名称,Debezium适用于您指定的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个字符串表的名称;可能存在不匹配的子字符串表中的名称。 |
|||
空字符串 |
一个可选,以逗号分隔的正则表达式匹配的完全限定名称列从更改事件排除记录值。完全限定名称列的形式开云体育电动老虎机数据库名。的表。columnName。 匹配一个列的名称,Debezium适用于您指定的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个字符串列的名称;子字符串不匹配,可能出现在一个列名。如果包含该属性的配置,也不设置 |
|||
空字符串 |
可选,以逗号分隔的正则表达式匹配的完全限定名称列包含在变更事件记录值。完全限定名称列的形式开云体育电动老虎机数据库名。的表。columnName。 匹配一个列的名称,Debezium适用于您指定的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个字符串列的名称;子字符串不匹配,可能出现在一个列名。 |
|||
|
指定是否跳过发布消息时没有变化包括列。这将基本上过滤消息如果没有改变列包括按 |
|||
n /一个 |
一个可选,以逗号分隔的正则表达式匹配的完全限定名称基于字符的列。设置该属性如果你想截断时的一组列中的数据超过指定的字符数长度在属性名。集 的完全限定名称列观察下列格式:开云体育电动老虎机数据库名。的表。columnName。匹配一个列的名称,Debezium适用于您指定的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个字符串列的名称;表达式不匹配的子字符串可能出现在一个列名。 您可以指定多个属性具有不同的长度在一个配置。 |
|||
n /一个 |
一个可选,以逗号分隔的正则表达式匹配的完全限定名称基于字符的列。设置该属性如果你希望连接器面具的一组列的值,例如,如果他们包含敏感数据。集 的完全限定名称列观察下列格式:开云体育电动老虎机数据库名。的表。columnName。匹配一个列的名称,Debezium适用于您指定的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个字符串列的名称;表达式不匹配的子字符串可能出现在一个列名。 您可以指定多个属性具有不同的长度在一个配置。 |
|||
n /一个 |
一个可选,以逗号分隔的正则表达式匹配的完全限定名称基于字符的列。完全限定名称列的形式 一个假名由散列值指定应用的结果hashAlgorithm和盐。基于所使用的哈希函数,引用完整性维护,当列值替换为假名。支持哈希函数的描述MessageDigest节Java加密体系结构标准算法名称的文档。 column.mask.hash.sha with.salt——256.。CzQMA0cB5K = inventory.orders。customerName, inventory.shipment.customerName 如果有必要,笔名是自动缩短列的长度。连接器配置可以包括多个属性,指定不同的哈希算法和盐。 |
|||
n /一个 |
可选,以逗号分隔的正则表达式匹配列,您想要的完全限定名称连接器排放额外参数代表列元数据。设置此属性时,连接器将以下字段添加到事件记录的模式:
这些参数传递一个列的原始类型名称和长度(不同宽度的类型),分别。 的完全限定名称列观察下列格式:开云体育电动老虎机数据库名。的表。columnName,或开云体育电动老虎机数据库名。schemaName。的表。columnName。 |
|||
n /一个 |
可选,以逗号分隔的正则表达式,指定完全限定名称列的数据类型定义的一个数据库。开云体育电动老虎机当这个属性设置,对于匹配的数据类型的列,连接器发出事件记录在他们的模式包括以下额外的字段:
这些参数传递一个列的原始类型名称和长度(不同宽度的类型),分别。 的完全限定名称列观察下列格式:开云体育电动老虎机数据库名。的表。typeName,或开云体育电动老虎机数据库名。schemaName。的表。typeName。 mysql数据类型名称的列表,请参阅MySQL数据类型的映射。 |
|||
|
时间、日期和时间戳可以代表不同的精度,包括: |
|||
|
指定连接器应如何处理的值 |
|||
|
指定应该如何在长整型数字符号列更改事件。可能的设置: |
|||
|
布尔值,用于指定连接器是否应该发布数据库模式的变化到卡夫卡的主题名称相同的数据库服务器ID。每个模式变化记录通过使用一个键包含的数据库名称和值包括DDL语句(年代开云体育电动老虎机)。这是独立的连接器内部数据库模式的历史记录。开云体育电动老虎机 |
|||
|
布尔值,用于指定连接器是否应该解析和发布元数据表和列评论对象。启用此选项将内存使用情况的影响。逻辑模式对象的数量和大小是主要影响有多少内存消耗的Debezium连接器,并将潜在的巨大的字符串数据添加到他们每个人可能相当昂贵。开云体育官方注册网址 |
|||
|
布尔值,用于指定连接器是否应该包括原始SQL查询生成更改事件。 |
|||
|
在反序列化指定连接器应该如何应对异常binlog事件。不建议使用这个选项,请使用 |
|||
|
指定连接器应该如何应对binlog事件与表中没有的内部模式表示。即内部表示不与数据库一致。开云体育电动老虎机 |
|||
|
正整数的值指定的最大大小每一批处理的事件,应该在每个迭代的连接器。默认为2048。 |
|||
|
正整数的值指定了阻塞队列的最大记录数所能容纳的量。当Debe开云体育官方注册网址zium从数据库读取事件流,它将事件阻塞队列之前写卡夫卡。开云体育电动老虎机阅读改变事件的阻塞队列可以提供反压力的情况下从数据库连接器吸入消息的速度比它可以编写卡夫卡,或者当卡夫卡变得不可用。开云体育电动老虎机事件队列连接器时忽视举行定期记录偏移量。总是设置的值 |
|||
|
一个长整型值,指定字节的阻塞队列的最大体积。默认情况下,体积限制不指定阻塞队列。指定的字节数,队列可以消费,将此属性设置为一个积极的长期价值。 |
|||
|
正整数的值指定的毫秒数连接器应该等待新的更改事件出现之前,开始处理一批事件。默认为500毫秒,或0.5秒。 |
|||
|
一个正整数的值指定该连接器应该等待的最长时间,以毫秒为单位后试图连接到MySQL数据库服务器超时。开云体育电动老虎机默认为30秒。 |
|||
没有默认的 |
一个以逗号分隔的正则表达式匹配源uuid GTID集中使用的连接器使用MySQL服务器上找到binlog位置。设置此属性时,连接器只使用源uuid的GTID范围匹配指定的之一 匹配的价值GTID, Debezium适用于您指定的正则表达开云体育官方注册网址式锚定正则表达式。即指定表达式匹配整个UUID字符串;可能存在不匹配的子字符串的UUID。 |
|||
没有默认的 |
一个以逗号分隔的正则表达式匹配源uuid GTID集连接器使用MySQL服务器上找到binlog位置。当这个属性设置中,连接器只使用源uuid的GTID范围不匹配的任何指定 匹配的价值GTID, Debezium适用于您指定的正则表达开云体育官方注册网址式锚定正则表达式。即指定表达式匹配整个UUID字符串;可能存在不匹配的子字符串的UUID。 |
|||
|
控制是否删除事件是紧随其后的是一个墓碑上的事件。 |
|||
n /一个 |
的表达式列表指定连接器使用的列表单自定义消息键改变事件记录,发布卡夫卡指定表的主题。 默认情况下,Debezi开云体育官方注册网址um使用一个表的主键列,它发出的消息键记录。的默认值,或指定一个关键对于缺乏一个主键的表,您可以配置自定义消息键基于一个或多个列。 每一个完全限定表名是一个正则表达式在以下格式: 列的数量没有限制,您使用它来创建自定义消息键。然而,最好使用所需的最小数量,指定一个唯一键。 |
|||
字节 |
例如,指定如何二进制列 |
|||
没有一个 |
指定应该如何调整的兼容模式名消息转换器使用的连接器。可能的设置:
|
|||
没有一个 |
指定字段名称应该如何调整的兼容性与消息转换器使用的连接器。可能的设置:
看到Avro命名为更多的细节。 |
先进的MySQL连接器配置属性
下面的表描述高级MySQL连接器属性。这些属性的默认值很少需要更改。因此,您不需要指定连接器配置。
财产 | 默认的 | 描述 |
---|---|---|
|
一个布尔值,用于指定是否应该使用一个单独的线程,以确保连接到MySQL服务器/集群保持活着。 |
|
没有默认的 |
列举了一个以逗号分隔的符号名称自定义转换器连接器可以使用实例。 对于每一个转换配置连接器,您必须添加一个
例如, 布尔。类型:io.debezium.connector.mysql.converters.TinyIntOneToBooleanConverter 如果你想进一步控制配置转换器的行为,您可以添加一个或多个配置参数值传递给转换器。把这些额外的配置参数和一个转换器,paraemeter名称前缀符号名的转换器。 boolean.selector = db1.table1。*,db1.table2.column1 |
|
|
一个布尔值,用于指定内置系统表是否应该被忽略。这适用于无论表包括和排除列表。默认情况下,系统表被排除在自己改变了,和没有任何事件发生更改时,将生成系统表。 |
|
|
指定是否使用一个加密连接。可能的设置: |
|
0 |
有预见性的缓冲区的大小binlog读者使用。默认设置的 |
|
|
指定的标准运行连接器开始时一个快照。可能的设置: |
|
|
控制是否和全球MySQL连接器持有多久读锁,防止任何更新到数据库,在连接器执行快照。开云体育电动老虎机可能的设置: |
|
所有表中指定 |
一个可选,以逗号分隔的正则表达式匹配的完全限定名称( 匹配一个表的名称,Debezium适用于您指定的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个字符串表的名称;可能存在不匹配的子字符串表中的名称。 |
|
没有默认的 |
指定的表行包括一个快照。使用属性如果你想要一个快照包含只有一个子集的一个表中的记录。这个属性只影响快照。它不适用于事件连接器读取的日志。 属性包含一个以逗号分隔的完全限定表名的形式 从一个 “snapshot.select.statement。覆盖”:“客户。订单", "snapshot.select.statement.overrides.customer.orders": "SELECT * FROM [customers].[orders] WHERE delete_flag = 0 ORDER BY id DESC" 在生成的快照,连接器只包含的记录 |
|
|
在一个快照,每个表的连接查询连接器配置为捕捉变化。连接器使用每个查询结果产生一个包含数据读取事件表的所有行。这个属性决定了MySQL连接器将结果表到内存,速度快,但需要大量的内存,或流结果,可以慢,但工作非常大的表。这个属性指定的设置至少一个表的行数必须包含连接器之前流的结果。 |
|
|
控制频率连接器发送心跳消息到卡夫卡的主题。默认行为是连接器不发送心跳消息。 |
|
没有默认的 |
指定一个查询时,连接器在源数据库上执行连接器发送心跳消息。开云体育电动老虎机 |
|
没有默认的 |
分号分隔的SQL语句执行JDBC连接时,不读事务日志的连接,建立了数据库。开云体育电动老虎机指定一个分号字符在一个SQL语句,而不是作为一个分隔符,使用两个分号,( |
|
没有默认的 |
以毫秒为单位间隔,连接器之前应该等待连接器启动时执行一个快照。如果你开始集群中的多个连接器,这个属性是有用的为避免快照中断,这可能导致连接器的调整。 |
|
没有默认的 |
在一个快照,连接器批量读取表内容的行。这个属性指定批处理的最大行数。 |
|
|
正整数指定最大的时间(以毫秒为单位)等来获取表锁在执行一个快照。如果连接器不能获得表锁在这个时间间隔,快照就会失败。看到MySQL连接器执行数据库快照吗开云体育电动老虎机。 |
|
|
布尔值,用于显示连接器将两位年规范转换为4位数。设置为 |
|
|
模式的版本 |
|
|
一个以逗号分隔的操作类型,在流将被忽略。的操作包括: |
|
没有默认值 |
完全限定的名称用于发送的数据收集信号连接器。 |
|
源 |
||
没有默认的 |
||
|
允许在增量快照模式变化。当启用连接器将检测模式变化增量快照和重新选择当前块以避免锁定ddl。 |
|
|
的最大行数连接器存取和读取到内存块在增量快照。增加块大小提供了更高的效率,因为快照少运行快照查询一个更大的规模。然而,更大的块的大小也需要更多的内存缓冲区快照数据。调整块大小的值提供了最佳的性能在您的环境中。 |
|
|
切换到选择增量快照水印实现避免写入信号数据采集 |
|
|
决定连接器生成事件与事务与事务边界和丰富变化事件信封的元数据。指定 |
|
|
指定如何处理过程中失败的事件(例如,当遇到一个损坏的事件)应该处理。默认情况下, |
|
|
TopicNamingStrategy类的名称应该用于确定数据的主题名称变化,模式改变,交易,心跳事件等,默认 |
|
|
为主题名称指定分隔符,违约 |
|
|
大小用于举办的主题名称有界并发散列映射。这个缓存将有助于确定主题名称对应于给定的数据收集。 |
|
|
控件的名称连接器发送心跳消息的主题。主题名称有这种模式: |
|
|
控制主题的连接器的名称发送交易信息的元数据。主题名称有这种模式: |
|
|
连接器使用指定数量的线程在执行一个初始快照。支持并行初始快照,将属性设置为大于1的值。在一个平行的初始快照,连接器同时处理多个表。这个特性是孵化。 |
|
|
控制连接器的顺序流程表执行一个初始快照。指定以下选项之一:
|
开云体育官方注册网址Debezium连开云体育电动老虎机接器配置属性数据库模式历史
开云体育官方注册网址Debezium提供了一组schema.history.internal。*
属性控制连接器与模式交互历史话题。
下表描述了schema.history.internal
属性配置Debezium连接器。开云体育官方注册网址
财产 | 默认的 | 描述 | ||
---|---|---|---|---|
没有默认的 |
连接器的卡夫卡主题的全称存储数据库模式的历史。开云体育电动老虎机 |
|||
没有默认的 |
一个主机/端口对列表,建立一个初始的连接器使用连接到卡夫卡集群。这个连接是用于检索以前存储的数据库模式历史连接器,写作和每个DDL语句从源数据库读取。开云体育电动老虎机每一对应该指向同一个卡夫卡集群卡夫卡所使用的连接过程。 |
|||
|
一个整数值,它指定的最大数量毫秒连接器应该等待在启动/恢复,同时为持久化数据轮询。默认是100 ms。 |
|||
|
一个整数值,它指定的最大数量毫秒连接器应该等待获取集群信息使用卡夫卡管理客户机。 |
|||
|
一个整数值,它指定的最大数量毫秒连接器应该等待使用卡夫卡管理客户机创建卡夫卡的历史主题。 |
|||
|
连接器的最大次数应该尝试读取保存历史数据连接器之前恢复失败的错误。最大的时间等待后没有数据 |
|||
|
一个布尔值,用于指定连接器是否应该忽略畸形或未知的数据库语句或停止处理,所以人类可以解决这个问题。开云体育电动老虎机安全默认是 |
|||
|
一个布尔值,用于指定连接器是否应该记录所有从数据库模式或指定DDL语句开云体育电动老虎机
安全默认是 |
|||
|
一个布尔值,用于指定连接器是否应该记录所有DDL语句
|
开云体育官方注册网址Debezium依赖于卡夫卡生产商编写模式的更改数据库模式的历史主题。开云体育电动老虎机同样的,它依赖于消费者阅读卡夫卡连接器开始时从数据库模式的历史主题。开云体育电动老虎机您定义的配置卡夫卡生产国和消费国的客户通过将值分配给一组开始的直通配置属性schema.history.internal.producer。*
和schema.history.internal.consumer。*
前缀。直通生产国和消费国数据库模式历史属性控制的一系列行为,比如如何将这些客户与卡夫开云体育电动老虎机卡代理安全连接,如以下示例所示:
SSL schema.history.internal.producer.ssl.keystore.location schema.history.internal.producer.security.protocol = = / var /私人/ SSL / kafka.server.keystore.jks schema.history.internal.producer.ssl.keystore.password = test1234 schema.history.internal.producer.ssl.truststore.location = / var /私人/ SSL / kafka.server.truststore.jks schema.history.internal.producer.ssl.truststore.password = test1234 schema.history.internal.producer.ssl.key.password = test1234 schema.history.internal.consumer.security.protocol = SSL schema.history.internal.consumer.ssl.keystore.location = / var /私人/ SSL / kafka.server.keystore.jks schema.history.internal.consumer.ssl.keystore.password = test1234 schema.history.internal.consumer.ssl.truststore.location = / var /私人/ SSL / kafka.server.truststore.jks schema.history.internal.consumer.ssl.truststore.password = test1234 schema.history.internal.consumer.ssl.key.password = test1234
开云体育官方注册网址Debezium带前缀的属性名之前,将属性传递到卡夫卡客户机。
看到卡夫卡文档了解更多细节卡夫卡生产商配置属性和卡夫卡消费者配置属性。
开云体育官方注册网址Debezium连接器卡夫卡信号配置属性
开云体育官方注册网址Debezium提供了一组信号。*
属性控制连接器与卡夫卡的信号交互的话题。
下表描述了卡夫卡信号
属性。
财产 | 默认的 | 描述 |
---|---|---|
没有默认的 |
卡夫卡的名称主题,特设的连接器监控信号。 |
|
没有默认的 |
一个主机/端口对列表,建立一个初始的连接器使用连接到卡夫卡集群。每一对引用的卡夫卡集群Debezium卡夫卡所使用的连接过程。开云体育官方注册网址 |
|
|
一个整数值,它指定的最大数量毫秒时,连接器等轮询的信号。 |
开云体育官方注册网址Debezium直通信号连接器卡夫卡消费者客户端配置属性
Debe开云体育官方注册网址zium连接器提供了直通信号卡夫卡消费者的配置。直通信号属性从前缀开始signals.consumer。*
。例如,连接器传递属性等signal.consumer.security.protocol = SSL
卡夫卡的消费者。
一样的直通属性数据库模式历史客户开云体育电动老虎机,D开云体育官方注册网址ebezium带前缀的属性之前,会将它们传递到消费者卡夫卡信号。
开云体育官方注册网址Debezium连接器水槽通知配置属性
下表描述了通知
属性。
财产 | 默认的 | 描述 |
---|---|---|
没有默认的 |
主题的名称,从Debezium接收通知。开云体育官方注册网址这个属性是必需的配置 |
开云体育官方注册网址Debezium连接器直通数据库驱动程序的配置属性开云体育电动老虎机
Debe开云体育官方注册网址zium连接器提供了直通数据库驱动程序的配置。开云体育电动老虎机直通数据库属性从前缀开始开云体育电动老虎机司机。*
。例如,连接器传递属性等driver.foobar = false
JDBC URL。
一样的直通属性数据库模式历史客户开云体育电动老虎机之前开云体育官方注册网址,Debezium带前缀的属性将它们传递到数据库驱动程序。开云体育电动老虎机
监控
Debe开云体育官方注册网址zium MySQL连接器提供了三种类型的指标,除了动物园管理员的内置支持JMX的度量,卡夫卡,卡夫卡提供连接。
开云体育官方注册网址Debezium监控文档提供细节如何通过使用JMX公开这些指标。
快照指标
的MBean是开云体育官方注册网址debezium.mysql: type = connector-metrics上下文=快照,server =< mysql.server.name >
。
快照指标并非暴露,除非一个快照操作被激活时,或者如果发生自上次快照连接器的开始。
下表列出了shapshot指标可用。
属性 | 类型 | 描述 |
---|---|---|
|
读过的最后一个快照事件连接器。 |
|
|
连接器以来的毫秒数读取和处理最近的事件。 |
|
|
这个连接器的事件总数已经从去年开始或重置。 |
|
|
事件的数量已经被包括/排除列表过滤规则过滤配置连接器。 |
|
|
表的列表被连接器。 |
|
|
队列长度用来传递事件之间的快照和主卡夫卡连接循环。 |
|
|
队列的自由能力用来传递事件之间的快照和主卡夫卡连接循环。 |
|
|
表的总数被包含在快照。 |
|
|
表的数量尚未复制快照。 |
|
|
快照是否开始。 |
|
|
快照是否停了下来。 |
|
|
快照是否中止。 |
|
|
快照是否完成。 |
|
|
总秒数,快照到目前为止,即使不完整。也包括时间快照时停了下来。 |
|
|
总秒数,快照是暂停。如果快照停了好几次,暂停时间增加。 |
|
|
地图包含扫描的行数为每个表的快照。表在处理过程中也逐渐被添加到地图。更新一个表扫描并完成每10000行。 |
|
|
的最大缓冲区队列以字节为单位。这个指标是可用的 |
|
|
当前的体积,以字节为单位,记录在队列中。 |
连接器还提供了以下额外的快照指标执行增量快照时:
属性 | 类型 | 描述 |
---|---|---|
|
当前的快照数据块的标识符。 |
|
|
下界的主键设置定义当前块。 |
|
|
主键的上限设置定义当前块。 |
|
|
下界的当前快照的表的主键设置。 |
|
|
主键的上界的当前快照表。 |
Debe开云体育官方注册网址zium MySQL连接器也提供了HoldingGlobalLock
自定义度量快照。这个指标被设置为一个布尔值来指示连接器目前持有全球或表写锁。
流指标
Transaction-related属性可用只有binlog事件启用缓冲。看到binlog.buffer.size
先进的连接器配置属性的更多细节。:leveloffset: + 1
的MBean是开云体育官方注册网址debezium.mysql: type = connector-metrics、上下文=流媒体服务器=< mysql.server.name >
。
下表列出了流指标可用。
属性 | 类型 | 描述 |
---|---|---|
|
过去的流事件连接器已经阅读。 |
|
|
连接器以来的毫秒数读取和处理最近的事件。 |
|
|
事件,该连接器的总数已经重置自上次启动或指标。 |
|
|
创建事件的总数,这个连接器以来最后复位启动或指标。 |
|
|
更新事件的总数,这个连接器以来最后复位启动或指标。 |
|
|
删除事件,该连接器的总数已经重置自上次启动或指标。 |
|
|
事件的数量已经被包括/排除列表过滤规则过滤配置连接器。 |
|
|
表的列表被连接器。 |
|
|
队列长度之间的拖缆和主要用来传递事件卡夫卡连接循环。 |
|
|
队列的自由能力用来传递事件之间的拖缆和主卡夫卡连接循环。 |
|
|
国旗,表示连接器是否正在连接到数据库服务器。开云体育电动老虎机 |
|
|
的毫秒数去年更改事件的时间戳和连接器之间的处理它。值将会把机器上的任何差异时钟运行数据库服务器和连接器。开云体育电动老虎机 |
|
|
处理事务的数量。 |
|
|
去年收到事件的坐标。 |
|
|
事务标识符的处理事务。 |
|
|
的最大缓冲区队列以字节为单位。这个指标是可用的 |
|
|
当前的体积,以字节为单位,记录在队列中。 |
Debe开云体育官方注册网址zium MySQL连接器还提供以下额外流指标:
属性 | 类型 | 描述 |
---|---|---|
|
binlog文件的名称,连接器最近阅读。 |
|
|
最近的位置(以字节为单位)内binlog连接器已经阅读。 |
|
|
国旗,表示是否连接器目前跟踪GTIDs从MySQL服务器。 |
|
|
的字符串表示最近GTID设置阅读binlog时处理的连接器。 |
|
|
事件的数量已经跳过的MySQL连接器。事件通常跳过由于畸形或从MySQL的binlog unparseable事件。 |
|
|
MySQL连接器断开连接的数量。 |
|
|
的数量处理事务被回滚,不流。 |
|
|
交易的数量不符合预期的协议 |
|
|
交易的数量并没有融入先行的缓冲区。为获得最佳性能,应显著小于这个值 |
模式历史指标
的MBean是开云体育官方注册网址debezium.mysql: type = connector-metrics、上下文= schema-history服务器=< mysql.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连接器任务终止没有他们最最近处理补偿开云体育官方注册网址被记录。在分布式模式中,卡夫卡在其他进程重启连接器连接任务。然而,MySQL连接器简历上次抵消之前记录的过程。这意味着更换任务可能产生一些相同的事件处理事故前,创建重复的事件。
每个更改数据源特定事件消息包括信息,您可以使用它们来识别重复的事件,例如:
事件的起源
MySQL服务器的事件时间
binlog文件名和位置
GTIDs(如果使用)
卡夫卡变得不可用
卡夫卡连接框架Debezium改变事件记录在卡夫卡通过卡夫卡生产商API开云体育官方注册网址。如果卡夫卡经纪人不可用,Debezium MySQL连接器停顿,直到连接重建和连接器的简历开云体育官方注册网址。
MySQL清洗binlog文件
如果Debez开云体育官方注册网址ium MySQL连接器停止太长时间,MySQL服务器清洗旧binlog文件和连接器的最后位置可能会丢失。当重新启动连接器,MySQL服务器不再有起点和连接器执行另一个初始快照。如果快照是禁用的,连接器失败的错误。
看到快照详情如何MySQL连接器执行初始快照。