kafka-JDBC源连接器配置

kafka-JDBC源连接器配置

源连接器支持复制具有多种JDBC数据类型的表,动态地从数据库中添加和删除表,白名单和黑名单,不同的轮询间隔以及其他设置。但是,对于大多数用户而言,最重要的功能是用于控制如何从数据库增量复制数据的设置。

Kafka Connect跟踪从每个表中检索到的最新记录,因此它可以在下一次迭代时(或发生崩溃的情况下)从正确的位置开始。源连接器使用此功能在每次迭代时仅从表(或从自定义查询的输出)获取更新的行。支持多种模式,每种模式在检测已修改行的方式上都不同。

增量查询模式

每种增量查询模式都为每一行跟踪一组列,用于跟踪已处理的行以及哪些行是新的或已更新的行。该mode设置控制此行为,并支持以下选项:

  • 递增列:包含每一行唯一ID的单个列,其中保证较新的行具有较大的ID,即一AUTOINCREMENT列。请注意,此模式只能检测新行。无法检测到对现有行的更新,因此该模式仅应用于不可变数据。在数据仓库中流化事实表时,可能会使用此模式的一个示例,因为这些表通常是仅插入的。递增列必须是整数类型。

  • 时间戳列:在此模式下,包含修改时间戳的单个列用于跟踪上次处理数据的时间,并仅查询自该时间以来已被修改的行。请注意,由于时间戳不一定是唯一的,因此此模式不能保证所有更新的数据都将被传递:如果2行共享相同的时间戳并由增量查询返回,但是在崩溃前仅处理了一行,则第二次更新将被处理。系统恢复时未命中。

  • 时间戳和递增列:这是最健壮和准确的模式,将递增列与时间戳列结合在一起。通过将两者结合起来,只要时间戳足够精细,每个(id,时间戳)元组将唯一地标识对行的更新。即使更新在部分完成后失败,系统恢复后仍可正确检测并交付未处理的更新。

  • 自定义查询:源连接器支持使用自定义查询,而不是复制整个表。对于自定义查询,只要可以将必要WHERE子句正确附加到查询中,就可以使用其他更新自动更新模式之一。或者,指定的查询可以自己处理对新更新的过滤。但是,请注意,将不会执行偏移量跟踪(与为每个记录记录incrementing和/或timestamp列值的自动模式不同 ),因此查询必须跟踪偏移量本身。

  • 批量:此模式未过滤,因此根本不增量。它将在每次迭代时从表中加载所有行。如果要定期转储整个表,最终删除条目,下游系统可以安全地处理重复项,这将很有用。
    请注意,所有使用某些列来检测更改的增量查询模式都将需要这些列上的索引才能有效地执行查询。

对于使用时间戳的增量查询模式,源连接器将使用一种配置 timestamp.delay.interval.ms来控制在将包含特定时间戳的行出现之后再将其包括在结果中之前的等待时间。额外的等待时间允许完成带有较早时间戳记的事务,并将相关更改包括在结果中。有关更多信息,请参见配置属性。

源连接器使您可以灵活地从中导入数据的数据库以及如何导入数据的灵活性。
默认配置中仅有sqlite的连接器配置,以下为mysql源连接器配置:

Mqsql源连接器配置1:

使用白名单将更改限制在MySQL数据库表的子集中,使用id和 modified列在所有列入白名单的表上的标准列来检测已修改的行。此模式最可靠,因为它可以将唯一的,不可变的行ID与修改时间戳相结合,以确保即使在增量更新查询过程中过程终止,也不会丢失修改。

name=mysql-whitelist-timestamp-source
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
tasks.max=10
connection.url=jdbc:mysql://mysql.example.com:3306/my_database?user=alice&password=secret
table.whitelist=users,products,transactions
mode=timestamp+incrementing
timestamp.column.name=modified
incrementing.column.name=id
topic.prefix=mysql-

Mqsql源连接器配置2

使用自定义查询而不是加载表,从而允许您从多个表联接数据。只要查询不包括自己的过滤,您仍可以对增量查询使用内置模式(在这种情况下,使用时间戳列)。请注意,这将您限制为每个连接器只有一个输出,并且由于没有表名,因此在这种情况下,主题“前缀”实际上是完整的主题名称。

name=mysql-whitelist-timestamp-source
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
tasks.max=10
connection.url=jdbc:mysql://mysql.example.com:3306/my_database?user=alice&password=secret
query=SELECT users.id, users.name, transactions.timestamp, transactions.user_id, transactions.payment
FROM users JOIN transactions ON (users.id = transactions.user_id)
mode=timestamp
timestamp.column.name=timestamp
topic.prefix=mysql-joined-data

参考

https://docs.confluent.io/5.4.0/connect/kafka-connect-jdbc/source-connector/index.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值