搜索

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

download PDF

Debezium Oracle 连接器具有大量配置属性,可用于实现应用程序的正确连接器行为。许多属性都有默认值。有关属性的信息组织如下:

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

除非默认值可用 否则需要以下配置属性。

属性

默认

描述

name

没有默认值

连接器的唯一名称。尝试使用相同的名称再次注册将失败。(所有 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

1

为此连接器创建的最大任务数量。Oracle 连接器始终使用单个任务,因此不使用这个值,因此默认值始终可以接受。

database.hostname

没有默认值

Oracle 数据库服务器的 IP 地址或主机名。

database.port

没有默认值

Oracle 数据库服务器的整数端口号。

database.user

没有默认值

连接器用来连接到 Oracle 数据库服务器的 Oracle 用户帐户的名称。

database.password

没有默认值

连接到 Oracle 数据库服务器时要使用的密码。

database.dbname

没有默认值

要连接的数据库的名称。在容器数据库环境中,指定根容器数据库的名称(CDB),而不是包含的可插拔数据库(PDB)的名称。

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

初始

指定连接器用来获取捕获表的快照的模式。您可以设置以下值:

always
快照包括捕获表的结构和数据。指定这个值来填充主题,并显示每个连接器启动时捕获的表中的数据的完整表示。
初始
快照包括捕获表的结构和数据。指定这个值来填充来自捕获表的数据的完整表示。如果快照成功完成,则在下一个连接器启动快照不会被再次执行。
initial_only
快照包括捕获表的结构和数据。连接器执行初始快照,然后停止,而不处理任何后续更改。
schema_only
快照仅包含捕获的表的结构。如果您希望连接器只针对快照后发生的变化捕获数据,请指定这个值。
schema_only_recovery
这是已经捕获更改的连接器的恢复设置。重启连接器时,此设置启用恢复损坏或丢失的数据库 schema 历史记录主题。您可以定期将其设置为"清理"数据库架构历史记录主题,该主题被意外增长。数据库架构历史记录主题需要无限保留。请注意,只有在保证没有发生模式时,这个模式才会安全使用,因为连接器之前和进行快照的时间点没有发生。

快照完成后,连接器将继续从数据库的 redo 日志中读取更改事件,除非将 snapshot.mode 配置为 initial_only 时。

如需更多信息,请参阅 snapshot.mode 选项表

snapshot.locking.mode

shared

控制连接器保存表锁定的时长。表锁定可防止在连接器执行快照时发生某些类型的更改表操作。您可以设置以下值:

shared
启用并发访问表,但阻止任何会话获取专用表锁定。连接器在捕获表模式时获取 ROW SHARE 级别锁定。
none
防止连接器在快照期间获取任何表锁定。仅在创建快照过程中没有架构更改时使用此设置。

snapshot.include.collection.list

连接器的 table.include.list 属性中指定的所有表。

可选的、以逗号分隔的正则表达式列表,与表的完全限定域名(<databaseName>. <schemaName> . &lt;tableName&gt; . <tableName>)匹配,以包括在快照中。

在多租户容器数据库(CDB)环境中,正则表达式必须包含 可插拔数据库(PDB)名称,格式为 < pdbName> . <schemaName&gt; . < tableName>

要匹配表的名称,Debebe 会使用正则表达式,它由您作为 anchored 正则表达式指定。也就是说,指定的表达式与表的整个名称字符串匹配;它与表名称中可能存在的子字符串不匹配。
只有 POSIX 正则表达式有效。

快照只能包含在连接器的 table.include.list 属性中命名的表。

只有在连接器的 snapshot.mode 属性设置为除 never 的值时,此属性才会生效。
此属性不会影响增量快照的行为。

snapshot.select.statement.overrides

没有默认值

指定要包含在快照中的表行。如果您希望快照只包含表中的行的子集,请使用属性。此属性仅影响快照。它不适用于连接器从日志中读取的事件。

该属性包含以逗号分隔的、完全限定表名称列表,格式为 < schemaName>.<tableName&gt;。例如,

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

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

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

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

Example:

在包含 soft-delete 列 delete_flagcustomers.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 中的任何架构 名称都会从捕获其更改中排除。默认情况下,所有非系统模式都会捕获其更改。

要匹配 schema 的名称,Debebe 会使用正则表达式,它由您作为 anchored 正则表达式指定。也就是说,指定的表达式与 schema 的整个名称字符串匹配;它与 schema 名称中可能存在的子字符串匹配。
如果您在配置中包含此属性,不要设置 schema.exclude.list 属性。

include.schema.comments

false

指定连接器是否应该解析和发布元数据对象上的表和列注释的布尔值。启用这个选项会对内存用量造成影响。逻辑模式对象的数量和大小对 Debezium 连接器消耗的内存数量和大小有很大的影响,并可能为每个连接器添加大的字符串数据可能会非常昂贵。

schema.exclude.list

没有默认值

可选的、以逗号分隔的正则表达式列表,与 您不想 捕获更改的模式名称匹配。只有 POSIX 正则表达式有效。任何名称不包含在 schema. exclude.list 中的模式,其更改会被捕获,但系统模式除外。

要匹配 schema 的名称,Debebe 会使用正则表达式,它由您作为 anchored 正则表达式指定。也就是说,指定的表达式与 schema 的整个名称字符串匹配;它与 schema 名称中可能存在的子字符串匹配。
如果您在配置中包含此属性,请不要设置'schema.include.list' 属性。

table.include.list

没有默认值

可选的、以逗号分隔的正则表达式列表,与要捕获的表的完全限定表标识符匹配。只有 POSIX 正则表达式有效。当设置此属性时,连接器只捕获指定表中的更改。每个表标识符都使用以下格式:

<schema_name>.<table_name>

默认情况下,连接器会监控每个捕获的数据库中的每个非系统表。

要匹配表的名称,Debebe 会使用正则表达式,它由您作为 anchored 正则表达式指定。也就是说,指定的表达式与表的整个名称字符串匹配;它与表名称中可能存在的子字符串不匹配。
如果您在配置中包含此属性,不要设置 table.exclude.list 属性。

table.exclude.list

没有默认值

可选的、以逗号分隔的正则表达式列表,与要排除在监控中的表的完全限定域名匹配。只有 POSIX 正则表达式有效。连接器从排除列表中列出的任何表中捕获更改事件。使用以下格式为每个表指定标识符:

<schemaName>.<tableName&gt;。

要匹配表的名称,Debebe 会使用正则表达式,它由您作为 anchored 正则表达式指定。也就是说,指定的表达式与表的整个名称字符串匹配;它与表名称中可能存在的子字符串不匹配。
如果您在配置中包含此属性,不要设置 table.include.list 属性。

column.include.list

没有默认值

可选的、以逗号分隔的正则表达式列表,与更改事件消息值中包含的列的完全限定域名匹配。只有 POSIX 正则表达式有效。列的完全限定域名使用以下格式:

<Schema_name>.<table_name>.<column_name>

。主键列始终包含在事件的键中,即使您没有使用此属性显式包含其值。

要匹配列的名称,Debebe 会使用正则表达式,它由您作为 anchored 正则表达式指定。也就是说,指定的表达式与列的整个名称字符串匹配,它与列名称中可能存在的子字符串匹配。
如果您在配置中包含此属性,不要设置 column.exclude.list 属性。

column.exclude.list

没有默认值

可选的、以逗号分隔的正则表达式列表,与您要从更改事件消息值中排除的列的完全限定域名匹配。只有 POSIX 正则表达式有效。完全限定列名称使用以下格式:

<schema_name>.<table_name>.&lt;column_name>

。主键列始终包含在事件的键中,即使您使用此属性显式排除其值。

要匹配列的名称,Debebe 会使用正则表达式,它由您作为 anchored 正则表达式指定。也就是说,指定的表达式与列的整个名称字符串匹配,它与列名称中可能存在的子字符串匹配。
如果您在配置中包含此属性,请不要设置 column.include.list 属性。

skip.messages.without.change

false

指定在包含列中没有更改时是否跳过发布消息。如果列中没有包括每个 column.include.listcolumn.exclude.list 属性的列有变化,这将过滤消息。

column.mask.hash.hashAlgorithm.with.salt.salt; column.mask.hash.v2.hashAlgorithm.with.salt.salt

不适用

可选的、以逗号分隔的正则表达式列表,与基于字符列的完全限定名称匹配。列的完全限定域名格式为 <schemaName>.<tableName>.<columnName>.
要匹配一个列的名称,Debezium 应用正则表达式,它由您指定为 anchored 正则表达式。也就是说,指定的表达式与列的整个名称字符串匹配;表达式与列名称中可能存在的子字符串不匹配。
在生成的更改事件记录中,指定列的值替换为 pseudonyms。

一个 pseudonym,它包括了通过应用指定的 hashAlgorithmsalt 的结果的哈希值。根据所使用的哈希函数,会维护引用完整性,而列值则替换为 pseudonyms。支持的哈希功能在 Java Cryptography 架构标准 Algorithm Name 文档的 MessageDigest 部分中 进行了描述。

在以下示例中,CzQMA0cB5K 是一个随机选择的 salt。

column.mask.hash.SHA-256.with.salt.CzQMA0cB5K = inventory.orders.customerName, inventory.shipment.customerName

如有必要,pseudonym 会自动缩短为列的长度。连接器配置可以包含多个属性,用于指定不同的哈希算法和 salt。

根据所用的 hashAlgorithm (选择 salt )和实际数据集,生成的数据集可能无法完全屏蔽。

应该使用哈希策略版本 2 来确保在不同的位置或系统中对值进行哈希处理。

binary.handling.mode

bytes

指定在更改事件中二进制(blob)列应该代表,包括: bytes 代表二进制数据作为字节数组(默认),base64 代表二进制数据作为 base64 编码的字符串,base64-url-safe -encoded String 代表二进制数据,hex 代表二进制数据作为十六进制编码(base16)字符串

schema.name.adjustment.mode

none

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

  • none 不应用任何调整。
  • avro 将无法在 Avro 类型名中使用的字符替换为下划线。
  • avro_unicode 将无法在 Avro 类型名称中使用的下划线或字符替换为对应的 unicode,如 _uxxxx。注意:_ 是 Java 中反斜杠的转义序列

field.name.adjustment.mode

none

指定应如何调整字段名称以与连接器使用的消息转换器兼容。可能的设置:

  • none 不应用任何调整。
  • avro 将无法在 Avro 类型名中使用的字符替换为下划线。
  • avro_unicode 将无法在 Avro 类型名称中使用的下划线或字符替换为对应的 unicode,如 _uxxxx。注意:_ 是 Java 中反斜杠的转义序列

如需了解更多详细信息,请参阅 Avro 命名

decimal.handling.mode

精确

指定连接器应该如何处理 NUMBER,DECIMALNUMERIC 列的浮点值。您可以设置以下选项之一:

精确 (默认)
通过使用以二进制形式更改事件表示的 java.math.BigDecimal 值来准确代表值。
double
使用 值表示值。使用 值更为简单,但可能会导致精度丢失。
字符串
将值编码为格式化的字符串。使用 string 选项更易于使用,但会导致丢失有关实际类型的语义信息。更多信息请参阅 数字类型

interval.handling.mode

数字

指定连接器如何处理 interval 列的值:

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

string 代表间隔,使用 P<years>Y<months>M<days>DT<hours>H<minutes>M<seconds>S 代表。例如: P1Y2M3DT4H5M6.78S

event.processing.failure.handling.mode

fail

指定连接器在处理事件时应如何响应异常。您可以设置以下选项之一:

fail
传播异常(代表有问题的事件的偏移),从而导致连接器停止。
warn
导致有问题的事件被跳过。然后会记录有问题的事件的偏移量。
skip
导致有问题的事件被跳过。

max.batch.size

2048

一个正整数值,用于指定每个事件批处理的最大大小,以便在这个连接器的每个迭代过程中处理。

max.queue.size

8192

正整数值,用于指定阻塞队列可以保存的最大记录数。当 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 秒)

正整数值,指定连接器在每个迭代过程中应等待的毫秒数,以便出现新更改事件。

tombstones.on.delete

true

控制 delete 事件是否后跟一个 tombstone 事件。可能会有以下值:

true
对于每个删除操作,连接器会发出一个 delete 事件和一个后续 tombstone 事件。
false
对于每个删除操作,连接器只发出一个 delete 事件。

删除源记录后,一个 tombstone 事件(默认行为)可让 Kafka 完全删除在启用了 日志压缩 主题中的已删除行键的所有事件。

message.key.columns

没有默认值

指定连接器用来组成自定义消息键的表达式列表,用于更改它发布到指定表的 Kafka 主题的事件记录。

默认情况下,Debezium 使用表的主键列作为它发出的记录的消息键。在默认位置,或者为缺少主密钥的表指定一个键,您可以根据一个或多个列配置自定义消息密钥。
要为表建立自定义消息键,请列出表,后跟要用作消息键的列。每个列表条目都采用以下格式:

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

To base a table key on multiple column name, 在列名称之间插入逗号。
每个完全限定表名称都是以下格式的一个正则表达式:

<schemaName > . &lt;tableName>

属性可以包括多个表的条目。使用分号分隔列表中的表条目。
以下示例为表 inventory.customerspurchase.orders 设置消息键:

inventory.customers:pk1,pk2; (any).purchaseorders:pk3,pk4

for the table inventory.customer, 列 pk1pk2 被指定为消息键。对于任何 模式中的 购买顺序表,列 pk3pk4 服务器作为消息键。
对于用来创建自定义消息键的列数量没有限制。但是,最好使用指定唯一密钥所需的最小数量。

column.truncate.to.length.chars

没有默认值

可选的、以逗号分隔的正则表达式列表,与基于字符列的完全限定名称匹配。如果您希望连接器屏蔽一组列的值,例如,如果它们包含敏感数据,则设置此属性。将 length 设置为一个正整数,替换在属性名称中的 length 指定的星号(*)的数量列中的数据。将 length 设置为 0 (零)将指定列中的数据替换为空字符串。

列的完全限定域名会观察以下格式:< schemaName> . <tableName&gt; . & lt;columnName&gt;。要匹配列的名称,Debebe 会使用正则表达式,它由您作为 anchored 正则表达式指定。也就是说,指定的表达式与列的整个名称字符串匹配;表达式与列名称中可能存在的子字符串不匹配。

您可以在单个配置中指定多个长度不同的属性。

column.mask.with.length.chars

没有默认值

可选的、以逗号分隔的正则表达式列表,用于对更改事件中的列名称进行掩码处理,将字符替换为星号 (*)。
指定要替换的属性名称中的字符数,例如 column.mask.with.8.chars
将 length 指定为正整数或零。然后,在要应用掩码的每个基于字符的列名称中添加正则表达式。
使用以下格式指定完全限定列名称:< schemaName> . <tableName&gt; . & lt;columnName&gt;。

连接器配置可以包含多个属性,用于指定不同的长度。

column.propagate.source.type

没有默认值

可选的、以逗号分隔的正则表达式列表,与您希望连接器发出代表列元数据的额外参数的完全限定名称匹配。当设置此属性时,连接器会将以下字段添加到事件记录的 schema 中:

  • __debezium.source.column.type
  • __debezium.source.column.length
  • __debezium.source.column.scale

这些参数会分别传播列的原始类型名称和长度(用于变量宽度类型)。
启用连接器来发出这个额外数据可帮助正确调整 sink 数据库中的特定数字或基于字符的列。

列的完全限定域名会观察以下格式之一:< tableName> . <columnName> , 或 &lt; schemaName&gt ; . & lt;tableName> . & lt;columnName&gt; .
要匹配列的名称,Debebe 会使用正则表达式,它由您作为 anchored 正则表达式指定。也就是说,指定的表达式与列的整个名称字符串匹配;表达式与列名称中可能存在的子字符串不匹配。

datatype.propagate.source.type

没有默认值

可选的、以逗号分隔的正则表达式列表,用于指定为数据库中列定义的数据类型的完全限定名称。当设置此属性时,对于具有匹配数据类型的列,连接器会发出在 schema 中包含以下额外字段的事件记录:

  • __debezium.source.column.type
  • __debezium.source.column.length
  • __debezium.source.column.scale

这些参数会分别传播列的原始类型名称和长度(用于变量宽度类型)。
启用连接器来发出这个额外数据可帮助正确调整 sink 数据库中的特定数字或基于字符的列。

列的完全限定域名会观察以下格式之一:< tableName> . <typeName> , 或 &lt; schemaName&gt ; . & lt;tableName> . & lt;typeName&gt; .
要匹配数据类型的名称,Debebe 会使用正则表达式,它由您作为 anchored 正则表达式指定。也就是说,指定的表达式与数据类型的整个名称字符串匹配;表达式与类型名称中可能存在的子字符串不匹配。

有关 Oracle 特定数据类型名称的列表,请查看 Oracle 数据类型映射

heartbeat.interval.ms

0

指定,以毫秒为单位,连接器将信息发送到心跳主题的频率。
使用此属性来确定连接器是否继续从源数据库接收更改事件。
在没有在捕获的表中发生更改事件的扩展周期时,设置属性也很有用。
在这种情况下,虽然连接器继续读取 redo 日志,但它会发出任何更改事件信息,因此 Kafka 主题中的偏移保持不变。因为连接器不会清除从数据库读取的最新系统更改号(SCN),所以数据库可能会保留红色日志文件,以便比必要长。如果连接器重启,扩展保留周期可能会导致连接器冗余地发送一些更改事件。
默认值 0 可防止连接器发送任何心跳信息。

heartbeat.action.query

没有默认值

指定连接器发送心跳消息的查询,连接器在源数据库上执行。

例如:

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

。连接器在发出 心跳消息 后运行查询。

设置此属性并创建 heartbeat 表来接收心跳消息,以解决 Debezium 在低流量数据库中与高流量数据库同步偏移的情况。连接器将记录插入到配置的表中后,它可以从 low-traffic 数据库接收更改,并确认数据库中的 SCN 更改,以便偏移可以与代理同步。

snapshot.delay.ms

没有默认值

指定连接器在进行快照前在启动后等待的时间间隔(以毫秒为单位)。
使用此属性来防止在集群中启动多个连接器时快照中断,这可能会导致连接器的重新平衡。

snapshot.fetch.size

10000

指定在拍摄快照时每个表中读取的最大行数。连接器以指定大小的多个批处理读取表内容。

query.fetch.size

10000

指定将针对给定查询的每个数据库往返获取的行数。使用值 0 将使用 JDBC 驱动程序的默认获取大小。

provide.transaction.metadata

false

如果您希望 Debezium 生成带有事务边界的事件,并使用事务元数据增强数据事件信封,则将属性设为 true

如需了解更多详细信息,请参阅 事务元数据

log.mining.strategy

redo_log_catalog

指定控制 Oracle LogMiner 构建并使用给定数据字典来解析表和列 id 的 mining 策略。

redo_log_catalog:: 将数据字典写入在线红色日志会导致更多归档日志被随着时间的推移生成。这也启用了对捕获的表跟踪 DDL 更改,因此如果架构更改经常是理想的选择。

online_catalog:: 使用数据库的当前数据字典解析对象 ID,且不会将任何额外信息写入在线红色日志。这允许 LogMiner 更迅速,但无法跟踪 DDL 更改。如果捕获的表不经常或没有变化,这是理想的选择。

log.mining.query.filter.mode

none

指定控制 Oracle LogMiner 查询的构建方式的 mining query 模式。

none:: 查询中任何模式、表或用户名过滤时会生成查询。

中的 查询是使用标准的 SQL in-clause 在数据库端过滤模式、表和用户名生成的。架构、表和用户名配置 include/exclude 列表不应指定任何正则表达式,因为查询是直接使用的值构建的。

regex:: 查询是使用 Oracle 的 REGEXP_LIKE 运算符在数据库侧过滤模式和表名称以及使用 SQL in-clause 的用户名生成的。schema 和 table 配置 include/exclude 列表可以安全地指定正则表达式。

log.mining.buffer.type

内存

缓冲区类型控制连接器如何管理缓冲区数据。

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

log.mining.session.max.ms

0

LogMiner 会话在使用新会话前可以处于活跃状态的最大毫秒数。

对于低卷系统,当相同会话用于长时间时,LogMiner 会话可能会消耗太多 PGA 内存。默认行为是在检测到日志交换机时只使用新的 LogMiner 会话。通过将此值设置为大于 0 的值,这指定了 LogMiner 会话在停止前可以处于活跃状态的最大毫秒数,然后开始取消分配和重新分配 PGA 内存。

log.mining.restart.connection

false

指定 JDBC 连接是否关闭并在日志交换机上重新打开,或者当 mining 会话达到最大生命周期阈值时。

默认情况下,JDBC 连接不会在日志交换机或最大会话生命周期中关闭。
如果您使用 LogMiner 过量 Oracle SGA 增长,则应启用此项。

log.mining.batch.size.min

1000

这个连接器尝试从 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

0

从 redo/archive 日志读取数据后以及再次读取数据前,连接器在读取数据后休眠的最小时间。值以毫秒为单位。

log.mining.sleep.time.max.ms

3000

从 redo/archive 日志读取数据后,连接器 ill 休眠的最大时间,并在再次开始读取数据前休眠。值以毫秒为单位。

log.mining.sleep.time.default.ms

1000

连接器从 redo/archive 日志中读取数据后休眠的时间开始,并在再次开始读取数据前休眠。值以毫秒为单位。

log.mining.sleep.time.increment.ms

200

在从 logminer 读取数据时,连接器用来调整最佳睡眠时间的最大时间。值以毫秒为单位。

log.mining.archive.log.hours

0

过去从 SYSDATE 到 mine 归档日志的小时数。当使用默认设置(0)时,连接器会减去所有归档日志。

log.mining.archive.log.only.mode

false

控制连接器是否只从归档日志或在线红色日志和归档日志(默认)中减去更改。

redo 日志使用可在任意点存档的循环缓冲区。在经常归档在线红色日志的环境中,这可能会导致 LogMiner 会话失败。与 redo logs 不同,归档日志保证可靠。将这个选项设置为 true 以强制连接器只减 mine 归档日志。在将连接器设置为只减归档日志后,正在提交的操作和连接器之间的延迟可能会增加。延迟程度取决于数据库配置为在线红色日志的频率。

log.mining.archive.log.only.scn.poll.interval.ms

10000

连接器在轮询之间休眠的毫秒数,以确定启动系统更改号是否在归档日志中。如果没有启用 log.mining.archive.log.only.mode,则不会使用此设置。

log.mining.transaction.retention.ms

0

正整数值,指定在 redo 日志交换机之间保留长时间运行的事务的毫秒数。当设置为 0 时,事务会被保留,直到检测到提交或回滚为止。

默认情况下,LogMiner 适配器维护所有正在运行的事务的内存缓冲。因为所有属于事务一部分的 DML 操作在检测到提交或回滚前会被缓冲,所以应该避免长时间运行的事务,以便不会溢出该缓冲区。任何超过这个配置的值的事务都会被完全丢弃,连接器不会为属于事务的操作发出任何消息。

log.mining.archive.destination.name

没有默认值

指定在减去带有 LogMiner 的归档日志时要使用的 Oracle 归档目的地。

默认行为会自动选择第一个有效的本地配置目的地。但是,您可以通过提供目的地名称(例如 LOG_ARCHIVE_DEST_5) 来使用特定的目的地。

log.mining.username.include.list

没有默认值

要从 LogMiner 查询中包含的数据库用户列表。如果您希望捕获进程包含指定用户的更改,则设置此属性非常有用。

log.mining.username.exclude.list

没有默认值

要从 LogMiner 查询中排除的数据库用户列表。如果您希望捕获过程始终排除特定用户所做的更改,则设置此属性非常有用。

log.mining.scn.gap.detection.gap.size.min

1000000

指定连接器与当前和以前的 SCN 值之间的区别进行比较的值,以确定 SCN 差距是否存在。如果 SCN 值之间的区别大于指定的值,且时间差异小于 log.mining.scn.gap.detection.time.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 gap,连接器使用大于配置的最大批处理的 mining 窗口。

log.mining.flush.table.name

LOG_MINING_FLUSH

指定协调将 Oracle LogWriter Buffer (LGWR)刷新到 redo 日志的 flush 表的名称。通常,多个连接器可以使用相同的 flush 表。但是,如果连接器遇到表锁定争用错误,请使用此属性为每个连接器部署指定专用表。

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 列表中每个地址使用指定的端口值。例如:

    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

t

以逗号分隔的操作类型列表,您希望连接器在流期间跳过。您可以将连接器配置为跳过以下类型的操作:

  • c (insert/create)
  • u (update)
  • D (删除)
  • t (截断)

默认情况下,只跳过 truncate 操作。

signal.data.collection

没有默认值

用于向连接器发送信号的数据收集的完全限定名称。https://access.redhat.com/documentation/zh-cn/red_hat_integration/2023.q4/html-single/debezium_user_guide/index#debezium-signaling-enabling-source-signaling-channel当您将此属性与 Oracle 可插拔数据库(PDB)搭配使用时,将其值设为 root 数据库的名称。
使用以下格式指定集合名称:
<databaseName> . <schemaName& gt; . &lt;tableName>

signal.enabled.channels

source

为连接器启用的信号频道名称列表。默认情况下,以下频道可用:

  • source
  • kafka
  • file
  • jmx

notification.enabled.channels

没有默认值

为连接器启用的通知频道名称列表。默认情况下,以下频道可用:

  • sink
  • log
  • jmx

incremental.snapshot.chunk.size

1024

连接器在增量快照块期间获取并读取内存的最大行数。增加块大小可提高效率,因为快照会运行更多大小的快照查询。但是,较大的块大小还需要更多内存来缓冲快照数据。将块大小调整为提供环境中最佳性能的值。

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

Transactions

控制连接器向其发送事务元数据消息的主题名称。主题名称具有此模式:

topic.prefix.topic.transaction

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

snapshot.max.threads

1

指定连接器执行初始快照时使用的线程数量。要启用并行初始快照,请将属性设置为大于 1 的值。在并行初始快照中,连接器会同时处理多个表。

重要

并行初始快照只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

errors.max.retries

-1

在失败前,retriable 错误(如连接错误)的最大重试次数(-1 = no limit, 0 = disabled, > 0 = num of retries)。

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

Debezium 提供了一组 schema.history.internal.* 属性,用于控制连接器如何与 schema 历史记录主题进行交互。

下表描述了用于配置 Debezium 连接器的 schema.history.internal 属性。

表 7.17. 连接器数据库架构历史记录配置属性
属性默认描述

schema.history.internal.kafka.topic

没有默认值

连接器存储数据库 schema 历史记录的 Kafka 主题的全名。

schema.history.internal.kafka.bootstrap.servers

没有默认值

连接器用来建立到 Kafka 集群的初始连接的主机/端口对列表。此连接用于检索之前由连接器存储的数据库架构历史记录,以及用于从源数据库读取的每个 DDL 语句。每个对都应指向 Kafka Connect 进程使用的相同 Kafka 集群。

schema.history.internal.kafka.recovery.poll.interval.ms

100

整数值,用于指定连接器在启动/恢复期间应等待的最大毫秒数,同时轮询持久数据。默认值为 100ms。

schema.history.internal.kafka.query.timeout.ms

3000

一个整数值,用于指定连接器在使用 Kafka admin 客户端获取集群信息时应等待的最大毫秒数。

schema.history.internal.kafka.create.timeout.ms

30000

一个整数值,用于指定连接器在使用 Kafka admin 客户端创建 kafka 历史记录主题时应等待的最大毫秒数。

schema.history.internal.kafka.recovery.attempts

100

连接器在连接器恢复失败前应尝试读取持久性历史记录数据的次数上限,并显示错误。接收数据后等待的最大时间为 restore. attempts recovery. poll.interval.ms

schema.history.internal.skip.unparseable.ddl

false

指定连接器是否应忽略格式或未知数据库语句的布尔值,或者停止处理,以便人可以解决这个问题。安全默认值为 false。跳过应只用于小心,因为在处理 binlog 时可能会导致数据丢失或中断。

schema.history.internal.store.only.captured.tables.ddl

false

一个布尔值,用于指定连接器是否记录来自 schema 或数据库中的所有表的模式结构,还是仅从为捕获的表中指定的表。
指定以下值之一:

false (默认)
在数据库快照过程中,连接器会记录数据库中所有非系统表的 schema 数据,包括没有指定用于捕获的表。最好保留默认设置。如果您稍后决定捕获您最初未指定用于捕获的表的更改,则连接器可以轻松地开始从这些表中捕获数据,因为它们的模式结构已经存储在 schema 历史记录主题中。Debezium 需要表的 schema 历史记录,以便它可以识别发生更改事件时存在的结构。
true
在数据库快照过程中,连接器只记录 Debezium 捕获更改事件的表模式。如果您更改了默认值,稍后将连接器配置为从数据库中其他表捕获数据,则连接器缺少从表中捕获更改事件所需的 schema 信息。

schema.history.internal.store.only.captured.databases.ddl

false

一个布尔值,用于指定连接器是否记录来自数据库实例中的所有逻辑数据库的架构结构。
指定以下值之一:

true
连接器只记录 Debezium 捕获更改事件的逻辑数据库和模式中的表的架构结构。
false
连接器记录所有逻辑数据库的模式结构。
注意

MySQL Connector 的默认值为 true

配置制作者和消费者客户端的直通数据库架构历史记录属性


Debezium 依赖于 Kafka producer 将模式更改写入数据库架构历史记录主题。同样,它依赖于 Kafka 使用者在连接器启动时从数据库 schema 历史记录主题中读取。您可以通过将值分配给以 schema.history.internal.producer 和 schema.history.internal.consumer ruby 前缀开头的 pass-through 配置属性来定义 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 文档。

Debezium 连接器 Kafka 信号配置属性

Debezium 提供了一组 signal.* 属性,用于控制连接器如何与 Kafka 信号主题进行交互。

下表描述了 Kafka 信号 属性。

表 7.18. Kafka 信号配置属性
属性默认描述

signal.kafka.topic

<topic.prefix>-signal

连接器监控用于临时信号的 Kafka 主题的名称。

注意

如果禁用了 自动主题创建,您必须手动创建所需的信号主题。需要信号主题来保留信号排序。信号主题必须具有单个分区。

signal.kafka.groupId

kafka-signal

Kafka 用户使用的组 ID 的名称。

signal.kafka.bootstrap.servers

没有默认值

连接器用来建立到 Kafka 集群的初始连接的主机/端口对列表。每个对都引用 Debezium Kafka Connect 进程使用的 Kafka 集群。

signal.kafka.poll.timeout.ms

100

一个整数值,用于指定连接器在轮询信号时等待的最大毫秒数。

Debezium 连接器传递信号 Kafka 使用者客户端配置属性

Debezium 连接器为信号 Kafka 使用者提供直通配置。透传信号属性以 signals.consumer.* 前缀开始。例如,连接器将 signal.consumer.security.protocol=SSL 等属性传递给 Kafka 消费者。

Debezium 从属性中剥离前缀,然后再将属性传递给 Kafka 信号消费者。

Debezium 连接器接收器通知配置属性

下表描述了 通知 属性。

表 7.19. sink 通知配置属性
属性默认描述

notification.sink.topic.name

没有默认值

从 Debezium 接收通知的主题名称。当您将 notification.enabled.channels 属性配置为将 sink 作为启用的通知频道之一时,需要此属性。

Debezium Oracle 连接器直通数据库驱动程序配置属性

Debezium 连接器为数据库驱动程序的直通配置提供。直通数据库属性以前缀 driver metric 开头。例如,连接器将 driver.foobar=false 等属性传递给 JDBC URL。

数据库架构历史记录客户端通过直通属性 一样,Debebe 会在将前缀传递给数据库驱动程序之前从属性中剥离前缀。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.