搜索

3.4. Debezium JDBC 连接器配置属性的描述

download PDF

Debezium JDBC sink 连接器有几个配置属性,可用于实现满足您的需求的连接器行为。许多属性都有默认值。有关属性的信息组织如下:

表 3.6. 通用属性
属性默认描述

name

没有默认值

连接器的唯一名称。如果您在注册连接器时尝试重复使用此名称,则失败结果。所有 Kafka Connect 连接器都需要此属性。

connector.class

没有默认值

连接器的 Java 类的名称。对于 Debezium JDBC 连接器,请指定值 io.debezium.connector.jdbc.JdbcSinkConnector

tasks.max

1

此连接器使用的最大任务数量。

topics

没有默认值

要使用的主题列表,用逗号分开。不要将此属性与 topics.regex 属性结合使用。

topics.regex

没有默认值

指定要使用的主题的正则表达式。在内部,正则表达式编译到 java.util.regex.Pattern。不要将此属性与 topics 属性结合使用。

表 3.7. JDBC 连接器连接属性
属性默认描述

connection.provider

org.hibernate.c3p0.internal.C3P0ConnectionProvider

要使用的连接供应商实施。

connection.url

没有默认值

用于连接到数据库的 JDBC 连接 URL。

connection.username

没有默认值

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

connection.password

没有默认值

连接器用来连接到数据库的密码。

connection.pool.min_size

5

指定池中最小连接数。

connection.pool.max_size

32

指定池维护的最大并发连接数。

connection.pool.acquire_increment

32

指定当连接池超过其最大大小时,连接器尝试获取的连接数量。

connection.pool.timeout

1800

指定在丢弃未使用的连接前保留的秒数。

表 3.8. JDBC 连接器运行时属性
属性默认描述

database.time_zone

UTC

指定插入 JDBC 临时值时使用的时区。

delete.enabled

false

指定连接器是否处理 DELETEtombstone 事件,并从数据库中删除对应的行。使用此选项要求您将 primary.key.mode 设置为 record.key

truncate.enabled

false

指定连接器是否处理 TRUNCATE 事件,并截断数据库中的对应表。

注意

虽然 从版本 9.7 开始,在 Db2 中提供了对 TRUNCATE 语句的支持,但 JDBC 连接器无法处理 Db2 连接器发出的标准 TRUNCATE 事件。

为确保 JDBC 连接器可以处理从 Db2 接收的 TRUNCATE 事件,方法是使用标准 TRUNCATE TABLE 语句的替代来执行 truncation。例如:

ALTER TABLE & lt;table_name& gt; ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE

提交前面的查询的用户帐户需要截断表上的 ALTER 特权。

insert.mode

insert

指定用于将事件插入到数据库中的策略。可用的选项如下:

insert
指定所有事件都应构建 INSERT- 基于 SQL 语句。仅在没有使用主键时使用这个选项,或者当您可以确定没有更新与现有主键值的行时使用这个选项。
update
指定所有事件都应构建 UPDATE- 基于 SQL 语句。只有在您可以确定连接器只接收应用到现有行的事件时才使用这个选项。
upsert
指定连接器使用 upsert 语义向表添加事件。也就是说,如果主密钥不存在,连接器将执行 INSERT 操作,如果键存在,则连接器会执行 UPDATE 操作。当需要幂等写入时,应该将连接器配置为使用这个选项。

primary.key.mode

none

指定连接器如何从事件解析主键列。

none
指定没有创建主键列。
kafka

指定连接器使用 Kafka 协调作为主键列。密钥协调从事件的主题名称、分区和偏移中定义,并使用以下名称映射到列:

  • __connect_topic
  • __connect_partition
  • __connect_offset
record_key
指定从事件的 record 键中提供的主键列。如果记录键是一个原语类型,则需要 primary.key.fields 属性来指定主键栏的名称。如果记录键是 struct 类型,则 primary.key.fields 属性是可选的,且可用于将事件键中的列指定为表的主键。
record_value
指定从事件值中获取主键列。您可以设置 primary.key.fields 属性,将主键定义为事件值中的字段子集;否则,所有字段都会默认使用。

primary.key.fields

没有默认值

主键列的名称或以逗号分隔的字段列表,以便从中派生主密钥。

primary.key.mode 设置为 record_key 且事件的键是原语类型时,此属性指定要用于键的列名称。

primary.key.mode 设置为带有非原始键的 record_keyrecord_value 时,此属性指定来自 key 或 value 的以逗号分隔的字段名称列表。如果 primary.key.mode 设置为带有非原始键的 record_key,或 record_value,且此属性没有指定,则连接器会从记录键或记录值的所有字段生成主密钥,具体取决于指定的模式。

quote.identifiers

false

指定生成的 SQL 语句是否使用引号来分离表和列名称。详情请查看 第 3.1.9 节 “指定选项来定义目标表和列名称的字母大小写” 部分。

schema.evolution

none

指定连接器如何演变目标表模式。如需更多信息,请参阅 第 3.1.8 节 “Debezium JDBC 连接器的 schema evolution 模式”。可用的选项如下:

none
指定连接器没有演进目的地模式。
基本的
指定发生基本演变。连接器通过将传入事件的记录模式与数据库表结构进行比较,在表中添加缺少的列。

table.name.format

${topic}

根据事件的主题名称,指定确定目标表名称如何格式化的字符串。占位符 ${topic} 替换为主题名称。

dialect.postgres.postgis.schema

public

指定安装 PostgreSQL PostGIS 扩展的架构名称。默认为 public ;但是,如果在另一个架构中安装了 PostGIS 扩展,则此属性应该用于指定备用模式名称。

dialect.sqlserver.identity.insert

false

指定连接器是否在 INSERTUPSERT 操作前自动设置 IDENTITY_INSERT 操作,然后在操作后立即取消设置它。当默认设置(false)生效时,INSERTUPSERT 操作进入表的 IDENTITY 列中会导致 SQL 异常。

batch.size

500

指定在目标表中尝试批量批处理的记录数量。

注意

请注意,如果您在 Connect worker 属性中将 consumer.max.poll.records 设置为小于 batch.size 的值,则批处理处理将由 consumer.max.poll.records 和所需的 batch.size 上限。您还可以使用连接器配置 consumer.override. max.poll.records 来配置连接器的 max.poll.records。

field.include.list

空字符串

可选的、以逗号分隔的字段名称列表,与来自更改事件值的字段全限定名称匹配。字段的完全限定域名格式为 fieldNametopicName:_fieldName_

如果您在配置中包含此属性,请不要设置 field.exclude.list 属性。

field.exclude.list

空字符串

可选的、以逗号分隔的字段名称列表,与从更改事件值中排除的字段全限定名称匹配。字段的完全限定域名格式为 fieldNametopicName:_fieldName_

如果您在配置中包含此属性,请不要设置 field.include.list 属性。

表 3.9. JDBC 连接器可扩展属性
属性默认描述

column.naming.strategy

i.d.c.j.n.DefaultColumnNamingStrategy

指定连接器用来从事件字段名称解析列名称的 ColumnNamingStrategy 实现的完全限定类名称。

默认情况下,连接器使用字段名称作为列名称。

table.naming.strategy

i.d.c.j.n.DefaultTableNamingStrategy

指定 TableNamingStrategy 实现的完全限定类名称,连接器用来从传入的事件主题名称解析表名称。

默认行为是:

  • table.name.format 配置属性中的 ${topic} 占位符替换为事件的主题。
  • 通过将点(.)替换为下划线(_)来清理表名称。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.