kafka彻底删除topic(cleanup policy)、清除特定topic数据
一、徹底不需要該topic了
假設topic為test-0921
步驟如下:
①$KAFKA/bin/kafka-topics.sh --delete --zookeeper Desktop:2181 --topic test-0921被標記為marked for deletion的topic你可以在zookeeper客戶端中通過命令獲得:ls /admin/delete_topics/{topic name},如果你刪除了此處的topic,那么marked for deletion 標記消失[1]
②$ZOOKEEPER/bin/zkCli.sh -server Desktop:2181
delete /config/topics/kafka_ddl
deleteall /config/topics/kafka_ddl
deleteall /brokers/topics/kafka_ddl
deleteall /consumers/【consumer-group】
二、依然需要該topic,只是想清空數據
此時需要清空策略(cleanup policy)
?
①基于時間的清空策略
| 作用 | 具體命令行 | 備注 |
| 刪除topic數據 | $KAFKA/bin/kafka-topics.sh --delete --topic?timeIntervalJoin_02 --bootstrap-server Desktop:9091 | 沒刪除干凈,僅僅是 marked for deletion |
| 查看某個topic的清空策略 | $KAFKA/bin/kafka-configs.sh --bootstrap-server Desktop:9091 --describe --entity-type topics --entity-name timeIntervalJoin_02 | 無 |
| 刪除某個topic的清空策略 | $KAFKA/bin/kafka-configs.sh --bootstrap-server Desktop:9091 --entity-type topics --entity-name timeIntervalJoin_02 --alter --delete-config retention.ms | Invalid config(s): retention.ms 如果出現這個,是因為當前topic已經 復原為默認的全局清空策略 |
| 通過設置保留時間 來清除某個topic中的數據 (類似mysql中的truncate) | $KAFKA/bin/kafka-configs.sh --bootstrap-server Desktop:9091 --entity-type topics --alter --add-config retention.ms=1 --entity-name timeIntervalJoin_01 ? 日常工作本命令優先使用 | 策略設置后,會覆蓋server.properties中的 全局清空策略log.retention.hours設置的值 ? 沒有通過該命令設置策略的topic會默認采用全局清空策略 ? |
?timeIntervalJoin_02是具體topic
?
?
②基于日志大小
(暫時略過)
③基于日志起始偏移量
(暫時略過)
?
Reference:
[1]如何徹底刪除Kafka中的topic (marked for deletion)
[2]Kafka日志清理之Log Deletion
[3]Log Cleanup Policies (Strategies)?—?Log Compaction And Retention
[4]kafka刪除topic數據
總結
以上是生活随笔為你收集整理的kafka彻底删除topic(cleanup policy)、清除特定topic数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS 13.3 小技巧:如何关闭表情符
- 下一篇: Sql Server级联操作