kafka中删除topic的方法

目前在我的工作中删除topic这种操作基本很少去做,但是之前也做过几次,都是很粗暴的去目录下删除文件,移除目录等方法
这次学习的笔记中我们学习记录如何彻底删除kafka的topic,按照一个正常的流程去操作,删除kafka的步骤有以下这些

首先你需要停止订阅这个topic的所有消费者和生产者,如果不停止回导致broker一致更新消费者offset状态,直接调用kafka删除命令无法删除topic,同时auto.create.topics.enable的值设置为false,默认是true,如果不进行修改的话,没有完全停止生产者,生产者在没有topic的情况下回去主动创建这个名字的topic继续进行消息的生产

将server.properties中delete.topic.enable的值设置为true,如果没有设置 delete.topic.enable=true,则调用kafka 的delete命令无法真正将topic删除,而是显示(marked for deletion)

使用kafka的topic脚本进行删除,执行命令的格式如下

./bin/kafka-topics --delete --zookeeper localhost:2181 --topic ${topic}

删除kafka存储目录下的文件,也就是server.properties文件中log.dirs配置的目录,我们清除的时候要注意集群中多个broker配置的多个数据存储目录,分区以及副本

经过以上四个步骤我们就可以将topic删除干净,如果还是无法完全删除topic的话,那我们接着往下看
我们需要在zookeeper中删除kafka相关的一些信息
我们首先登陆zookeeper shell命令行

./bin/zkCli.sh -server localhost:2181

然后找准topic的位置

ls /brokers/topics

再进行删除

rmr  /config/topics/${topic}

如果topic 是被标记为 marked for deletion,则通过命令 ls /admin/delete_topics,找到要删除的topic

rmr /admin/delete_topics/${topic}

完成以后我们可以再次使用kafka脚本查看topic列表情况

./bin/kafka-topics.sh --list --zookeeper localhost:2181

如果还存在我们删除的topic,那么你可以重启下kafka和zookeeper,再查看,一般情况是不再会有问题的

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/757.html