添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
搜索

6.6. Debezium Oracle 连接器配置属性的描述

download PDF

Debezium Oracle 连接器有许多配置属性,您可以使用它们来实现应用程序的正确连接器行为。许多属性具有默认值。有关属性的信息按如下方式进行组织: 所需的 Debezium Oracle 连接器配置属性 数据库架构历史记录配置属性 ,用于控制 Debezium 如何处理从数据库架构历史记录主题读取的事件。 透传数据库模式历史记录属性 控制 数据库驱动程序行为的直通数据库驱动程序属性

所需的 Debezium Oracle 连接器配置属性

除非默认值可用 否则需要以下配置属性。 没有默认值 连接器的唯一名称。尝试再次使用相同的名称注册将失败。(所有 Kafka Connect 连接器都需要此属性。) connector.class 没有默认值 连接器的 Java 类的名称。对于 Oracle 连接器,始终使用 io.debezium.connector.oracle.OracleConnector 的值。 converters 没有默认值 枚举连接器可以使用 的自定义转换器 实例的符号名称的逗号分隔列表。
例如, 布尔值
需要此属性才能使连接器使用自定义转换器。 对于您为连接器配置的每个转换器,还必须添加一个 .type 属性,它指定了实现转换器接口的类的完全限定域名。 .type 属性使用以下格式:
<converterSymbolicName> .type

boolean.type: io.debezium.connector.oracle.converters.NumberOneToBooleanConverter
如果要进一步控制配置的转换器的行为,您可以添加一个或多个配置参数将值传递给转换器。要将任何其他配置参数与转换器关联,请将参数名称与转换器的符号链接名称添加前缀。

例如,要定义 一个选择器 参数,用于指定 布尔值 转换器进程的列子集,请添加以下属性:
boolean.selector: .*MYTABLE.FLAG,.*.IS_ARCHIVED
tasks.max 为此连接器创建的最大任务数量。Oracle 连接器始终使用单个任务,因此不要使用这个值,因此始终可以接受默认值。 database.hostname 没有默认值 Oracle 数据库服务器的 IP 地址或主机名。 database.port 没有默认值 Oracle 数据库服务器的整数端口号。 database.user 没有默认值 连接器用于连接 Oracle 数据库服务器的 Oracle 用户帐户的名称。 database.password 没有默认值 连接到 Oracle 数据库服务器时要使用的密码。 database.dbname 没有默认值 要连接的数据库的名称。使用 CDB + PDB 模型时,必须是 CDB 名称。 database.url 没有默认值 指定原始数据库 JDBC URL。使用此属性提供定义数据库连接的灵活性。有效值包括原始 TNS 名称和 RAC 连接字符串。 database.pdb.name 没有默认值 要连接的 Oracle 可插拔数据库的名称。仅将此属性用于容器数据库(CDB)安装。 topic.prefix 没有默认值 为连接器从中捕获更改的 Oracle 数据库服务器提供命名空间的主题前缀。您设置的值用作连接器发出的所有 Kafka 主题名称的前缀。指定 Debezium 环境中所有连接器的唯一主题前缀。以下字符有效:字母数字字符、连字符、句点和下划线。

不要更改此属性的值。如果您更改了 name 值,重启后,而不是继续向原始主题发出事件,连接器会将后续事件发送到名称基于新值的主题。连接器也无法恢复其数据库架构历史记录主题。 database.connection.adapter LogMiner 连接器在流数据库更改时使用的适配器实现。您可以设置以下值: logminer (默认):: 连接器使用原生 Oracle LogMiner API。 snapshot.mode Initial 指定连接器用来获取捕获表快照的模式。您可以设置以下值:
always
快照包括捕获表的结构和数据。指定这个值,以使用每个连接器启动时捕获的表中数据的完整表示填充主题。
Initial
快照包括捕获表的结构和数据。指定这个值以使用捕获表中的数据的完整表示填充主题。如果快照成功完成,在下一次连接器启动快照不会再次执行。
initial_only
快照包括捕获表的结构和数据。连接器执行初始快照,然后停止,而不处理后续更改。
schema_only
快照仅包含捕获表的结构。如果您希望连接器仅在快照后更改捕获数据,请指定这个值。
schema_only_recovery
这是已捕获更改的连接器的恢复设置。当您重启连接器时,此设置启用了恢复损坏的或丢失的数据库架构历史记录主题。您可以定期将其设置为"clean up"一个意外增长的数据库架构历史记录主题。数据库架构历史记录主题需要无限保留。请注意,只有在保证不发生架构更改时,才会安全地使用此模式,因为连接器在之前关闭的时间,以及执行快照的时间点。 快照完成后,连接器将继续从数据库的红色日志读取更改事件,除非 snapshot.mode 配置为 initial_only 。 如需更多信息,请参阅 snapshot.mode 选项表 snapshot.locking.mode shared 控制连接器保存表锁定的时长。表锁定可防止连接器执行快照时发生某些类型的更改表操作。您可以设置以下值:
shared
启用对表的并发访问,但会阻止任何会话获取专用表锁定。连接器在捕获表模式时获取 ROW SHARE 级别锁定。 防止连接器在快照过程中获取任何表锁定。只有在创建快照过程中没有发生模式更改时,才使用此设置。 snapshot.include.collection.list table.include.list 中指定的所有表 一个可选的、以逗号分隔的正则表达式列表,与表的完全限定名称(< schemaName> . & lt; tableName&gt ;)匹配,以便包括在快照中。只有 POSIX 正则表达式有效。指定的项目必须在连接器的 table.include.list 属性中命名。只有在连接器的 snapshot.mode 属性设置为除 never 以外的值时,此属性才会生效。
此属性不会影响增量快照的行为。
要匹配表的名称,Debebe 应用您指定的正则表达式。 也就是说,指定的表达式与表的整个名称字符串匹配,它与表名称中可能存在的子字符串不匹配。 snapshot.select.statement.overrides 没有默认值 指定要包含在快照中的表行。如果您希望快照仅在表中包括行的子集,请使用此属性。此属性仅影响快照。它不适用于连接器从日志中读取的事件。 属性包含一个以逗号分隔的表名称列表,格式为 < schemaName>.<tableName&gt ;。例如,

"snapshot.select.statement.overrides": "inventory.products,customers.orders"

For the list 中的每个表,添加一个进一步的配置属性,用于指定连接器在进行快照时要在表上运行的 SELECT 语句。指定 SELECT 语句决定快照中包含的表行的子集。使用以下格式指定这个 SELECT 语句属性的名称:

snapshot.select.statement.overrides. < schemaName> . &lt ; tableName&gt ;

,例如 snapshot.select.statement.overrides.customers.orders

示例: 在包含 soft-delete 列 delete_flag customers.orders 表中,如果您希望快照只包含不是软删除的记录,请添加以下属性:
"snapshot.select.statement.overrides": "customer.orders",
"snapshot.select.statement.overrides.customer.orders": "SELECT * FROM [customers].[orders] WHERE delete_flag = 0 ORDER BY id DESC"
在生成的快照中,连接器仅包含 delete_flag = 0 的记录。 schema.include.list 没有默认值 可选的、以逗号分隔的正则表达式列表, 与您要 捕获更改的模式的名称匹配。只有 POSIX 正则表达式有效。任何未包含在 schema. include.list 中的模式 名称都不包括在捕获其更改的情况下。默认情况下,所有非系统模式都会捕获其更改。
要匹配架构的名称,Debezium 应用您指定的正则表达式,以 替代 的正则表达式。也就是说,指定的表达式与模式的整个名称字符串匹配,它与 schema 名称中可能存在的子字符串不匹配。
如果您在配置中包含此属性,不要设置 schema.exclude.list 属性。 include.schema.comments false 指定连接器是否应该解析和发布元数据对象上的表和列注释的布尔值。启用此选项会对内存用量造成影响。逻辑架构对象的数量和大小严重影响 Debezium 连接器消耗的内存量,并为每一个字符串添加潜在的大型字符串数据可能非常昂贵。 schema.exclude.list 没有默认值 可选的、以逗号分隔的正则表达式列表,与 您不想 捕获更改的模式的名称匹配。只有 POSIX 正则表达式有效。任何名称没有包含在 schema. exclude.list 中的模式 都会捕获其更改,但系统模式除外。
要匹配架构的名称,Debezium 应用您指定的正则表达式,以 替代 的正则表达式。也就是说,指定的表达式与模式的整个名称字符串匹配,它与 schema 名称中可能存在的子字符串不匹配。
如果您在配置中包含此属性,请不要设置 'schema.include.list' 属性。 table.include.list 没有默认值 可选的正则表达式列表,与要捕获的表的完全限定表标识符匹配。只有 POSIX 正则表达式有效。当设置此属性时,连接器只从指定的表中捕获更改。每个表标识符都使用以下格式:

< schema_name>.<table_name >

默认,连接器会监控每个捕获的数据库中的每个非系统表。
要匹配表的名称,Debebe 应用您指定的正则表达式。 也就是说,指定的表达式与表的整个名称字符串匹配,它与表名称中可能存在的子字符串不匹配。
如果您在配置中包含此属性,不要设置 table.exclude.list 属性。 table.exclude.list 没有默认值 可选的正则表达式列表,与要从监控中排除的表的完全限定表标识符匹配。只有 POSIX 正则表达式有效。连接器从排除列表中指定的任何表中捕获更改事件。使用以下格式为每个表指定标识符:

< schemaName>.<tableName> 。 要匹配表的名称,Debebe 应用您指定的正则表达式。 也就是说,指定的表达式与表的整个名称字符串匹配,它与表名称中可能存在的子字符串不匹配。
如果您在配置中包含此属性,不要设置 table.include.list 属性。 column.include.list 没有默认值 可选的、以逗号分隔的正则表达式列表,与更改事件消息值中包含的列的完全限定名称匹配。只有 POSIX 正则表达式有效。列的完全限定域名使用以下格式:

< Schema_name>.<table_name>.<column_name >

the primary key 列始终包含在事件键中,即使您没有使用此属性显式包含其值。
要匹配列的名称,Debebe 应用您指定的正则表达式。 也就是说,指定的表达式与列的整个名称字符串匹配,它与列名称中可能存在的子字符串不匹配。
如果您在配置中包含此属性,不要设置 column.exclude.list 属性。 column.exclude.list 没有默认值 可选的、以逗号分隔的正则表达式列表,与您要从更改事件消息值中排除的列的完全限定名称匹配。只有 POSIX 正则表达式有效。完全限定列名称使用以下格式:

< schema_name>.<table_name>.<column_name >

The primary key 列始终包含在事件键中,即使您使用此属性显式排除其值。
要匹配列的名称,Debebe 应用您指定的正则表达式。 也就是说,指定的表达式与列的整个名称字符串匹配,它与列名称中可能存在的子字符串不匹配。
如果您在配置中包含此属性,请不要设置 column.include.list 属性。 column.mask.hash. hashAlgorithm .with.salt. salt ; hash- hash.v2. hashAlgorithm .with.salt. salt 一个可选的、以逗号分隔的正则表达式列表,与基于字符的列的完全限定名称匹配。列的完全限定域名格式为 <schemaName> . <tableName> . <columnName> .
要匹配 column Debezium 的名称,请应用您指定为 正则表达式的正则表达式。也就是说,指定的表达式与列的整个名称字符串匹配;表达式不匹配列名称中可能存在的子字符串。
在生成的更改事件记录中,指定列的值替换为 pseudonyms。
一个 pseudonym,它包括了通过应用指定的 hashAlgorithm salt 的结果的哈希值。根据使用的 hash 功能,会维护引用完整性,而列值则替换为伪nyms。支持的哈希功能在 Java Cryptography 架构标准算法名称文档中的 MessageDigest 部分 进行了描述。

在以下示例中, CzQMA0cB5K 是一个随机选择的 salt。
column.mask.hash.SHA-256.with.salt.CzQMA0cB5K = inventory.orders.customerName, inventory.shipment.customerName
如有必要,伪的nym 会自动缩短到列的长度。连接器配置可以包含多个指定不同哈希算法和 salt 的属性。

根据使用的 hashAlgorithm 、选择 salt 以及实际数据集,生成的数据集可能无法完全屏蔽。

如果该值在不同的位置或系统中被哈希化,则应使用哈希策略版本 2 来确保光纤。 binary.handling.mode bytes 指定二进制( blob )列在更改事件中代表,包括: bytes 代表二进制数据作为字节数组(默认), base64 代表二进制数据作为 base64 编码的字符串, base64-url-safe 代表二进制数据作为 base64-url-safe- String, hex 代表二进制数据作为十六进制编码(base16)字符串 schema.name.adjustment.mode 指定如何调整架构名称,以便与连接器使用的消息转换器兼容。可能的设置:
none 不适用任何调整。
Avro 将 Avro 类型名称中使用的字符替换为下划线。
decimal.handling.mode 指定连接器如何处理 NUMBER DECIMAL NUMERIC 列的浮动点值。您可以设置以下选项之一:
精确 (默认)
通过使用以二进制格式更改事件中的 java.math.BigDecimal 值来精确表示值。
double
使用 值表示值。使用 值更为简单,但可能会导致精度丢失。 将值编码为格式的字符串。使用 字符串 选项更易于使用,但会导致有关实际类型的语义信息丢失。更多信息请参阅 数字类型 interval.handling.mode numeric 指定连接器应该如何处理 interval 列的值:

数字代表使用大约微秒数的间隔。

字符串通过使用字符串 模式表示 P<years>Y<months>M<days>DT<hours>H<minutes>M<seconds>S 代表间隔。 例如: P1Y2M3DT4H5M6.78S event.processing.failure.handling.mode 指定连接器在处理事件时应如何响应异常。您可以设置以下选项之一: 传播异常(代表有问题的事件偏移),从而导致连接器停止。 导致有问题的事件被跳过。然后会记录有问题的事件的偏移。 导致有问题的事件被跳过。 max.batch.size 一个正整数值,用于指定每个连接器迭代期间要处理的事件的最大大小。 max.queue.size 正整数值,用于指定阻塞队列可以保存的最大记录数。当 Debezium 从数据库读取事件时,它会将事件放置在阻塞队列中,然后再将它们写入 Kafka。当连接器将消息写入 Kafka 或 Kafka 不可用时,阻塞队列可以提供从数据库读取更改事件的后端。当连接器定期记录偏移时,队列中保存的事件会被忽略。始终将 max.queue.size 的值设置为大于 max.batch.size 的值。 max.queue.size.in.bytes 0 (禁用) 较长的整数值,指定块队列的最大卷(以字节为单位)。默认情况下,不会为阻塞队列指定卷限制。要指定队列可以使用的字节数,请将此属性设置为正长值。
如果还设置了 max.queue.size ,当队列的大小达到任一属性指定的限制时,写入队列会被阻断。例如,如果您设置了 max.queue.size=1000 , 和 max.queue.size.in.bytes=5000 ,则在队列包含 1000 记录后,或者队列中记录的卷达到 5000 字节后会被阻断。 poll.interval.ms 500 (0.5 second) 正整数值,用于指定连接器在每次迭代期间应该等待的毫秒数,以便显示新的更改事件。 tombstones.on.delete 控制 删除 事件是否随后是 tombstone 事件。可能会有以下值: 对于每个 delete 操作,连接器会发出 delete 事件和后续 tombstone 事件。
false
对于每个删除操作,连接器只发出一个 delete 事件。 删除源记录后,tombstone 事件(默认行为)可让 Kafka 完全删除启用了 日志压缩的主题中已删除行键的所有事件 message.key.columns 没有默认值 指定连接器用来组成自定义消息键的表达式列表,以更改它发布到指定表的 Kafka 主题的事件记录。 默认情况下,Debezium 使用表的主键列作为它发出的记录的消息键。对于缺少主密钥的表,或者指定缺少主密钥的表的密钥,您可以根据一个或多个列配置自定义消息密钥。
要为表建立自定义消息键,请列出表,后跟要用作消息键的列。每个列表条目的格式都是:

< fullyQualifiedTableName> : & lt;keyColumn &gt ; , <keyColumn >

to a table key on multiple 列名称,在列名称之间插入逗号。
每个完全限定表名称都是正则表达式,格式为:

< schemaName >。& lt;tableName >

属性可以包含多个表的条目。使用分号分隔列表中的表条目。
以下示例为表 inventory.customers purchase.orders :

inventory 设置了消息键。customers:pk1,pk2; (rhacm).purchaseorders:pk3,pk4

用于表 清单。客户 ,列 pk1 pk2 被指定为 message 键。对于任意 模式中的订购 表,列 pk3 pk4 服务器作为消息键。
对您用来创建自定义消息键的列数没有限制。但是,最好使用指定唯一密钥所需的最小数量。 column.truncate.to. length .chars 没有默认值 一个可选的、以逗号分隔的正则表达式列表,与基于字符的列的完全限定名称匹配。如果您希望连接器屏蔽一组列的值,例如,如果它们包含敏感数据,则设置此属性。将 length 设置为正整数,将指定列中的数据替换为属性名称中 长度 指定的星号(DSL)字符数。 length 设为 0 ( 零)将指定列中的数据替换为空字符串。 列的完全限定域名会观察以下格式:< schemaName > . < tableName> . & lt; columnName&gt ;。要匹配列的名称,Debebe 应用您指定的正则表达式。 也就是说,指定的表达式与列的整个名称字符串匹配;表达式不匹配列名称中可能存在的子字符串。 您可以在单个配置中指定多个长度不同的属性。 column.mask.with. length .chars 没有默认值 可选的、以逗号分隔的正则表达式列表,用于更改事件消息中的掩码列名称,方法是用星号替换字符(DSL)。
指定在属性名称中要替换的字符数,例如 column.mask.with.8.chars
将 length 指定为正整数或零。然后,为每个要应用掩码的基于字符的列名称添加正则表达式。
使用以下格式指定完全限定列名称:< schemaName> . < tableName& gt; . &lt ; columnName&gt ;。

连接器配置可以包含多个指定不同长度的属性。 column.propagate.source.type 没有默认值 可选的、以逗号分隔的正则表达式列表,它与您希望连接器发送代表列元数据的完全限定名称匹配。当设置此属性时,连接器会将以下字段添加到事件记录的架构中: __debezium.source.column.type
__debezium.source.column.length
__debezium.source.column.scale
这些参数分别传播列的原始类型和长度(用于变量带宽类型)。
启用连接器发送这个额外数据有助于正确调整接收器数据库中的特定数字或基于字符的列。 列的完全限定域名会观察以下格式之一:< tableName> . < columnName> , 或 & lt; schemaName&gt ; . < tableName& gt; . &lt ; columnName&gt ; .
要匹配列的名称,Debebe 应用您指定的正则表达式。 也就是说,指定的表达式与列的整个名称字符串匹配;表达式不匹配列名称中可能存在的子字符串。 datatype.propagate.source.type 没有默认值 可选的、以逗号分隔的正则表达式列表,用于指定为数据库列定义的数据类型的完全限定名称。当设置此属性时,对于具有匹配数据类型的列,连接器会发出事件记录,该记录在 schema 中包含以下额外字段: __debezium.source.column.type
__debezium.source.column.length
__debezium.source.column.scale
这些参数分别传播列的原始类型和长度(用于变量带宽类型)。
启用连接器发送这个额外数据有助于正确调整接收器数据库中的特定数字或基于字符的列。 列的完全限定域名会观察以下格式之一:< tableName> . < typeName> , 或 & lt; schemaName&gt ; . < tableName& gt; . &lt ; typeName&gt ; .
要匹配数据类型的名称,Debebe 应用您指定的正则表达式。 也就是说,指定的表达式与数据类型的整个名称字符串匹配;表达式不匹配类型名称中可能存在的子字符串。 有关特定于 Oracle 的数据类型名称的列表,请查看 Oracle 数据类型映射 heartbeat.interval.ms 以毫秒为单位指定连接器发送消息的频率。
使用此属性来确定连接器是否继续从源数据库接收更改事件。
在延长期间捕获的表中没有发生改变事件时,设置属性也很有用。
在这种情况下,虽然连接器继续读取 redo 日志,但它不会发出更改事件信息,因此 Kafka 主题中的偏移不会改变。因为连接器没有清除它从数据库读取的最新系统更改号(SCN),所以数据库可能会保留红色的日志文件。如果连接器重启,扩展保留周期可能会导致连接器冗余发送一些更改事件。
默认值为 0 可防止连接器发送任何心跳信息。 heartbeat.action.query 没有默认值 指定连接器发送心跳消息时连接器在源数据库上执行的查询。

例如:

INSERT INTO test_heartbeat_table (text) VALUES ('test_heartbeat')

。连接器在发出 心跳消息 后运行查询。 设置此属性并创建一个心跳表来接收心跳消息,以解决 Debezium 无法同步与高流量数据库 相同的主机上的偏移量。连接器将记录插入到配置的表中后,它可以从低流量数据库接收更改,并确认数据库中的 SCN 更改,以便偏移可与代理同步。 snapshot.delay.ms 没有默认值 指定连接器在创建快照前等待的时间(毫秒)。
使用此属性来防止在集群中启动多个连接器时快照中断,这可能会导致对连接器进行重新平衡。 snapshot.fetch.size 指定在进行快照时应从一个表中读取的最大行数。连接器以指定大小的多个批处理读取表内容。 query.fetch.size 没有默认值 指定在给定查询的每个数据库往返时将获取的行数。默认为 JDBC 驱动程序的默认获取大小。 sanitize.field.names 当连接器配置明确指定使用 Avro 的 key.converter value.converter 参数,否则默认为 false 指定字段名称是否规范化,以符合 Avro 命名要求。如需更多信息,请参阅 Avro 命名 provide.transaction.metadata false 如果您希望 Debezium 生成带有事务边界的事件,并使用事务元数据增强数据事件,则将属性设置为 true 。 如需了解更多详细信息, 请参阅事务元数据 log.mining.strategy redo_log_catalog 指定最小策略,用于控制 Oracle LogMiner 构建和使用给定数据字典解析表和列 ids to name。

redo_log_catalog :: Writes 数据字典到在线红色日志会导致一段时间内生成更多归档日志。这也启用了针对捕获的表跟踪 DDL 更改,因此如果架构经常更改是理想的选择。

online_catalog :: 使用数据库的当前数据字典解析对象 ID,且不会将任何额外信息写入在线红色日志。这可让 LogMiner 更快地减去,但成本是无法跟踪 DDL 更改的费用。如果捕获的表不常或从来改变,则这是理想的选择。 log.mining.buffer.type 缓冲区类型控制连接器如何管理缓冲区事务数据。

内存 - 使用 JVM 进程堆来缓冲所有事务数据。如果您不期望连接器处理大量长时间运行或大型事务,请选择这个选项。当此选项处于活跃状态时,缓冲区状态在重启后不会保留。重启后,从当前偏移的 SCN 值重新创建缓冲区。
log.mining.session.max.ms 在使用新会话前,LogMiner 会话可以处于活跃状态的最大毫秒数。

对于低卷系统,当同一会话用于长时间时,LogMiner 会话可能会消耗太多 PGA 内存。默认行为是仅在检测到日志交换机时使用新的 LogMiner 会话。通过将此值设置为大于 0 的内容,这指定了 LogMiner 会话在停止并启动分配和重新分配 PGA 内存前可以激活的最大毫秒数。 log.mining.batch.size.min 此连接器尝试从 redo/archive 日志中读取的最小 SCN 间隔大小。活跃批处理大小也会根据需要增加/减少这个数量,以便调整连接器吞吐量。 log.mining.batch.size.max 100000 此连接器从 redo/archive 日志读取时使用的最大 SCN 间隔大小。 log.mining.batch.size.default 20000 连接器用于从 redo/archive 日志中读取数据的起始 SCN 间隔大小。这也服务器是调整批处理大小的方法 - 当当前 SCN 和批处理开始/结束 SCN 之间的区别大于这个值时,批处理大小会增加/降低。 log.mining.sleep.time.min.ms 从 redo/archive 日志读取数据后连接器休眠的最短时间,并在重新读取数据前开始读取数据。值以毫秒为单位。 log.mining.sleep.time.max.ms 连接器在从 redo/archive 日志读取数据后的最大时间,并在重新读取数据前开始读取数据。值以毫秒为单位。 log.mining.sleep.time.default.ms 连接器在从 redo/archive 日志读取数据后休眠的时间,并在重新读取数据前开始读取数据。值以毫秒为单位。 log.mining.sleep.time.increment.ms 连接器在从 logminer 读取数据时用于调整最佳睡眠时间的最大时间。值以毫秒为单位。 log.mining.archive.log.hours 过去的小时数从 SYSDATE 到 mine 归档日志。当使用默认设置( 0 )时,连接器会减去所有归档日志。 log.mining.archive.log.only.mode false 控制连接器是否从归档日志或在线 redo 日志和归档日志(默认)的组合中减去更改。

redo 日志使用可在任何时间点上归档的循环缓冲区。在频繁归档在线红色日志的环境中,这可能会导致 LogMiner 会话失败。与 redo 日志不同,可保证归档日志可靠。将这个选项设置为 true ,以强制连接器仅减减归档日志。将连接器设置为仅减去存档日志后,正在提交的操作和发送关联的更改事件的连接器可能会增加。延迟程度取决于将数据库配置为归档在线恢复日志的频率。 log.mining.archive.log.only.scn.poll.interval.ms 10000 连接器在轮询之间休眠的毫秒数,以确定启动系统更改号是否在归档日志中。如果没有启用 log.mining.archive.log.only.mode ,则不会使用此设置。 log.mining.transaction.retention.hours 正整数值,用于指定在 redo 日志交换机之间保留长时间运行的事务的小时数。当设置为 0 时,会保留事务,直到检测到提交或回滚为止。 LogMiner 适配器维护所有正在运行的事务的内存缓冲。因为所有作为事务一部分的 DML 操作都会被缓冲,直到检测到提交或回滚,所以应该避免长时间运行的事务来溢出该缓冲区。任何超过此配置值的事务都会完全丢弃,连接器不会为属于事务的操作发出任何消息。 log.mining.archive.destination.name 没有默认值 指定在使用 LogMiner 最小归档日志时要使用的 Oracle 归档目的地。

默认行为会自动选择第一个有效的本地配置的目的地。但是,您可以通过提供目的地名称来使用特定目的地,例如 LOG_ARCHIVE_DEST_5 log.mining.username.exclude.list 没有默认值 要从 LogMiner 查询中排除的数据库用户列表。如果您希望捕获过程始终排除特定用户所做的更改,则设置此属性非常有用。 log.mining.scn.gap.detection.gap.size.min 1000000 指定连接器与当前和之前的 SCN 值之间的区别进行比较的值,以确定是否存在 SCN 差距。如果 SCN 值之间的区别大于指定的值,且时间差大于 log.mining.scn.gap.detection.time.interval.max.ms ,则检测到 SCN 差距,连接器将使用大于配置的最大批处理的 mining 窗口。 log.mining.scn.gap.detection.time.interval.max.ms 20000 指定一个值(以毫秒为单位),连接器与当前和之前的 SCN 时间戳之间的区别进行比较,以确定是否存在 SCN 差距。如果时间戳之间的区别小于指定的值,并且 SCN delta 大于 log.mining.scn.gap.detection.gap.size.min ,则检测到 SCN 差距,连接器将使用大于配置的最大批处理的 mining 窗口。 lob.enabled false 控制是否在更改事件时发送大型对象(CLOB 或 BLOB)列值。

默认情况下,更改事件具有大的对象列,但列不包含值。处理和管理大型对象列类型和有效负载时存在一定的开销。要捕获大型对象值并在更改事件中序列化它们,请将此选项设置为 true 。 使用大型对象数据类型是一个技术预览功能。 unavailable.value.placeholder __debezium_unavailable_value 指定连接器提供的常量,以指示原始值保持不变,且不由数据库提供。 rac.nodes 没有默认值 以逗号分隔的 Oracle Real Application Clusters (RAC)节点主机名或地址列表。需要此字段才能与 Oracle RAC 部署兼容。 使用以下方法之一指定 RAC 节点列表: 为 database.port 指定一个值,并为 rac.nodes 列表中每个地址使用指定的 port 值。例如:

database.port=1521
rac.nodes=192.168.1.100,192.168.1.101
  • database.port 指定一个值,并覆盖列表中一个或多个条目的默认端口。该列表可以包含使用默认 database.port 值的条目,以及定义其自身唯一端口值的条目。例如:

    database.port=1521
    rac.nodes=192.168.1.100,192.168.1.101:1522
  • 如果您使用 database.url 属性为数据库提供原始 JDBC URL,而不是为 database.port 定义值,则每个 RAC 节点条目都必须明确指定端口值。 skipped.operations 您希望连接器在流期间跳过的操作类型的逗号分隔列表。您可以配置连接器来跳过以下类型的操作: C (插入/创建) u (update) D (删除) T (truncate) 默认情况下,仅跳过截断操作。 signal.data.collection 没有默认值 用于向连接器发送信号的数据收集的完全限定名称。 https://access.redhat.com/documentation/zh-cn/red_hat_integration/2023.q2/html-single/debezium_user_guide/index#debezium-signaling-enabling-signaling 当您将此属性与 Oracle 可插拔数据库(PDB)搭配使用时,将其值设为 root 数据库的名称。
    使用以下格式指定集合名称:
    < databaseName> . < schemaName& gt; . &lt ; tableName> incremental.snapshot.chunk.size 连接器在增量快照块期间获取并读取内存的最大行数。增加块大小可提高效率,因为快照会运行更大的快照查询。但是,较大的块大小还需要更多内存来缓冲快照数据。将块大小调整为在您的环境中提供最佳性能的值。 topic.naming.strategy io.debezium.schema.SchemaTopicNamingStrategy 应该用来决定数据更改的主题名称、模式更改、事务、心跳事件等的 TopicNamingStrategy 类的名称,默认为 SchemaTopicNamingStrategy topic.delimiter 指定主题名称的分隔符,默认为 . topic.cache.size 10000 用于在绑定并发哈希映射中保存主题名称的大小。此缓存有助于确定与给定数据收集对应的主题名称。 topic.heartbeat.prefix __debezium-heartbeat 控制连接器向发送心跳消息的主题名称。主题名称具有此模式:

    topic.heartbeat.prefix . topic.prefix

    ,如果主题前缀是 fulfillment ,则默认主题名称为 __debezium-heartbeat.fulfillment topic.transaction 控制连接器向发送事务元数据消息的主题名称。主题名称具有此模式:

    topic.prefix . topic.transaction

    ,例如,如果主题前缀是 fulfillment ,则默认主题名称为 fulfillment.transaction

    Debezium Oracle 连接器数据库模式历史记录配置属性

    Debezium 提供了一组 schema.history.internal114 属性,用于控制连接器如何与 schema 历史记录主题交互。 下表描述了用于配置 Debezium 连接器的 schema.history.internal 属性。

    表 6.15. 连接器数据库模式历史记录配置属性
    属性 默认 描述

    schema.history.internal.kafka.topic 没有默认值 连接器存储数据库架构历史记录的 Kafka 主题的完整名称。 schema.history.internal.kafka.bootstrap.servers 没有默认值 连接器用来建立到 Kafka 集群的初始连接的主机/端口对列表。此连接用于检索之前由连接器存储的数据库架构历史记录,并编写从源数据库读取的每个 DDL 语句。每个对都应该指向 Kafka Connect 进程使用的相同 Kafka 集群。 schema.history.internal.kafka.recovery.poll.interval.ms 整数值,用于指定连接器在轮询保留数据时应该等待的最大毫秒数。默认值为 100ms。 schema.history.internal.kafka.query.timeout.ms 指定连接器在使用 Kafka admin 客户端获取集群信息时应等待的最大毫秒数。 schema.history.internal.kafka.create.timeout.ms 30000 指定连接器在使用 Kafka admin 客户端创建 kafka 历史记录主题时应等待的最大毫秒数。 schema.history.internal.kafka.recovery.attempts 连接器在连接器恢复失败前读取保留历史记录数据的次数上限。在收到数据后等待的最长时间为 recovery.attempts microseconds recovery.poll.interval.ms schema.history.internal.skip.unparseable.ddl false 指定连接器是否应该忽略不正确的或未知数据库语句或停止处理等布尔值,以便人可以解决这个问题。安全默认值为 false 。skip 仅应谨慎使用,因为它可能会在处理 binlog 时导致数据丢失或强制使用。 schema.history.internal.store.only.captured.tables.ddl false 指定连接器是否应该记录所有 DDL 语句的布尔值
    true 仅记录那些与 Debezium 捕获更改的表相关的 DDL 语句。请小心地设置为 true ,因为如果您更改了哪些表已捕获更改,则缺少数据可能会成为必要的。
    安全默认值为 false

    直通数据库模式历史记录属性,用于配置制作者和消费者客户端


    Debezium 依赖于 Kafka producer 将模式更改写入数据库架构历史记录主题。同样,它依赖于 Kafka 使用者在连接器启动时从数据库 schema 历史记录主题中读取。您可以通过将值分配给以 schema.history.internal.consumer 前缀开头的一组直通配置属性来定义 Kafka producer 消费者 客户端的配置。直通制作者和消费者数据库模式历史记录属性控制一系列行为,如这些客户端如何与 Kafka 代理安全连接,如下例所示:

    schema.history.internal.producer.security.protocol=SSL
    schema.history.internal.producer.ssl.keystore.location=/var/private/ssl/kafka.server.keystore.jks
    schema.history.internal.producer.ssl.keystore.password=test1234
    schema.history.internal.producer.ssl.truststore.location=/var/private/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/private/ssl/kafka.server.keystore.jks
    schema.history.internal.consumer.ssl.keystore.password=test1234
    schema.history.internal.consumer.ssl.truststore.location=/var/private/ssl/kafka.server.truststore.jks
    schema.history.internal.consumer.ssl.truststore.password=test1234
    schema.history.internal.consumer.ssl.key.password=test1234

    Debezium 在将属性传递给 Kafka 客户端之前,从属性名称中分离前缀。 如需有关 Kafka producer 配置属性 Kafka 使用者配置属性 的更多详情,请参阅 Kafka 文档。