


三台 Kafka 集群中,有两台的 data 目录下该 Topic 的分区文件有数据更新(如 .log 文件大小非零),而另一台没有更新,最可能的原因是:该 Broker 节点上对应分区的 Leader 角色已转移,当前它只是 Follower,且副本同步机制未正常工作或尚未追上。
用kafka-topics看了下,
Broker 1 根本没有 Partition 19 的副本(Replica)。
在 Kafka 中,如果一个 Broker 不是某个分区的副本(Replica),它就不会存储该分区的任何数据文件(.log 或 .index)。
Topic: ... Partition: 19 Leader: 2 Replicas: 2,3 Isr: 2,3
这一行揭示了 Partition 19 的所有权归属:
1. Replicas: 2,3
● 这意味着 Partition 19 的数据只存储在 Broker 2 和 Broker 3 上。
● Broker 1 不在这个列表中。因此,Broker 1 的磁盘上根本不应该有 Partition 19 的有效数据文件。
2. Leader: 2
● 所有的读写请求目前都由 Broker 2 处理。
3. Isr (In-Sync Replicas): 2,3
● Broker 2 和 Broker 3 是同步的,工作正常。
这不是故障,这是配置现状。Broker 1 被排除在 Partition 19 的副本列表之外,所以它没有数据是正常的。