问题很简单。如果删除kafka log dir中的kafka快照文件,会发生什么情况。Kafka能开始吗?它需要做一个缓慢的重建吗?
附加问题快照文件究竟包含什么?
这个问题的背景
我有一个集群,由于所有代理上同时宕机而导致代理损坏,已经宕机了几天。现在,当它启动时,它会沉默数小时(在日志文件中没有新消息)。通过检查jvm,我发现所有(非常有限的)cpu使用都花费在loadproducersfromlog函数/方法中。通过阅读上面的注解,可以认为这是试图从快照中恢复生产者状态。我不在乎这个。我只想我的经纪人回来,所以我想如果我可以简单地删除快照,让Kafka重新开始。
2条答案
按热度按时间xlpyo6sf1#
参数
log.dir
定义主题(即数据)的存储位置(log.dirs属性的补充)。快照基本上会在某个时间点为您提供数据的副本。
在你这样的情况下,你不必等待回应,你可以:
更改log.dirs路径,重新启动所有程序并查看运行情况;
备份快照,将它们保存在不同的位置,将它们从上一个快照中全部删除,然后查看运行情况。
在那之后,你就可以开始Kafka了。
0s0u357o2#
如果在启动方法log.loadsegmentfiles()期间删除了快照文件,则即使存在日志和索引文件,也必须读取分区中的所有消息才能重新创建快照。这将增加加载分区的时间。
有关快照文件的内容,请参阅producerstatemanager中的writesnapshot()。https://github.com/apache/kafka/blob/980b725bb09ee42469534bf50d01118ce650880a/core/src/main/scala/kafka/log/producerstatemanager.scala