如果删除kafka文件会怎样?

时间:2019-05-21 08:19:04

标签: apache-kafka

这绝对不是做到这一点的方法,它可能应该由清理策略处理,但这不是重点。假设log.dirs中的文件已被删除,会产生什么影响?

经纪人会崩溃吗?

重新启动服务后,偏移量将从0开始吗?

是否有必要做任何修复?

2 个答案:

答案 0 :(得分:1)

如果您从log.dirs中删除文件,数据将被删除,但是主题仍然存在于zookeeper元数据中。经纪人不会崩溃。重新启动代理后,它将作为空白主题读取主题,您可以生成新数据。

如果您还从Zookeeper元数据中删除主题,它将从代理中删除主题。

要检查偏移量,可以使用以下命令:

// Before deleting the log.dirs directory for topic 'test1'
kafka_2.12-1.1.1 % bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092 --topic test1
test1:0:6

// After deleting the directory and restarting the broker
kafka_2.12-1.1.1 % bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092 --topic test1
test1:0:0

答案 1 :(得分:1)

实际上,这将取决于您的集群中有多少个代理,以及您同时从中删除了几个代理。幸运的是,如果您从3代理群集中的一个代理中删除文件,并且为主题定义了3的复制因子,则不会丢失任何内容,并且将在删除它们的代理上重新创建文件。