CloudCanal 同步 Debezium 数据实战
简述
Debezium 是一个开源的数据订阅工具,主要功能为捕获数据库变更事件发送到 Kafka。
CloudCanal 近期实现了从 Kafka 消费 Debezium 格式数据,将其 同步到 StarRocks、Doris、Elasticsearch、MongoDB、ClickHouse 等 12 种数据库和数仓,补全其数据到达能力。
本文将先简单介绍该项技术实现的背景,再通过 MySQL -> Kafka -> Starrocks 示例展示此功能。

为什么要消费 Debezium 格式数据
高流行度
Debezium 是一个高质量、被大量项目集成的开源项目,社区用户活跃,官方维护积极,修复 bug、增加新特性,不断更新版本。
作为 Kafka Connect 生态系统的一部分,Debezium 能够无缝与 Kafka 进行对接,为用户后端数据处理提供了强大的 实时数据准备 能力。
由此形成的高流行度,让每一个数据行业从业者不能忽视其影响力。
合理的消息结构
Schema(数据结构) 遵循 Kafka Connect 标准,提供了详细的字段信息。
"schema": {
"type": "struct",
"fields": [
{"type": "int32", "optional": false, "field": "id"},
{"type": "string", "optional": false, "field": "name"},
{"type": "int32", "optional": false, "field": "age"}
],
"optional": false,
"name": "my_database.user.Value"
}
Payload(数据)包含实际的数据库变更数据,与 Schema 中定义的字段对应。
"payload": {
"id": 123,
"name": "John Doe",
"age": 30,
"source": {
...
}
}
此外消息还携带了源端数据源全面的关联信息,包括库、表、时间戳、位点等信息。整体格式实用、简洁。
支持 Schema 演进
Debezium 不仅捕获数据库模式的当前状态,还能感知和记录每次模式变更细节。
当数据库表结构发生变化时(如添加、删除、修改字段等),Debezium 能够 实时捕获这些结构变更,确保变更事件的精准传递。
另外 Debezium 会为每个捕获的变更事件 记录包含当前和先前 Schema 的历史记录。
这意味着 可追溯任何时刻数据库 Schema,了解特定时间点表字段、数据类型等信息, 并且可精准还原数据库在某一时刻的结构,无需额外的查询或推测。
