编辑问题:
尝试配置一个 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.name
和database.hostname
有什么区别
根据文档:
database.hostname
:MySQL 数据库服务器的 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
),并从其上的两个数据库(称为sales
和warehouse
)中提取数据,并且每个数据库都有一个名为audit
的表,您将有两个生成的Kafka主题:
fred.sales.audit
fred.warehouse.audit