kafka使用kafka-topics.sh和kafka-configs.sh工具修改缩短topic数据保留时长

- 默认分类

本篇介绍kafka异常写入大量数据导致磁盘快满时,确认数据无效情况下可以通过修改缩短topic数据保留时长使得数据过期空间快速释放出来。


kafka 磁盘告警

KAFKA 磁盘告警磁盘使用率超过 90% ,登上去查看监控发现之前都是很稳定的,从8号的下午6点突然开始上去的。
2023-12-05T14:48:09.png

查看 topic 确认有大量未消费的消息。
2023-12-05T14:49:46.png

和开发确认确实是8号下午有调整过业务,之前写入在 0.2 MBytes/s ,现在变成了 2 MBytes/s ,增加了 10 倍。但是这个业务的调整不是为了用在今天告警的这个 KAFKA 实例上的,只是受影响了。里面的数据可以不要。

查看topic当前保留时长

先查看当前 topic 的数据保留时长,可以看到为 3600000 毫秒,即 3600秒,即1小时。
需要注意的是,只有在创建 topic 的时候指定的数据保留时长才会显示这个配置。如果没有指定则只会显示一个 Configs: 。

[me@imzcy bin]$ ./kafka-topics.sh --zookeeper 192.168.16.17:2181 --topic imzcy --describe   
Topic:imzcy     PartitionCount:2        ReplicationFactor:1     Configs:retention.ms=3600000
        Topic: imzcy    Partition: 0    Leader: 0       Replicas: 0     Isr: 0
        Topic: imzcy    Partition: 1    Leader: 0       Replicas: 0     Isr: 0
[me@imzcy bin]$ 


使用 kafka-topics.sh 工具修改保留时长

不推荐使用 kafka-topics.sh 脚本来修改主题配置,可能会在以后的版本中删除。建议使用 kafka-configs.sh 来实现此功能。

[me@imzcy bin]$ ./kafka-topics.sh --zookeeper 192.168.16.17:2181 --alter --topic imzcy --config retention.ms=600000
WARNING: Altering topic configuration from this script has been deprecated and may be removed in future releases.
         Going forward, please use kafka-configs.sh for this functionality
Updated config for topic "imzcy".
[me@imzcy bin]$ 

修改完后我们再次查看保留时长,可以看到已经变为600秒了。

[me@imzcy bin]$ ./kafka-topics.sh --zookeeper 192.168.16.17:2181 --topic imzcy --describe                          
Topic:imzcy     PartitionCount:2        ReplicationFactor:1     Configs:retention.ms=600000
        Topic: imzcy    Partition: 0    Leader: 0       Replicas: 0     Isr: 0
        Topic: imzcy    Partition: 1    Leader: 0       Replicas: 0     Isr: 0
[me@imzcy bin]$ 


使用 kafka-configs.sh 工具修改保留时长

使用 kafka-configs.sh 工具修改保留时长就不会有上面的警告了。

[me@imzcy bin]$ ./kafka-configs.sh --zookeeper 192.168.16.17:2181 --alter --entity-type topics --entity-name imzcy --add-config retention.ms=60000
Completed Updating config for entity: topic 'imzcy'.
[me@imzcy bin]$ 

再次查看保留时长已经修改为 60 秒了。

[me@imzcy bin]$ ./kafka-topics.sh --zookeeper 192.168.16.17:2181 --topic imzcy --describe
Topic:imzcy     PartitionCount:2        ReplicationFactor:1     Configs:retention.ms=60000
        Topic: imzcy    Partition: 0    Leader: 0       Replicas: 0     Isr: 0
        Topic: imzcy    Partition: 1    Leader: 0       Replicas: 0     Isr: 0
[me@imzcy bin]$