TiCDC通过kafka的几个问题

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
生产环境 V5.0.3

【概述】 场景 + 问题概述

场景:通过ticdc同步tidb数据到kafka,存在一下几个问题

1、 kafka的Sink URI 配置 看不支持多个IP,kafka集群存在多个节点,目前只支持配置一个节点IP,那如果这个节点宕了,那cdc任务就有问题了?

2、目前kafka的Sink URI 配置也不支持用户名和密码认证,这种如果kafka集群需要用户名和密码认证该如何解决?
看CDC的底层使用的是sarama访问KAFKA,这个应该是支持多个IP地址以及用户名密码认证的,目前cdc不支持的原因是什么?

参考文档链接:
https://docs.pingcap.com/zh/tidb/stable/manage-ticdc#sink-uri-配置-kafka

【附件】

  • 相关日志、配置文件、Grafana 监控(https://metricstool.pingcap.com/)
  • TiUP Cluster Display 信息
  • TiUP CLuster Edit config 信息
  • TiDB-Overview 监控
  • 对应模块的 Grafana 监控(如有 BR、TiDB-binlog、TiCDC 等)
  • 对应模块日志(包含问题前后 1 小时日志)

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

1 个赞

我记得是有CA证书的

第一个问题 可以加一个代理解决,理论上是LB的

1、kafka上层在使用一层代理,使用上就非常不友好了
2、kafka用户名密码认证,类似于MySQL的用户名和密码,不是ca认证

kafka://127.0.0.1:9092,127.0.0.1:9092,127.0.0.1:9092/cdc-test? 这样直接加是可以的

你是哪种认证方式 TLS还是SASL/PLAIN认证?

SASL/PLAIN认证方式

可以直接在连接字符串加 username和password 选择 sasl 尝试一下

能列个具体的连接示例吗?谢谢

–sink-uri=“kafka://127.0.0.1:9092,127.0.0.2:9092,127.0.0.3:9092/cdc-test?kafka-version=2.4.0&partition-num=6&max-message-bytes=67108864&replication-factor=1&saslEnable=true&username=xx&password=xx”

推测 具体需验证一下。

好的,非常感谢,我这边稍后测试一下,还有个问题咨询一下:

我这边如果协议类型选择protocol = default的话,default 为 TiCDC Open Protocol,同步到kafka的数据key和value会出现乱码,这是什么原因呢?
如下所示:

如果协议选择maxwell,同样key会出现乱码,但是value的数据是正常的

你可以服务器消费一下 看看是什么

ok 测试好了回复下是否可行

好的,我测试完了反馈一下

如果协议选择maxwell,同样key会出现乱码,但是value的数据是正常的

通过程序读取出来的key格式如下,value数据正常;

https://docs.pingcap.com/zh/tidb/stable/ticdc-open-protocol#消费端协议解析 你参考一下这个

请问下,你那边吧数据同步到开SASL/PLAIN认证方式安全的kafka 是怎么配置的?我按照讨论中的&saslEnable=true&username=xx&password=xx” 不行,5.4.1 版本

验证可行不,我也卡在访问开安全的kafka上了

参数 解析
sasl-user 连接下游 Kafka 实例所需的 SASL/SCRAM 验证的用户名(authcid)(可选)
sasl-password 连接下游 Kafka 实例所需的 SASL/SCRAM 验证的密码(可选)
sasl-mechanism 连接下游 Kafka 实例所需的 SASL/SCRAM 验证的名称(可选)

更多 kafka 配置见 TiCDC 运维操作及任务管理 | PingCAP Docs

能列个具体的连接示例吗?谢谢,我这边尝试了将这个三个参数拼接在uri 里面,没有效果