【问题标题】:recovering deleted partition from Kafka从 Kafka 恢复已删除的分区
【发布时间】:2021-07-30 16:23:38
【问题描述】:

我已经开始学习 Kafka 并且有一个幼稚的问题。让我们有一个场景,我们有 5 个节点集群,一个主题有一个分区和 3 个副本。 Broker-0 有leader 分区,Broker-1 有一个follower 分区,Broker-2 有一个follower 分区。现在,如果包含追随者分区的代理之一崩溃,我们只剩下一个领导者和一个追随者。我的问题是,如果我们在集群中添加另一个节点,如何恢复失败的跟随分区。一旦我们向集群添加了新的代理,有没有办法取回从属分区。

【问题讨论】:

    标签: apache-kafka


    【解决方案1】:

    由于您的集群是 5 节点集群,一旦包含您的主题的追随者分区的节点之一崩溃,其余 2 个节点都不会成为新的追随者,因为在 Kafka 中不会自动创建追随者。

    例如TopicA Partition1 - (node1 - leader , node2 - follower , node3 - follower)

    假设 node2 崩溃,在这种情况下,您的 TopicA Partition1 将保持在复制状态,除非具有相同节点 ID 的节点启动或使用分区重新分配工具手动重新分配分区。

    【讨论】:

    • 如果分区是欠复制分区,是否意味着生产者将无法再发送消息?
    • @zil 如果您禁用了不干净的领导者选举,则无法生成复制不足的分区,因为它们不能成为领导者。这个答案也不正确,因为新(或旧)节点不会自动接管副本
    • @OneCricketeer - 你是对的,我已经更新了细节。在添加和删除节点的情况下,不会发生分区重新分配。它只是移动领导者,以防领导者副本崩溃。谢谢!
    【解决方案2】:

    为了让新节点或旧节点接管丢失的副本,您需要运行 kafka-reassign-partitions tool

    分区重新分配工具可[...]用于选择性地将分区的副本移动到特定的代理集

    或者您可以简单地自行恢复发生故障的代理,而不是“扩展”集群(假设您为新节点提供了自己唯一的代理 ID)

    【讨论】:

      猜你喜欢
      • 2021-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-11
      • 1970-01-01
      • 1970-01-01
      • 2014-07-30
      • 1970-01-01
      相关资源
      最近更新 更多