原创

kafka彻底删除topic

版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://lidong.blog.csdn.net/article/details/61615554

今天发现一个线上kafka(版本为0.8.2.2)多天前已不再消费的topic标记为删除(marked for deletion),而我们每天有定时删除topic的shell脚本,会把无用的topic干掉,但发现这些topic只是被标记为删除,而并没有真正删除,其server.properties的相关配置如下:
delete.topic.enable=true
log.retention.hours=72
既然自动删除没起作用(后来探查到原因是我们的监控服务还在访问这个topic),那就手动删除

要彻底把topic删除需要把kafka中与该topic相关的本地数据目录及zookeeper与该topic相关的路径删除。kafka的zookeeper root为/kafka,比如要删除topic为${topic_name}


1.删除kafka相关的数据目录
首先查看数据目录在server.properties配置如下: log.dirs=/data1/kafka_logs

执行 rm -r /data1/kafka_logs/${topic_name}*

2.删除kafka topic
${KAFKA_HOME}/bin/kafka-topics.sh --delete --zookeeper ${ZOOKEEPER_HOST}:2181/kafka --topic ${topic_name}

3.删除zookeeper相关的路径
进入${ZOOKEEPER_HOME}/bin/zkCli.sh
执行下面的命令
rmr /kafka/consumers/${topic_name}-group
rmr /kafka/config/topics/${topic_name}
rmr /kafka/brokers/topics/${topic_name}
rmr /kafka/admin/delete_topics/${topic_name}

4.用下面命令查看相关的topic还在不在:
${KAFKA_HOME}/bin/kafka-topics.sh --list --zookeeper ${ZOOKEEPER_HOST}:2181/kafka --topic ${topic_name}

如果仍然删除不了的话,需要检查kafka数据目录中的recovery-point-offset-checkpoint和replication-offset-checkpoint文件里是否有该topic的信息

展开阅读全文

没有更多推荐了,返回首页