正如Kafka文档所显示的那样,一种方法是通过kafka.tools.mirrormaker来实现这一点。但是,我需要将一个主题(比如1个分区的测试)(它的内容和元数据)从一个生产环境复制到一个没有连接的开发环境中。不过,我可以在不同环境之间进行简单的文件传输。我的问题是:如果我将*.log和.index从文件夹test-0移动到目标kafka集群,这就足够了吗?或者还有更多我需要做的事情,比如元数据和zookeeper相关的数据,我也需要移动?
正如Kafka文档所显示的那样,一种方法是通过kafka.tools.mirrormaker来实现这一点。但是,我需要将一个主题(比如1个分区的测试)(它的内容和元数据)从一个生产环境复制到一个没有连接的开发环境中。不过,我可以在不同环境之间进行简单的文件传输。我的问题是:如果我将*.log和.index从文件夹test-0移动到目标kafka集群,这就足够了吗?或者还有更多我需要做的事情,比如元数据和zookeeper相关的数据,我也需要移动?
3条答案
按热度按时间yqlxgs2m1#
仅仅复制日志和索引是不够的-kafka在zookeeper中存储偏移量和主题元数据。mirrormaker实际上是一个非常简单的工具,它将使用者派生到源主题,将生产者派生到目标主题,并一直运行到所有使用者都使用源队列。找不到更简单的迁移主题的过程。
zaqlnxep2#
在您的场景中,对我有效的是以下一系列操作:
在kafka中创建主题,稍后在其中插入文件(带有1个分区和1个副本以及适当的
retention.ms
配置,这样Kafka就不会删除你可能已经过时的片段)。停止你的Kafka和Zookeeper。
在步骤1中找到您在kafka中创建的0分区的文件的位置(类似于
kafka-logs-<hash>/<your-topic>-0
).在此文件夹中,删除现有文件并将文件复制到其中。
开始Kafka和Zookeeper。
如果您的Kafka是从docker compose运行的,这也可以使用(当然,您必须设置一个适当的卷)。
j2datikz3#
使用Kafka卡特
除非你的数据是二进制的,
你可以用一个Kafka卡特股票。
将主题写入文件:
将文件写回主题:
如果你的数据是二进制的,
不幸的是,你必须建立自己的Kafka从这个分支,这是一个尚未合并的公关。
将具有二进制值的主题写入文件:
将文件写回主题: