当 Kafka 分区不可用且 leader 副本被损坏时,如何尽量减少数据的丢失?
3 月,跳不动了?>>> 经过上次 Kafka 日志集群某节点重启失败导致某个主题分区不可用的事故之后,这篇文章专门对分区不可用进行故障重现,并给出我的一些骚操作来尽量减少数据的丢失。 故障重现 下面我用一个例子重现现分区不可用且 leader 副本被损坏的例子: 使用 unclean.leader.election.enable = false 参数启动 broker0; 使用 unclean.leader.election.enable = false 参数启动 broker1; 创建 topic-1,partition=1,replica-factor=2; 将消息写入 topic-1; 此时,两个 broker 上的副本都处于 ISR 中,broker0 的副本为 leader 副本; 停止 broker1,此时 topic-1 的 leader 依然时 broker0 的副本,而 broker1 的副本从 ISR 中剔除; 停止 broker0,并且删除 broker0 上的日志数据 ; 重启 broker1,topic-1 尝试连接 leader 副本,但此时 broker0 已经停止运行,此时分区处于不可用状态,无法写入消息; 恢复 broker0,broker0 上的副本恢复 leader 职位, 此时 broker1 尝试加入 ISR,但此时由于 leader