当前位置: 首页 > 知识库问答 >
问题:

删除“table.include.list”不会强制Debezium为数据库中的其余表创建主题

陈项禹
2023-03-14

我创建了Debezium连接器,它像一个魅力一样工作:

json prettyprint-override">{
    "name": "debezium_title",
    "config": {
        "connector.class": "io.debezium.connector.mysql.MySqlConnector",
        "tasks.max": "1",
        "database.hostname": "xxx.xxx.xxx",
        "database.port": "3306",
        "database.user": "kafkaconnect",
        "database.password": "***",
        "database.server.name": "mysql_debezium",
        "heartbeat.interval​.ms": 5000,
        "snapshot.mode": "when_needed",
        "snapshot.new.tables": "parallel",
        "database.include.list": "database",
        "table.include.list": "database.table1,database.table2",
        "database.history.kafka.topic": "mysql_debezium_history",
        "database.history​.kafka.recovery​.poll.interval.ms": 5000,
        "database.history.kafka.bootstrap.servers": "xxx.xxx.xxx:9092",
        "include.schema.changes": "false",
        "transforms": "extractInt",
        "transforms.extractInt.type": "org.apache.kafka.connect.transforms.ExtractField$Key",
        "transforms.extractInt.field": "id"
    }
}

现在,我想删除这个连接器,并创建一个没有表白名单的新连接器-以摄取整个数据库:

{
    "name": "debezium_title_new",
    "config": {
        "connector.class": "io.debezium.connector.mysql.MySqlConnector",
        "tasks.max": "1",
        "database.hostname": "xxx.xxx.xxx",
        "database.port": "3306",
        "database.user": "kafkaconnect",
        "database.password": "***",
        "database.server.name": "mysql_debezium_new",
        "heartbeat.interval​.ms": 5000,
        "snapshot.mode": "initial",
        "database.include.list": "database",
        "database.history.kafka.topic": "debezium_mysql_history_new",
        "database.history​.kafka.recovery​.poll.interval.ms": 5000,
        "database.history.kafka.bootstrap.servers": "xxx.xxx.xxx:9092"
    }
}

新增:连接器名称、数据库服务器名称和数据库历史记录kafka主题名称。

奇怪的是,它只为我在第一个连接器的“table.include.list”中设置的表创建了主题!

kafka-topics --list --zookeeper xxx.xxx:2181

mysql_debezium_new.table1
mysql_debezium_new.table2

然后在一段时间后发生错误:遇到表database.table3的更改事件,其模式对此连接器不知道(table3是数据库中第一个连接器中不在白名单上的表的示例)

我数据库中的其他表在哪里?:)当我已经有了带有表白名单的连接器(删除第一个连接器并创建一个没有白名单的新连接器没有帮助)时,如何强制Debezium从mysql中移动所有表。

我还尝试过向白名单添加新表,但它也不起作用——它不会创建新主题,也不会加载整个表——它会等待表中的第一条新记录,然后出现错误:该表的模式未知。

怎么样?Debezium是否为第一个连接器拍摄数据库快照,然后将其保存在某个位置并保存?我如何重置它?

Debezium版本:1.5

共有1个答案

白学
2023-03-14

该参数是可选的,如果希望它获取所有非系统表,请完全忽略该参数。

来自文档:一个可选的逗号分隔的正则表达式列表,它匹配您希望Debezium捕获的表的完全限定表标识符;表中未包含的任何表。包括列表被排除在捕获之外。每个标识符的形式都是schemaName。表名。默认情况下,连接器会捕获指定模式的所有非系统表。不能与桌子一起使用。排除列表

链接到上述Debezia留档:https://debezium.io/documentation/reference/connectors/sqlserver.html

 类似资料:
  • 问题内容: 我正在使用Java 2 ee开发Web应用程序。我也使用hibernate和MySQL。为了还原备份文件,在我的应用程序中的某个点上,我需要删除当前数据库并重新创建它,我按如下操作: 删除并重新创建后,我需要使用默认用户(Spring Security用户)初始化数据库 但在最后一行应用程序抛出此异常 我知道hibernate在启动时会创建表,但是在这种情况下,它在drop / rec

  • 数据库显示 show databases; mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | app_blogcurder | | auth_demo | | canzhieps

  • 我有三个表,它们与下图相匹配: 我需要从join_表中删除一些数据,其中标签列(表右)和名称列(表左)符合一些条件。 我的解决方案是使用临时表: 我的问题是:有没有其他方法可以在不创建临时表的情况下执行此类删除?

  • 本文向大家介绍必须会的SQL语句(一) 创建数据库与删除数据库,包括了必须会的SQL语句(一) 创建数据库与删除数据库的使用技巧和注意事项,需要的朋友参考一下 1.创建数据库 2.删除数据库 只能用drop    drop database 名称

  • 29.3.3 创建和删除JPA数据库 默认情况下,仅当您使用内置数据库(H2、HSQL或Derby)时才会自动创建JPA数据库。您可以使用spring.jpa.*属性显式地配置JPA。例如,要创建和删除表,您可以将以下内容添加到application.properties中。 spring.jpa.hibernate.ddl-auto=create-drop Hibernate本身用于自动创建和

  • 问题内容: 我有一个基本的Hibernate代码,我将属性“ hibernate.hbm2ddl.auto”设置为更新,因为它仍然无法在数据库中自动创建表。 这些是必需的文件: employee.hbm.xml liability.hbm.xml hibernate.cfg.xml 这是我尝试运行的Main.java: 这是我得到的错误: com.mysql.jdbc.exceptions.jdb