当前位置: 首页 > 知识库问答 >
问题:

将Kafka Topic迁移到新集群(以及对德鲁伊特的影响)

陈松
2023-03-14

我正在从Kafka的话题中摄取数据到德鲁伊。现在,我想将我的Kafka Topic迁移到新的KafkaCluster。在不重复数据和不停机的情况下,有哪些可能的方法可以做到这一点
我考虑了以下将Topic迁移到新Kafka集群的可能方法。

  • 手动迁移:
    • 在新的Kafka集群中创建具有相同配置的主题。
    • 停止在Kafka集群中推送数据。
    • 开始在新集群中推送数据。
    • 停止从旧集群消耗。
    • 从新集群开始消费。
    • 在新的Kafka集群中创建具有相同配置的主题。
    • 开始在两个Kafka集群中生成消息。
    • 更改德鲁伊特中的Kafka主题配置。
    • 重置德鲁伊特的Kafka主题偏移。
    • 从新集群开始消费。
    • 迁移成功后,在旧的Kafka集群中停止生产。
    • MM2 在新集群中创建了Kafka的主题。
    • 开始复制两个群集中的数据。
    • 将生产者和使用者迁移到新的 Kafka 群集。
    • 这种方法的问题:
      1. 德鲁伊管理Kafka主题在其元数据中的偏移量。
      2. MM2 将在新集群中创建两个同名(带前缀)的主题。
      3. 德鲁伊是否支持使用正则html" target="_blank">表达式的主题名称?

    注意:德鲁伊特在其元数据中管理Kafka主题偏移。
    德鲁伊特版本:0.22.1
    旧Kafka集群版本:2.0

共有2个答案

从光启
2023-03-14

选项 1 和 2 将有停机时间,您将丢失现有主题中的所有数据。

选项2不能保证你不会丢失数据或产生重复,因为你试图发送消息到多个集群在一起。

如果不至少尝试MM2,就无法将德鲁伊/Kafka偏移数据迁移到新集群。你说你可以在选项2中重置偏移量,那么为什么不对选项3做同样的事情呢?我没有使用过德鲁伊,但它应该能够支持从多个主题消费,无论是否有模式。使用选项 3,在对迁移过程满意之前,无需修改任何创建者代码。

谷梁裕
2023-03-14

也许对你的第一条稍加修改:

  1. 开始发布到新群集
  2. 等待当前主管了解旧主题中的所有数据
  3. 暂停主管职务。这将强制所有任务编写和发布段。等待此主管完成所有任务。这就是“停机”的开始。当我们切换到新集群时,所有当前接收的数据仍然可以查询。新数据正在新集群中积累,但没有被Druid吸收
  4. 当前数据源的所有偏移信息都存储在元数据存储中。使用删除这些记录

从druid_dataSource中删除,其中dataSource={name}

终止当前主管。

提交包含新主题和新服务器信息的新规范。

 类似资料:
  • 问题内容: 将Express.js从版本2更新到了版本3,以下调用中断了,因为它不再存在于V3中: 有一个迁移指南说: (使用中间件+ res.locals) 但是我很困惑如何做到这一点。是否有一个更具体的示例说明如何进行迁移? 相关的SO post: Node.js Express3.0 问题答案: 我有同样的问题 session.user ,只是通过了解该app.use功能必须是固定的, 在

  • 我试图把Flink和德鲁伊联系起来。 然而,我不知道如何正确地做到这一点。 在此Flink留档中,"bootstrap.servers"设置为"localhost:9092"。 这是否意味着我可以使用Apache Kafka摄取直接连接,因为下面设置了示例主管规范? 除了Flink,我还需要管理Kafka吗?或者我应该做其他事情来连接Flink和德鲁伊?

  • 我遇到了和这个人一样的问题: X-Drupal缓存Drupal 7网站总是打MISS,找不到出路。 我正在运行Drupal7-Pressflow 和 清漆4.0 当我卷曲时,我得到这个结果: 这是上光油。com告诉我:“你应该得到一个金星,给你:金星徽章”。。。。 虽然链接Drupal组织线程中建议的“Varnish Indicator Chrome Extension”告诉我Varnish mi

  • 我试图将cassandra集群从专用的DC迁移到EC2。作为开始,我拍了一张桌子的快照。为了加载数据,我在这个过程中尝试了sstableloader,但是我无法从我的cassandra节点指定主机(我正在尝试从我的cassandra节点运行sstable loader)。任何指导都会很有帮助。我用的是cassandra 1.0.1。

  • 我正在使用OpenJDK 12中的Nashorn JS引擎。纳肖恩似乎遭到了反对。我正在寻找可用的替代方案。我找到了GraalVM,但我不确定这是不是最好的。如何从Java执行GraalVM JavaScript?你有什么例子吗? Nashorn用的是Java: 在Nashorn中,我创建了一个WrappedMongoDatabase,它扩展了AbstractJSObject。在那里,我添加了一些

  • 我已经向migrations.xml添加了新的变更集,但是当我运行时,它不会应用新的变更集,只是输出如下: 我有两个变更集,只应用了第一个变更集。例如: 另外,我只看到数据库更改日志表下的第一个更改集条目,这很奇怪。 如何使其应用我的新变更集?