77. [debezium]热修改Debezium MySQL Connector配置

此操作针对debezium1.2,更高版本应该也支持。

假设这样一个场景:现在已经针对数据库中的表创建了connector的,并且设置的是表级别的白名单,而且一个库使用一个connector,如果后期该库中新增了一个之前没有的表,我们仍然想对其进行监听,重新创建一个connector似乎代价过大,该如何做?

针对此场景,解决办法是热修改connector的配置,现默认服务已经全部启动,connector已经成功注册

77.1. 第一步

原来的connector不需要进行DELETE、PAUSE、RESTART等一切操作

找准需要热修改的connector,编辑对应于该connector的配置文件,只针对config参数,在table.whitelist里面新增需要新同步的表

该配置编辑成文件,命名为mos-uos_debezium_connector2.json

{
    "connector.class": "io.debezium.connector.mysql.MySqlConnector",
    "database.hostname": "192.168.88.161",
    "database.port": "3306",
    "database.user": "root",
    "database.password": "123456",
    "database.server.id": "7",
    "database.server.name": "cdp.mos-uos",
    "database.history.store.only.monitored.tables.ddl":"true",
    "table.whitelist": "mos-uos.uos,mos-uos.tos,mos-uos.pos",
    "snapshot.mode": "when_needed",
    "snapshot.locking.mode": "none",
    "max.queue.size":"81290",
    "max.batch.size":"20480",
    "decimal.handling.mode":"string",
    "database.history.kafka.bootstrap.servers": "192.168.88.161:9092,192.168.88.162:9092,192.168.88.163:9092",
    "database.history.kafka.topic": "dbhistory.localddl",
    "include.schema.changes": "true",
    "transforms":"route",
    "transforms.route.type": "org.apache.kafka.connect.transforms.RegexRouter",
    "transforms.route.regex":"(.*)\\.(.*)\\.(.*)",
    "transforms.route.replacement":"cdp.$2.$3",
    "converters":"selfConvert",
    "selfConvert.type":"com.test.mos.debezium.UserDefineConvert",
    "selfConvert.selector":".*"
  
}

77.2. 第二步

使用命令行提交,注意命令中指定了connector的名字config

curl -s -X PUT -H 'Content-Type: application/json' --data @mos-uos_debezium_connector2.json http://localhost:8083/connectors/dbz_mos-uos/config