案例分析:记一次永久删除Kafka的Topic的故事

背景
一天早上,我到公司还没坐稳,运营团队的大佬就来找我说:“小米,系统登录不上去了,一直提示操作失败,你给看看,挺急的”,我立刻把电脑从背包拿出来,打开系统日志,发现redis异常,截图如下:

发现RDB无法磁盘上持久化,去看了Redis日志,报以下日志:
No space left on device
磁盘空间满了,用dum命令一看,乖乖儿,果然满了,kafka占190多个G,进入kafka日志文件夹里一看,光光example这个topic就占了大头,但诡异的是咱们查看了所有相关配置,项目里没有配置这个topic,那就着手删除……

步骤一:删除kafka中topic存储目录
rm -rf example-0
步骤二:查看所有主题
./bin/kafka-topics.sh --zookeeper 127.0.0.1:2181 --list
步骤三:删除example主题
./bin/kafka-topics.sh --delete --zookeeper 127.0.0.1:2181 --topic example
如果kafaka启动时加载的配置文件中server.properties没有配置delete.topic.enable=true,那么此时的删除并不是真正的删除,而是把topic标记为:marked for deletion
步骤四:登录zookeeper
./bin/zkCli.sh
步骤五:查看所有topic
ls/brokers/topics
步骤六:删除topic
rmr /brokers/topics/example
至此,彻底删除了该topic,经过定期的观看没有发现该topic数据。
步骤七:禁用主题自动创建
一般情况下,Kafka生产环境中的配置文件中,会配置如下参数:
auto.create.topics.enable=false
这样可以确保topic不会自动创建。
写在最后
好兄弟可以点赞并关注我的公众号“javaAnswer”,全部都是干货。
