首页 > 解决方案 > Kafka - 如果分区丢失如何恢复?

问题描述

我在一个集群中有 4 个 Kafka 节点,一个主题分为 40 个分区和副本数 2。Kafka 版本是 2.3.1。

如何从两个 Kafka 节点同时死亡、无法重新启动并且 Kafka 日志丢失的情况中恢复?

我确定我会丢失一些数据,因为某些分区丢失(某些分区仅在死节点上具有副本)。

我尝试添加两个新的 Kafka 节点并将分区重新分配给所有 4 个可用的 Kafka 节点。最后,丢失的分区不会重新分配给两个新的 Kafka 节点。客户端无法发布到丢失分区的数据。

标签: apache-kafka

解决方案


只有当这些分区仍然至少有一个以前同步的活动副本时,Kafka 才会自行恢复丢失的分区。否则unclean.leader.election必须在代理上启用以将领导者移动到不同步的副本

由于分区只有 2 个副本并且您丢失了 2 个节点,因此您可能会丢失一些分区。

您可以将 2 个副本替换为 4 个副本以提高可靠性

添加的两个节点应该与之前的节点具有相同的 id 才能提取副本。


推荐阅读