如何清除所有Kafka数据以在开发环境中重新启动

时间:2019-09-03 06:59:42

标签: apache-kafka

有时有必要重新启动没有数据的kafka集群。在docker容器中运行kafka时,此行为是免费实现的。 如何用kafka过程来做?我可以删除/ var / log / kafka *并重新启动它吗?可以吗?

顺便说一句-我正在使用类似这样的东西:

# bash shell
# tl is a list of all topics
for t in $(cat tl); do 
 ./kafka-topics.sh --zookeeper $ZOO --delete --topic $t
done

上述存在两个问题:

  1. 如果硬盘使用率为100%,则尝试kafka-topics.sh时出现错误
  2. 如果我有很多话题,
  3. 效率很低

寻找在开发环境中进行操作的快速,干净的方法。

2 个答案:

答案 0 :(得分:1)

看起来像这样工作

$ ###### stop and clear all brokers
$ sudo systemctl stop kafka.service zookeeper.service
$ sudo rm -rf /var/log/kafka-logs/*

$ ###### continue ONLY after finish the above on all brokers
$ sudo systemctl start zookeeper.service
$ sleep 10s # make sure zookeeper is ready
$ sudo systemctl start kafka.service

答案 1 :(得分:-1)

我建议您暂时将log.retention.ms设置为较低的值,比如说1000。这样一来,您告诉kafka将消息保留一秒钟,然后再将其永久删除。稍等片刻,kafka会删除所有消息(活动段上的所有消息,但不是所有消息),完成后,您可以还原log.retention.ms的设置。