Debezium同步多个表投递到一个Topic

Debezium同步多个表投递到一个Topic

Debezium 是否支持同步 多个表投递到一张topic?

答 : 支持

验证如下:

官方说明: https://debezium.io/documentation/reference/1.5/configuration/topic-routing.html

在这里插入图片描述

数据库db如下

在这里插入图片描述

配置如下

{
    
    
    "name":"10.90.81.121-canalA", 
    "config":{
    
    
        "connector.class":"io.debezium.connector.mysql.MySqlConnector",
        "tasks.max":"1",
        "database.hostname": "你的数据库地址", 
       "database.port": "3306", 
        "database.user": "wys", 
        "database.password": "wys", 
        "database.server.id": "184051", 
        "database.server.name":"cacanalAal", 
        "database.history.kafka.bootstrap.servers": "kafka地址:9094", 
        "database.history.kafka.topic":"debezium_canal",
		"database.include.list": "canal",
        
		"transforms":"Reroute",
		"transforms.Reroute.type":"io.debezium.transforms.ByLogicalTableRouter",
		"transforms.Reroute.topic.regex":"(.*)topic_test(.*)",
		"transforms.Reroute.topic.replacement":"$1canal_test"
		
    }
}

在这里插入图片描述额外参数说明

"database.include.list": "canal",   只投递 实例下的 canal 数据库
"transforms":"Reroute",   # 默认配置
"transforms.Reroute.type":"io.debezium.transforms.ByLogicalTableRouter",  # 默认配置
"transforms.Reroute.topic.regex":"(.*)topic_test(.*)",    # 这里同步 中间包含 topic_test 的表 
"transforms.Reroute.topic.replacement":"$1canal_test"  # 具体如上规则的表 将投递到  cacanalAal.canal.canal_test topic 中

参数说明

// 最终生成的某张表的kafka topic为:(database.server.name).数据库名.表名
 
{
    
    
    "name":"debezium-test-5017",     // 连接器名称
    "config":{
    
            // 连接器配置
        "connector.class":"io.debezium.connector.mysql.MySqlConnector",
        "database.hostname":"4.4.4.4",   //MySQL数据库主机
        "database.port":"5017",     // MySQL数据库端口
        "database.user":"test",    // MySQL数据库使用用户
        "database.password":"123",     // 用户密码
        "database.server.id":"316545017",
        "database.server.name":"debezium",       // 唯一的服务器逻辑名称。该名称将用作所有Kafka topic的前缀。
        "database.history.kafka.bootstrap.servers":"1.1.1.1:7091,2.2.2.2:7091,3.3.3.3:7091",
        "database.history.kafka.topic":"debezium_test"
    }
}
 
-- 其余常用配置
"database.include.list": "zztest"      // 仅监控哪个库的更改,默认监控所有数据库,以下均可配置为正则表达式
"database.exclude.list": "zztest"      // 不监控哪个库的更改,不能和database.include.list同时使用
"table.include.list": "t1"          // 监控哪些表的更改
"table.exclude.list": "t1"          // 不监控哪些表的更改,不能和table.include.list同时使用
"column.include.list": "col1"          // 监控哪些字段的更改
"column.exclude.list": "col1"          // 不监控哪些字段的更改,不能和column.include.list同时使用

如果投递成功 我这里 应该 会生成两个 topic

其中 表 topic_test和 表 topic_test1 和 表 topic_test2 对应一个 topic cacanalAal.canal.canal_test
表 8888 对应 topic cacanalAal.canal.888
在这几张表中 分别插入一些数据
然后去查询 topic 的log
cd /service/software/debezium/kafka_2.13-2.5.0/log
执行 ls 如下
在这里插入图片描述
验证 数据是否进入 对应的 topic
grep -rn ‘topic_test’ cacanalAal.canal-/.log
grep -rn ‘topic_test1’ cacanalAal.canal-/.log
grep -rn ‘topic_test2’ cacanalAal.canal-/.log
grep -rn ‘8888’ cacanalAal.cana*/*.log
结果如下

在这里插入图片描述
在这里插入图片描述

Guess you like

Origin blog.csdn.net/weixin_43564627/article/details/119572749