目录
2.Kafka 分区重分配流程(Reassign Partitions)
3.Kafka 首选 Leader 选举流程(Preferred Leader Election)

操作前统一规则(强制)
无论哪种流程,以下通用原则必须遵守:
-
务必先确认没有消费者正在读写关键 Topic
-
务必备份 Topic 元数据
-
所有操作必须在维护窗口执行(生产)
-
Reassign 与 Leader Election 不可同时执行
-
ZK 模式和 KRaft 模式命令略有差别
1.Kafka Topic 删除流程
Kafka Topic 删除是危险操作,因为会立即删除日志文件且不可恢复。
下面是完整流程(同时包含 ZK 与 KRaft 模式)。
Step1:确认 Topic 不再被使用
kafka-consumer-groups.sh --bootstrap-server kafka1:9092 --all-groups | grep <topic>
如果仍有消费者活跃,先停止服务。
Step2:禁用 Topic 自动创建(生产环境必须)
确保:
auto.create.topics.enable=false
delete.topic.enable=true
使用命令检查:
cat server.properties | grep delete.topic.enable
如未开启,需重启 Broker 才生效。
Step3:执行 Topic 删除
ZK 模式
kafka-topics.sh \
--zookeeper zk1:2181 \
--delete \
--topic <topic_name>
KRaft 模式
kafka-topics.sh \
--bootstrap-server kafka1:9092 \
--delete \
--topic <topic_name>
Step4:检查删除状态(是否卡住)
kafka-topics.sh --describe --topic <topic> --bootstrap-server kafka1:9092
如果状态长时间卡在:
marked for deletion
原因一般是:
-
有副本 Offline
-
Broker 未同步删除 ZK/KRaft 元数据
Step5:清理卡住的删除(ZK 模式)
zkCli.sh rmr /brokers/topics/<topic_name>
Step6:确认日志文件已被清理
各 broker 执行:
ls /data/kafka-logs | grep <topic>
2.Kafka 分区重分配流程(Reassign Partitions)
分区重分配用于:
-
扩容 Broker 时迁移数据
-
修复热点分区
-
平衡磁盘空间与 IO
Kafka 提供官方流程:
--generate
--execute
--verify
Step1:准备要迁移的 Topic 列表文件
topics.json:
{
"topics": [
{"topic": "iot-events"},
{"topic": "lock-status"}
],
"version": 1
}
Step2:生成迁移计划
kafka-reassign-partitions.sh \
--bootstrap-server kafka1:9092 \
--generate \
--topics-to-move-json-file topics.json \
--broker-list "0,1,2,3" > plan.json
生成的 plan.json 类似:
{
"version":1,
"partitions":[
{"topic":"iot-events","partition":0,"replicas":[2,1,3]},
{"topic":"iot-events","partition":1,"replicas":[0,3,1]}
]
}</

最低0.47元/天 解锁文章
1586

被折叠的 条评论
为什么被折叠?



