首页 > 解决方案 > 如果删除 Kafka 快照文件会发生什么?

问题描述

问题很简单。如果删除 Kafka 日志目录中的 Kafka 快照文件会发生什么。卡夫卡能开始吗?它是否必须对某些东西进行缓慢的重建?

额外的问题是快照文件究竟包含什么?

这个问题的背景

由于所有代理同时停机并导致代理损坏,我有一个集群已经关闭了几天。现在,当它启动时,它会静默数小时(在日志文件中没有新消息)。通过检查 JVM,我发现所有(非常有限的)cpu 使用都花在了loadproducersfromlog函数/方法中。通过阅读上面的评论,建议这是从快照中恢复生产者状态的尝试。我不在乎这个。我只想让我的经纪人回来,所以我想我是否可以简单地删除快照以让 Kafka 重新启动。

标签: apache-kafkarecovery

解决方案


如果快照文件被删除,在启动方法 log.loadSegmentFiles() 期间,即使存在日志和索引文件,也必须读取分区中的所有消息以重新创建快照。这将增加加载分区的时间。

快照文件的内容请参考ProducerStateManager中的writeSnapshot()。 https://github.com/apache/kafka/blob/980b725bb09ee42469534bf50d01118ce650880a/core/src/main/scala/kafka/log/ProducerStateManager.scala


推荐阅读