编辑问题:
尝试配置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的值是多少?
发布于 2022-03-13 09:42:38
database.server.name和database.hostname有什么区别?
根据文档
database.hostname:数据库服务器的IP地址或主机名database.server.name:逻辑名称,它标识并为特定的MySQL数据库服务器/cluster提供名称空间,其中Debezium正在捕获更改。逻辑名称在所有其他连接器中都应该是唯一的,因为它用作接收该连接器发出的事件的所有Kafka主题名称的前缀。只能在数据库服务器逻辑名称中使用字母数字字符、连字符、点和下划线。因此,database.hostname必须是可以找到数据库的主机/IP。database.server.name可以是fred或foobar,也可以是sales或anythingelse。它只是该数据库的逻辑名称,并在Kafka主题中使用(如上文所述)。
如果没有database.server.name,您就会遇到潜在的问题:使用两个不同的Debezium连接器从两个不同的数据库中摄取一个名为foo的表,并且都试图将其存储在一个名为foo的Kafka主题中。因此,在文档中,database.server.name "…提供了一个名称空间“的注释
编辑:关于你的评论,我的回答仍然是准确的。docs 细节主题命名,特别是在主题的一部分中使用MySQL数据库名称的事实,以及database.server.name。如果您连接到同一个MySQL主机(假设我们称之为database.server.name=fred),并从其中的两个数据库(名为sales和warehouse )中提取数据,并且每个数据库都有一个名为audit的表,那么您将有两个最终的Kafka主题:
fred.sales.auditfred.warehouse.audithttps://stackoverflow.com/questions/71450836
复制相似问题