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

How to get database.server.name for Kafka Debezium MySQL connector?

正在编辑问题:

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

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

我有:

然后我设置如下属性:

"database.hostname": "ec2-xxx.compute.amazonaws.com"
"database.include.list": "mycooldb"

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

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

database.hostname 是主机名或 ip。

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

What is the difference between database.server.name and database.hostname

根据 docs:

  • database.hostname: IP address or host name of the MySQL database server
  • database.server.name: Logical name that identifies and provides a namespace for the particular MySQL database server/cluster in which Debezium is capturing changes. The logical name should be unique across all other connectors, since it is used as a prefix for all Kafka topic names that receive events emitted by this connector. Only alphanumeric characters, hyphens, dots and underscores must be used in the database server logical name.

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

如果没有 database.server.name,您可能会遇到潜在的问题,即使用两个不同的 Debezium 连接器从两个不同的数据库中提取名为 foo 的 table,并且都试图将其存储在 Kafka 主题中称为 foo。因此文档中的注释 database.server.name “… 提供了一个命名空间


编辑:关于您的意见,我的回答还是准确的。文档 detail topic naming,特别是 MySQL 数据库名称与 database.server.name 一样在部分主题中使用。如果您连接到同一个 MySQL 主机(假设我们称它为 database.server.name=fred),并从其上名为 saleswarehouse 的两个数据库中提取数据,并且每个数据库都有一个table 调用了 audit,您将得到两个 Kafka 主题:

  • fred.sales.audit
  • fred.warehouse.audit