zoukankan      html  css  js  c++  java
  • kafka 删除topic清空数据

    kafka 删除topic清空数据

    版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39657597/article/details/84307541

    一般情况下,是不会删除数据的。到达一定时间后,kafka会自动删除。如果一定要删除可以删除topic在重建topic了

    No. 1:

    如果需要被删除topic 此时正在被程序 produce和consume,则这些生产和消费程序需要停止。

    因为如果有程序正在生产或者消费该topic,则该topic的offset信息一致会在broker更新。调用kafka delete命令则无法删除该topic。

    同时,需要设置 auto.create.topics.enable = false,默认设置为true。如果设置为true,则produce或者fetch 不存在的topic也会自动创建这个topic。这样会给删除topic带来很多意向不到的问题。

    所以,这一步很重要,必须设置auto.create.topics.enable = false,并认真把生产和消费程序彻底全部停止。

    No. 2:

    server.properties 设置 delete.topic.enable=true

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

    No. 3:

    调用命令删除topic:

    ./bin/kafka-topics --delete --zookeeper 【zookeeper server:port】 --topic 【topic name】

    No. 4:

    删除kafka存储目录(server.properties文件log.dirs配置,默认为"/data/kafka-logs")相关topic的数据目录。

    注意:如果kafka 有多个 broker,且每个broker 配置了多个数据盘(比如 /data/kafka-logs,/data1/kafka-logs …),且topic也有多个分区和replica,则需要对所有broker的所有数据盘进行扫描,删除该topic的所有分区数据。

    一般而言,经过上面4步就可以正常删除掉topic和topic的数据。但是,如果经过上面四步,还是无法正常删除topic,则需要对kafka在zookeeer的存储信息进行删除。具体操作如下:

    (注意:以下步骤里面,kafka在zk里面的节点信息是采用默认值,如果你的系统修改过kafka在zk里面的节点信息,则需要根据系统的实际情况找到准确位置进行操作)

    No. 5:

    登陆到zk服务器,使用命令:

    bin/zkCli.sh -server 【zookeeper server:port】

    登录到zk shell后,然后找到topic所在的目录:ls /brokers/topics,找到要删除的topic,然后执行命令:

    rmr /brokers/topics/【topic name】

    即可,此时topic被彻底删除。

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

    rmr /admin/delete_topics/【topic name】

    备注:

    网络上很多其它文章还说明,需要删除topic在zk上面的消费节点记录、配置节点记录,比如:

    rmr /consumers/【consumer-group】

    rmr /config/topics/【topic name】

    其实正常情况是不需要进行这两个操作的,如果需要,那都是由于操作不当导致的。比如step1停止生产和消费程序没有做,step2没有正确配置。也就是说,正常情况下严格按照step1 – step5 的步骤,是一定能够正常删除topic的。

    No. 6:

    完成之后,调用命令:

    ./bin/kafka-topics.sh --list --zookeeper 【zookeeper server:port】

    查看现在kafka的topic信息。正常情况下删除的topic就不会再显示。

    但是,如果还能够查询到删除的topic,则重启zk和kafka即可。

    创建topic

    bin/kafka-topics.sh --create --zookeeper 【zookeeper server:port】 --replication-factor 3 --partitions 3 --topic 【topic name】

    –replication-factor 2 #3个副本

    –partitions 1 #3个分区

    –topic #主题名为shuaige

  • 相关阅读:
    Django+nginx+uwsgi静态文件permission denied!
    部署Django项目到Centos6.9服务器
    Django Rest Framework 使用summernote上传图片(二)
    Django Rest Framework 使用summernote上传图片(一)
    基于DRF的企业级流程管理系统
    js获取cookie里保存的中文
    web Worker使js实现‘多线程’?
    css3折叠效果
    移动端适配方案研究
    css before,after伪元素妙用
  • 原文地址:https://www.cnblogs.com/vana/p/10201302.html
Copyright © 2011-2022 走看看