TiCDC和tidb Binlog 同步到kafka格式兼容性

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
之前用的tidb binlog 把数据同步到kafka,升级到tidb6.1.6后,需要改用TiCDC同步到kafka, TiCDC输出到 Kafka 的消息协议,可选值有 canal-json、open-protocol、canal、avro、maxwell, 哪种和tidb binlog的格式一样?研发不用改代码就能用?
研发说tidb binlog同步到kafka时,他们消费kafka是用的pingcap的go包,bytes格式。
我用kafka-console-consumer.sh命令行消费,看着和ticdc输出的都不一样啊

tidb binlog到kafka时,kafka的消费结果:

TiCDC canal-json格式到kafka:


TiCDC open-protocol格式到kafka:

TiCDC canal格式到kafka

TiCDC maxwell格式到kafka:

【资源配置】
【附件:截图/日志/监控】

额,就不会相同…

建议采用 open-protocol
可以对比下官方文档上,binlog 和 ticdc 输出的 event 的差异,做下调整就可以了

binlog 文档
https://docs.pingcap.com/zh/tidb/stable/binlog-consumer-client

ticdc 文档
https://docs.pingcap.com/zh/tidb/stable/ticdc-open-protocol#消费端协议解析

有没有从tidb binlog升级到ticdc的例子啊? tidb5以后就不建议用tidb binlog了,用ticdc替代tidb binlog应该是个常见需求吧

估计没有…

binlog 可以输出成文件,大体上都是拿来做文件备份的。

ticdc,承担都是更多实时的场景,比如:

  • 下游同源库
  • 数据订阅触发
  • 多中心异地

我们使用tidb binlog同步到kafka 和 下游tidb的。
老版本tidb没有ticdc啊,要是升级tidb,这个不兼容不好升级啊

不兼容咯…

tidb大版本之间也有差异,所以升级前先做好 poc 和环境测试,这样你的升级计划会更完备