Debezium Postgres 连接器“应用包含/排除列表过滤器后,不会捕获任何更改”

Eri*_*oda 0 postgresql apache-kafka debezium debezium-engine debezium-server

我正在使用 Debezium(Kafka 连接器)来捕获 Postgres 数据库更改,但我从 Debezium 收到错误。有谁知道下面的错误意味着什么,并可能提供修复它的建议。

更多调试信息:

  • 我尝试了 "schema.include.list": "banking" 和 "database.include.list": "banking"...都不起作用
  • 我尝试了 debezium/connect:1.4 并且它可以工作...但不能与 debezium/connect:1.5+ 一起使用(1.9 是可用的最高版本,但它不起作用(与下面的错误相同)
Postgres|dbserver1|snapshot  After applying the include/exclude list filters, no changes will be captured. Please check your configuration!   [io.debezium.relational.RelationalDatabaseSchema]
Run Code Online (Sandbox Code Playgroud)

我已经(在日志中)验证 Kafka(和模式注册表等)是否正常运行,并且 Debezium 连接器似乎已启动,Postgres iw 正常工作并且创建了数据库和表。

以下是 Debezium 连接器配置:

{
    "name": "banking-postgres-connector",
    "config": {
        "connector.class": "io.debezium.connector.postgresql.PostgresConnector",
        "database.hostname": "postgres",
        "database.port": "5432",
        "database.user": "postgres",
        "database.password": "postgres",
        "database.dbname" : "banking",
        "database.server.name": "dbserver1",
        "database.include.list": "banking",
        "tasks.max": "1",
        "table.include.list": "public.x_account,public.x_party,public.x_product,public.x_transaction"
    }
}
Run Code Online (Sandbox Code Playgroud)

Eri*_*oda 5

经过几个小时的调试(加上 @OneCricketeer 的一些建议,它们为我指明了正确的方向),我设法获得了与 debezium/connect:1.9 一起使用的配置。解决方案是通过消除配置项来使用默认值:

database.include.list
schema.include.list
Run Code Online (Sandbox Code Playgroud)

Debezium 最终的工作配置如下:

{
    "name": "banking-postgres-connector",
    "config": {
        "connector.class": "io.debezium.connector.postgresql.PostgresConnector",
        "database.hostname": "postgres",
        "database.port": "5432",
        "database.user": "postgres",
        "database.password": "postgres",
        "database.dbname" : "banking",
        "database.server.name": "dbserver1",
        "tasks.max": "1"
    }
}
Run Code Online (Sandbox Code Playgroud)

这确实表明 Debezium 文档和代码中存在一个小缺陷:

  1. 该文档应该为“schema.include.list”或“database.include.list”提供有效值(示例),因为单独为任一值添加数据库名称似乎不适用于 postgres...
  2. 如果能够从日志中获取更多信息,那就太好了……警告消息既难以查找/理解,又几乎没有追索权。由于这是没有捕获数据的情况,因此可能需要更高的重要性(记录错误?)

注意:我提供上述建议只是谦虚的建议,因为我发现 Debezium 是一款出色的产品!