编辑问题:
尝试配置 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"
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
anddatabase.hostname
根据 docs :
database.hostname
: IP address or host name of the MySQL database serverdatabase.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
必须是可以找到数据库的主机/IP。 database.server.name
可以是 fred
或 foobar
或 sales
或 anythingelse
。它只是该数据库的逻辑名称,并在 Kafka 主题中使用(如上所述)。
如果没有 database.server.name
,您可能会遇到潜在的问题,即使用两个不同的 Debezium 连接器从两个不同的数据库中提取一个名为 foo
的表并尝试存储它在名为 foo
的 Kafka 主题中。因此文档中的注释是 database.server.name
“...provides a namespace”
编辑:关于您的评论,我的回答仍然是准确的。文档 detail topic naming ,特别是在部分主题中使用了 MySQL 数据库名称以及 database.server.name
。如果您连接到同一台 MySQL 主机(假设我们将其称为 database.server.name=fred
),并从其上名为 sales
和 的两个数据库中提取数据>warehouse
,每个都有一个名为 audit
的表,您将有两个结果 Kafka 主题:
fred.sales.audit
fred.warehouse.audit
关于apache-kafka - 如何获取 Kafka Debezium MySQL 连接器的 database.server.name?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71450836/