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



编辑问题:

尝试配置一个 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 的价值是什么?

database.server.namedatabase.hostname有什么区别

根据文档:

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

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

如果没有database.server.name,使用两个不同的 Debezium 连接器从两个不同的数据库摄取名为foo的表并尝试将其存储在名为foo的 Kafka 主题中时,可能会遇到问题。因此,文档中的评论database.server.name"...提供一个命名空间">


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

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

相关内容

  • 没有找到相关文章

最新更新