前言

我们都知道kafka管理的主要对象之一就是topic。对topic的增伤查改是最基本的操作。但是如果你使用kafka命令删除topic时报错该怎么办?就只能卸载掉kafka重新安装了吗?

当然不是了。我们可以使用zookeeper去物理删除topic。

 

正文

由于前段时间迁移云服务器,为图省事就使用了自定义脚本。所以在迁移完毕之后,kafka内容和配置还是原机器的。当我去删除kafka的topic时:

sh kafka-topics.sh --delete --zookeeper localhost:2181 --topic test_topic

发现报了这两个错误。

Topic is marked for deletion.

Replication factor: 1 larger than available brokers: 0.

我简单想了一下,可能是原来的kafka集群有3个broker,现在改成了单个broker,所以报错了。

经过一番查询资料,我发现使用命令无法删除也没关系,可以进到zookeeper物理删除。

于是,我就做了以下5件事:

  1. 备份现有topic
sh kafka-topics.sh --zookeeper localhost:2181 --list > all_topics
  1. 在kafka配置文件(server.properties)中添加一个参数。
delete.topic.enable=true    #如果不加这个参数,被删除的topic会被标记为marked for deletion
  1. 删除kafka配置文件此参数下的所有内容。
log.dirs=/data/apps_data/kafka/kafka-logs  
rm -rf /data/apps_data/kafka/kafka-logs/*
  1. 进到zookeeper的客户端,从客户端删掉想要删除的topic。
sh zookeeper-shell.sh localhost:2181  #如果没装zk服务的话,就可以使用kafka/bin目录下的zookeeper-shell脚本去登录zookeeper客户端

ls /brokers/topics                    #查看集群broker主机下的topics
deleteall /brokers/topics/test_topic  #deleteall是较新版本的kafka支持的命令,而旧版本的kafka使用的是rmr

zookeeper下的操作很反人类,没有输入提示,不支持jio本,只能一个一个删。笔者删了300+个topic,眼睛都快瞎左啦😭

  1. 全部删除完成之后,使用脚本重新添加即可。
while IFS= read -r line  #等号后边加个空格
do
  sh kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic 
done

 

补充

zookeeper的常用操作如下:

  1. 登录

    sh zookeeper-shell.sh localhost:2181
    Connecting to localhost:2181
    Welcome to ZooKeeper!
    JLine support is disabled
    
    WATCHER::
    
    WatchedEvent state:SyncConnected type:None path:null
    

zookeeper没有命令提示符!

  1. 查看zookeeper相关信息

    ls / #查看zookeeper基本信息
    
    ls /brokers/topics  #查看现有的topic
    
    ls /brokers/ids     #查看brokers的id
    
    ls /brokers/ids/0   #查看id为0的服务器的信息
    
  2. 删除topic

    ls /brokers/topics                    #查看集群broker主机下的topics
    deleteall /brokers/topics/test_topic  #deleteall是较新版本的kafka支持的命令,而旧版本的kafka使用的是rmr
    
posted on   eryoung2  阅读(1796)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示