Apache kafka 从.log文件恢复Kafka数据
我有一个最近崩溃的单节点卡夫卡。我能够从Apache kafka 从.log文件恢复Kafka数据,apache-kafka,Apache Kafka,我有一个最近崩溃的单节点卡夫卡。我能够从/tmp/kafka logs/mytopic-0/中修复.log和.index文件,并且我已将这些文件移动到另一台服务器并在其上安装了kafka 有没有办法让新的kafka服务器为这些.log文件中包含的数据提供服务 更新: 我可能没有用正确的方法做这件事,但我已经厌倦了: 在新kafka服务器上创建了名为recovermytopic的主题 卡夫卡 将所有.log文件移动到/tmp/kafka logs/recovermytopic-0 卡夫卡 kafk
/tmp/kafka logs/mytopic-0/
中修复.log和.index文件,并且我已将这些文件移动到另一台服务器并在其上安装了kafka
有没有办法让新的kafka服务器为这些.log文件中包含的数据提供服务
更新:
我可能没有用正确的方法做这件事,但我已经厌倦了:
/tmp/kafka logs/recovermytopic-0
WARN Partition [recovermytopic,0] on broker 0: No checkpointed highwatermark is found for partition [recovermytopic,0] (kafka.cluster.Partition)
INFO [ReplicaFetcherManager on broker 0] Removed fetcher for partitions [recovermytopic,0] (kafka.server.ReplicaFetcherManager)
INFO Closing socket connection to /127.0.0.1. (kafka.network.Processor)
没有正在使用的邮件 Kafka附带了一个
DumpLogSegments
工具,该工具将从Kafka数据日志文件中提取消息(以及偏移量等):
$KAFKA_HOME/bin/kafka-run-class.sh kafka.tools.DumpLogSegments --deep-iteration --print-data-log --files mytopic-0/00000000000000132285.log > 00000000000000132285_messages.out
根据您使用的卡夫卡版本的不同,输出会有所不同,但使用sed
或其他工具提取消息键和值应该很容易。然后,可以使用Kafka console producer.sh
工具或编程方式将消息重播到Kafka集群中
虽然这种方法有点迂回,但我认为它比试图让代理从其他地方获取的数据日志文件开始更透明/可靠。我已经用从0.9到2.4的各种版本的Kafka测试了
DumpLogSegments
工具。requeue是什么意思?@nautilus让Kafka的新实例服务于日志文件中的消息。重新措辞问题,谢谢!尝试创建具有相同名称和相同分区数的主题。可以使用OffsetResetStrategy重置从一开始就使用信息的使用者。EARLIEST@nautilus谢谢,刚刚尝试过,在消费者方面,我得到了以下错误:未能找到集合的leader([mytopic,0])
创建消费者时会发生这种情况吗?你用的是什么版本?经纪人和动物园管理员是否已正确启动?