如何获取 Kafka Debezium MySQL 连接器的database.server.name?

Lui*_*ada 3 apache-kafka apache-kafka-connect debezium

编辑问题:

尝试配置 Debezium MySQL Kafka 连接器,以为例

https://debezium.io/documentation/reference/stable/connectors/mysql.html#mysql-example-configuration

我有:

  • 主机名:“ec2-xxx.compute.amazonaws.com”
  • 数据库:mycooldb(里面有我的所有表)

然后我设置以下属性,例如:

"database.hostname": "ec2-xxx.compute.amazonaws.com"
"database.include.list": "mycooldb"
Run Code Online (Sandbox Code Playgroud)

而Debezium还有另一个性质,叫做“ database.server.name”。如何在 MySql 服务器中找到服务器名称值?

一台服务器可以有多个数据库,那么database.include.list我可以包含一个数据库列表。

database.hostname是主机名或IP。

我不确定什么是database.server.name以及如何从 MySQL 服务器获取值?。在这种情况下,如果我想在database.include.list中包含多个数据库,那么atabase.server.name的值是多少?

Rob*_*att 11

\n

database.server.name和有什么区别database.hostname

\n
\n

根据文档

\n
\n
    \n
  • database.hostnameMySQL数据库服务器的IP地址或主机名
  • \n
  • database.server.name:逻辑名称,用于标识并为 Debezium 捕获更改的特定 MySQL 数据库服务器/集群提供命名空间。逻辑名称在所有其他连接器中应该是唯一的,因为它用作接收此连接器发出的事件的所有 Kafka 主题名称的前缀。数据库服务器逻辑名称中只能使用字母数字字符、连字符、点和下划线。
  • \n
\n
\n

所以database.hostname必须是可以找到数据库的主机/IP。database.server.name可以是fredfoobarsalesanythingelse。它只是该数据库的逻辑名称,并在 Kafka 主题中使用(如上所述)。

\n

如果没有,您可能会遇到使用两个不同 Debezium 连接器从两个不同数据库database.server.name调用的表的潜在问题,并且都尝试将其存储在名为 的 Kafka 主题中。因此,文档中的注释是“\xe2\x80\xa6提供了一个命名空间foofoodatabase.server.name

\n
\n

编辑:关于您的评论,我的回答仍然是准确的。该文档详细介绍了主题命名,特别是 MySQL 数据库名称在主题的一部分中使用的事实database.server.name。如果您连接到同一台 MySQL 主机(假设我们将其称为database.server.name=fred),并从其上的两个名为sales和 的数据库中提取数据warehouse,并且每个数据库都有一个名为 的表audit,那么您将获得两个结果 Kafka 主题:

\n
    \n
  • fred.sales.audit
  • \n
  • fred.warehouse.audit
  • \n
\n