我使用的是debezium(0.7.5)mysql连接器,我试图了解如果我想用这个选项更新这个配置,最好的方法是什么 table.whitelist
.
假设我创建了一个连接器,类似这样:
curl -i -X POST -H "Accept:application/json" -H "Content-Type:application/json" http://debezium-host/connectors/ -d '
{
"name": "MyConnector",
"config": {
"connector.class": "io.debezium.connector.mysql.MySqlConnector",
"connect.timeout.ms": "60000",
"tasks.max": "1",
"database.hostname": "myhost",
"database.port": "3306",
"database.user": "***",
"database.password": "***",
"database.server.id": "3227197",
"database.server.name": "MyServer",
"database.whitelist": "myDb",
"table.whitelist": "myDb.table1,myDb.table2",
"database.history.kafka.bootstrap.servers": "kb0:9092,kb1:9092,kb2:9092",
"database.history.kafka.topic": "MyConnectorHistoryTopic",
"max.batch.size": "1024",
"snapshot.mode": "initial",
"decimal.handling.mode": "double"
}
}'
一段时间后(2周),我需要添加一个新表( myDb.table3
)为了这个 table.whitelist
选项(此表是一个旧表,它是在连接器之前创建的)
我尝试的是:
暂停连接器。
删除了历史主题(可能是这个问题?)。
通过api update config endpoint更新配置。
恢复连接器。
通过api更新命令:
curl -i -X PUT -H "Accept:application/json" -H "Content-Type:application/json" https://kafka-connect-host/connectors/MyConnector/config/ -d '
{
"connector.class": "io.debezium.connector.mysql.MySqlConnector",
"connect.timeout.ms": "60000",
"tasks.max": "1",
"database.hostname": "myhost",
"database.port": "3306",
"database.user": "***",
"database.password": "***",
"database.server.id": "3227197",
"database.server.name": "MyServer",
"database.whitelist": "myDb",
"table.whitelist": "myDb.table1,myDb.table2,myDb.table3",
"database.history.kafka.bootstrap.servers": "kb0:9092,kb1:9092,kb2:9092",
"database.history.kafka.topic": "MyConnectorHistoryTopic",
"max.batch.size": "1024",
"snapshot.mode": "schema_only",
"decimal.handling.mode": "double"
}'
但它没有起作用,也许这根本不是最好的方法。在其他连接器中,我不使用该选项 table.whitelist
,所以当我需要听一张新table时,我没有这个问题。
我的最后一个选择是删除这个连接器,然后用这个新配置创建另一个连接器,同时监听新表( myDb.table3
). 问题是如果我想从 myDb.table3
我必须用快照创建 initial
但我不想从其他表的快照中生成所有消息 myDb.table1,myDb.table2
.
1条答案
按热度按时间esbemjvw1#
目前还不支持更改白名单/黑名单配置。这项工作目前正在进行中(请参阅dbz-175),我们希望在下一个版本中提供对此的预览支持。有一个悬而未决的公关,这需要更多的工作,虽然。
在实现之前,最好的选择是设置连接器的新示例,该示例只捕获您感兴趣的其他表。这是以运行两个连接器为代价的(这两个连接器都将维护binlog读取器会话),但是只要您不需要太频繁地更改过滤器配置,就可以做到这一点。