Kafka文档显示的一种方法是通过 kafka.tools.MirrorMaker 来实现这一目的。但是,我需要将一个主题(例如 test ,包含1个分区)(其内容和元数据)从生产环境复制到不存在连接的开发环境。我可以在环境之间进行简单的文件传输。 我的问题:如果我将 * .log 和 .index 从 test-0 文件夹移动到目标Kafka群集,那还不错?或者我还需要做更多的事情,比如我需要移动的元数据和ZooKeeper相关数据?
答案 0 :(得分:3)
仅仅复制日志和索引是不够的 - kafka在zookeeper中存储偏移量和主题元数据。 MirrorMaker实际上是一个非常简单的工具,它将消费者生成源主题以及生成器到目标主题,并运行直到所有消费者都消耗源队列。您无法找到更简单的迁移主题的过程。
答案 1 :(得分:1)
您可以使用库存的kafkacat。
将主题写入文件:
kafkacat -b broker:9092 -e -K, -t my-topic > my-topic.txt
将文件写回主题:
kafkacat -b broker:9092 -K, -t my-topic -l my-topic.txt
很遗憾,您必须从this branch构建自己的kafkacat,这是尚未合并的PR。
将带有二进制值的主题写入文件:
kafkacat -b broker:9092 -e -Svalue=base64 -K, -t my-topic > my-topic.txt
将文件写回主题:
kafkacat -b broker:9092 -Svalue=base64 -K, -t my-topic -l my-topic.txt
答案 2 :(得分:0)
在您的情况下对我有用的是以下一系列操作:
retention.ms
配置,以便Kafka不会删除您可能过时的段)。kafka-logs-<hash>/<your-topic>-0
)。如果您的Kafka是从docker-compose运行的,那么它也可以工作(当然,您必须设置适当的卷)。