kafka-jdbc-connector-sink实现kafka中的数据同步到mysql

这篇博客介绍了如何利用kafka的jdbc连接器将数据从kafka实时同步到MySQL,作为主从复制方案的替代。通过kafka connector,可以进行简单数据过滤。文中提到了配置、工具选择以及遇到的问题,如配置正则读取topic、TombstoneHandler的jar包缺失、dropPrefix后自动创建表失效等。同时,指出了在数据同步过程中需要注意的细节,如key值覆盖value字段、upsert模式下主键的设定等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 这是一篇关于通过mysql主从复制的方式进行数据同步的教程: https://zixuephp.net/article-438.html

  • 接下来笔者要描述的是mysql的数据通过kafka,然后在实时进入其他mysql数据库的方案

  • 有同学可能会问到为什么这么麻烦,而不直接使用主从复制的方案来解决mysql的数据同步呢?原因是通过kafka connector可以做简单的数据过滤。

  • 由于kakfa connctor只能做简单的数据过滤,之后可能会使用mysql + kafka + flink的形式实现数据同步

  • kafka只用dbz connector获取mysql中的数据,具体操作细节不是本文重点,在此不在赘述,后续会补上关于dbz操作mysql数据库的文章

kafka中数据同步到mysql

需求

1. 把kafka中dbz产生的数据同步到mysql中并修改表的名字
2. 将某一topic中的数据按着不同的字段组合以及定义不同字段为主键将数据同步到不同的表中
* 暂时不考虑支持自动创建表和删除操作,因为一般生产环境中只有软删除

实现

需求1:
    dbz中的数据是before-after的格式,需要将after中的数据提取出来同步到mysql中。
    通过正则表达式读取topic-name, 将每个topic的名字添加上前缀作为mysql的表名字。
需求2:
    topic中的value值不可以为null,对于过滤的字段必须存在topic的struct中。

工具

kafka-jdbc-connector-sink.jar

配置

  • 通过正则读取dbz的topic,替换表名后写入mysql(启动一个connector操作多个topic,一个topci对应一张表)
curl -H "Content-Type:application/json" -X PUT -d '{

    "connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
    "connection.url
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值