【kafka】保留topic,删除kafka中的数据的方法

背景:topic中如果数据格式有问题,消费时采用消费后自动提交offset的方式,会出现消费端程序一直无法消费而一直报错的情况。
解决办法:将该topic的数据保留时间设置小一点,如10s。
kafka是采用轮训的方式,轮训到这个topic发现10秒前的数据都是删掉。时间由server.properties里面的log.retention.check.interval.ms选项为主

操作过程:

  1. 本地windows版本:(zk为默认的2181端口)
  • 查看名为test的topic 其数据保留时间策略
    kafka-configs.bat --zookeeper localhost:2181 --describe --entity-type topics --entity-name test

  • 修改数据保留时间为1s
    kafka-configs.bat --zookeeper localhost:2181 --entity-type topics --entity-name test --alter --add-config retention.ms=1000

  • 当数据都被清空后,恢复默认的数据保留时间策略
    kafka-configs.bat --zookeeper localhost:2181 --entity-type topics --entity-name test --alter --delete-config retention.ms

  • 检验名为test的topic 其数据保留时间策略
    kafka-configs.bat --zookeeper localhost:2181 --describe --entity-type topics --entity-name test

    按道理是无需重启kafka的,但是修改保留时间的过程中,kafka的启动进程会报错终止,这个时候再启动下kafka就好

  1. linux版本:
  • 修改数据保留时间为1s
    ./kafka-configs.sh --zookeeper zk-1:2181 --entity-type topics --entity-name test --alter --add-config retention.ms=1000
  • 当数据都被清空后,恢复默认的数据保留时间策略
    ./kafka-configs.sh --zookeeper zk-1:2181 --entity-type topics --entity-name test --alter --delete-config retention.ms
  • 检验名为test的topic 其数据保留时间策略
    ./kafka-configs.sh --zookeeper zk-1:2181 --describe --entity-type topics --entity-name test

参考:https://blog.csdn.net/shykevin/article/details/90103364

posted @ 2022-09-28 23:18  xiaoyu_jane  阅读(1178)  评论(0编辑  收藏  举报