【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】社区版8.5.4
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
部署配置文件中有kvcdc_servers和cdc_servers两个配置,都是用于ticdc的功能吗?两者有什么区别?
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
kvcdc_servers集成在 TiKV 内部的 KV CDC,通常用在TiDB 内部组件间的通信,或者在特定的“新架构”下替代部分独立 TiCDC 的功能。cdc_servers 同步到 Kafka 或另一个 DB
这个应该是同步的数据结构不同吧
当只有kv的时候用kvcdc,一般用ticdc。
| 属性 | kvcdc_servers | cdc_servers |
|---|---|---|
| 数据捕获层级 | 存储层(TiKV 的 Raft 层) | SQL 层(TiDB 表级别) |
| 适用场景 | 直接消费 TiKV 数据变化 | 同步 SQL 数据到外部系统 |
| 数据粒度 | Key-Value 粒度 | 表级粒度 |
| 目标系统支持 | 自定义处理或消费 TiKV 数据 | Kafka、MySQL、文件等外部系统 |
| 性能 | 更低延迟,直接从 TiKV 捕获数据 | 支持复杂的同步规则和目标系统 |
| 部署复杂度 | 较低 | 较高(需要配置同步任务) |
cdc_servers是 TiCDC 的标准生产级配置,kvcdc_servers是旧版兼容配置,8.5.4 版本只需关注cdc_servers
tikv-cdc应该说的是这里,单独只部署tikv的场景。
kvcdc就是直接从kv层获取数据变更的
cdc_servers 是标准 TiCDC(SQL 层),kvcdc_servers 是 TiKV-CDC(RawKV 层)。
核心区别(一句话)
cdc_servers → 部署 TiCDC:面向 TiDB SQL 表的增量同步(DML/DDL),输出行级变更(MySQL 协议、Kafka 等)。
kvcdc_servers → 部署 TiKV-CDC:面向 TiKV RawKV(无 SQL 层)的 KV 键值变更同步,只输出 Raw KV 日志。
cdc_servers:SQL 事务级 CDC,面向 TiDB 全功能同步kvcdc_servers:RawKV 级 CDC,面向纯 TiKV KV 复制
CDC是SQL层上的级别,二KV是存储引擎RAFT层的级别吧