Cloud王
(Hacker Yons Hv5m)
2023 年10 月 24 日 02:37
1
Bug 反馈
清晰准确地描述您发现的问题,提供任何可能复现问题的步骤有助于研发同学及时处理问题
【 TiDB 版本】
Tidb7.1.1
【 Bug 的影响】
Ticdc的partition-num参数无效,导致无法指定分区数 同步数据到kafka。
【可能的问题复现步骤】
1、创建3分区的kafka topic:
2、创建Ticdc changefeed:
curl -X POST http://XXX.XXX.XXX.XXX:8300/api/v2/changefeeds -d ‘{“changefeed_id”:“test-patition”,“start_ts”: 445150430914150401,“sink_uri”:“kafka://XXX.XXX.XXX.XXX:9092/kafka-task1?enable-tidb-extension=true&partition-num=1 &replication-factor=1&max-message-bytes=67108864”,“replica_config”: {“filter”: {“rules”:[“test_cdc."]},“ignore_ineligible_table”: true,“mounter”: {“worker_num”: 16},“sink”: {“dispatchers”: [{“matcher”: ["test_cdc. ”],“partition”: “index-value”}],“protocol”: “canal-json”}}}’
3、结果
在3分区情况下,partition-num=1和2,都不起作用,结果kafka的3个分区都出现同步数据 。
备注:
replication-factor=1或者3,都不影响结果。
使用 API v2 或者 命令行 cdc cli changefeed create 来创建,得到的结果都是一样的。
【看到的非预期行为】
kafka的3个分区都出现同步数据。
【期望看到的行为】
kafka只有1个分区出现同步数据,另外两个分区不应出现同步数据。
【相关组件及具体版本】
Tidb7.1.1,tiup安装:3节点tidb,3节点tikv,3节点ticdc
【其他背景信息或者截图】
随缘天空
(Ti D Ber Ivw R7o Pj)
2023 年10 月 24 日 02:44
3
Kafka主题的分区数量要与partition-num参数的值一致,你把kafka分区的数量设为1或2试试。否则Kafka 主题的分区数量为 3,那么无论你设置 partition-num 为何值,TiCDC都会将数据同步到所有分区。
Cloud王
(Hacker Yons Hv5m)
2023 年10 月 24 日 03:00
5
那这个参数的意义何在?无论设置成多少,都会同步到所有分区,那取消掉这个参数,效果不是一样的吗?
Cloud王
(Hacker Yons Hv5m)
2023 年10 月 24 日 03:05
6
另外,我试了一下,Tidb4.0.15,在kafka的topic为3分区的情况下,Ticdc设置partition-num=1的时候,只会同步到1个分区中,而不会同步到3个分区中。
随缘天空
(Ti D Ber Ivw R7o Pj)
2023 年10 月 24 日 03:05
7
你先把kafka的分区设置为2试下,partition-num也设置为2,你看下会同步到几个分区
Cloud王
(Hacker Yons Hv5m)
2023 年10 月 24 日 03:08
8
Tidb7.1.1:
1、partition-num=3,topic分区数为3,同步分区数为3个
2、partition-num=2,topic分区数为3,同步分区数为3个
3、partition-num=1,topic分区数为3,同步分区数为3个
4、partition-num=2,topic分区数为2,同步分区数为2个
5、partition-num=1,topic分区数为2,同步分区数为2个
Tidb4.0.15:
1、partition-num=3,topic分区数为3,同步分区数为3个
2、partition-num=2,topic分区数为3,同步分区数为2个
3、partition-num=1,topic分区数为3,同步分区数为1个
4、partition-num=2,topic分区数为2,同步分区数为2个
5、partition-num=1,topic分区数为2,同步分区数为1个
Cloud王
(Hacker Yons Hv5m)
2023 年10 月 24 日 03:16
10
kafka需要调整啥呢?是分区数吗?
假设kafka有10个分区,我只想同步其中的1个分区,那么设置partition-num=1,就应该可以实现这个需求了。
实际上4.0.15的确已经实现了这个需求。
但是7.1.1这个参数却突然失效了。
随缘天空
(Ti D Ber Ivw R7o Pj)
2023 年10 月 24 日 06:08
11
从你的截图中可以看出,高版本的同步分区数是以topic分区数为主的,partition-num和topic分区数不一致时,如果partition-num小于topic数量,那么该参数无效。低版本则以partition-num为主。你可以把partition-num参数的值设大一些,超过topic分区数你在看下不同版本间同步数是多少
Cloud王
(Hacker Yons Hv5m)
2023 年10 月 24 日 06:22
12
都报错了,提示设置的partition-num数量大于kafka的topic分区数,报错内容是一样的:
[CDC:ErrKafkaNewSaramaProducer][CDC:ErrKafkaInvalidPartitionNum]the number of partition (5) specified in sink-uri is more than that of actual topic (3)
如果真像你测试的结果那样,这个肯定是bug。可以提下issues
随缘天空
(Ti D Ber Ivw R7o Pj)
2023 年10 月 24 日 08:22
14
从你的报错信息看partition-num超过了topic的数量了,估计这个值最大不能超过topic的值,高版本的集群可能这块有问题,你可以咨询下官方人员
Cloud王
(Hacker Yons Hv5m)
2023 年10 月 24 日 08:30
15
有猫万事足
2023 年10 月 24 日 15:04
16
https://github.com/pingcap/tiflow/blob/v7.1.1/pkg/sink/kafka/options.go#L196C1-L203C1
正常情况下,应该能看到一个Warn级别的日志。
number of partition specified in sink-uri is less than that of the actual topic.
Some partitions will not have messages dispatched to
这些内容有吗?如果没有的话,看看ticdc版本和tidb版本是否一致?
fubinz
2023 年10 月 25 日 08:20
18
多谢您反馈这个问题, 该问题已 transfer 至 tiflow repo 继续跟进。
https://github.com/pingcap/tiflow/issues/9952
1 个赞
system
(system)
关闭
2023 年12 月 24 日 08:20
19
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。