如果删除Kafka快照文件会怎样?

时间:2018-07-20 13:30:15

标签: apache-kafka recovery

问题很简单。如果删除Kafka日志目录中的Kafka快照文件,将会发生什么。 Kafka可以开始吗?它会不得不缓慢地重建某些东西吗?

奖金问题,快照文件到底包含什么?

此问题的背景

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

参数---title-----genre---production---year---quarter animation1 genre production 2018 4 animation2 genre production 2018 3 animation3 genre production 2018 2 animation4 genre production 2018 1 定义主题(即数据)的存储位置(log.dirs属性的补充)。

快照基本上可以在某个时间点为您提供数据副本。

在像您这样的情况下,您不必等待响应,而是可以:

  • 更改log.dirs路径,重新启动一切,然后查看其进展;

  • 备份快照,将其保存在其他位置,从上一个快照中删除所有快照,然后查看其进展情况。

之后,您将能够启动Kafka。