如何获取Kafka Debezium MySQL连接器的数据库.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
我有:
- 主机名:";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服务器获取值?。在这个场景中,如果我想要将多个数据库包含在antiase.cludde.list中,那么atabase.server.name的值是多少?
推荐答案
database.server.name
database.hostname
根据docs:
database.hostname
:MySQL数据库服务器的IP地址或主机名database.server.name
:标识特定MySQL数据库服务器并为其提供命名空间的逻辑名称/集群,Debezium在该集群中捕获更改。逻辑名称在所有其他连接器中应该是唯一的,因为它用作接收该连接器发出的事件的所有Kafka主题名称的前缀。数据库服务器逻辑名称中只能使用字母数字字符、连字符、圆点和下划线。
sodatabase.hostname
必须是数据库所在的主机/IP。database.server.name
可以是fred
或foobar
或sales
或anythingelse
。它只是数据库逻辑名称,并在Kafka主题中使用(如上所述)。
如果没有database.server.name
,您可能会遇到一个问题,即使用两个不同的Debezium连接器从两个不同的数据库中摄取一个名为foo
的表,并且两个数据库都试图将其存储在一个名为foo
的Kafka主题中。因此,文档中的注释database.server.name
…提供命名空间
编辑:关于您的评论,我的回答仍然是准确的。文档detail topic naming,特别是在主题的一部分中使用了MySQL数据库名称,database.server.name
也是如此。如果您连接到同一个MySQL主机(假设我们将其称为database.server.name=fred
),并从其上名为sales
和warehouse
的两个数据库中提取数据,并且每个数据库都有一个名为audit
的表,则会有两个Kafka主题:
fred.sales.audit
fred.warehouse.audit
这篇关于如何获取Kafka Debezium MySQL连接器的数据库.server.name?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!