Kafka 一个 Broker 宕机后发生 Leader 切换,怎样判断这次切换有没有丢数据风险?
我的判断
Broker 宕机后是否有丢数据风险,要看新 Leader 是否来自 ISR、生产确认配置,以及故障前 ISR 是否已经收缩。
我会查 controller/metadata 日志和 Topic 分区状态,确认旧 Leader、新 Leader、ISR 列表以及选举时间。若新 Leader 是 ISR 成员,且生产者使用 acks=all、Broker 设置合理的 min.insync.replicas,已确认消息的风险较低。
如果开启了 unclean leader election,在所有 ISR 都不可用时可能让落后的副本当 Leader,换可用性但会截断未同步数据。核心订单 Topic 通常关闭它,宁可分区暂时不可用。
还会核对生产者当时的成功 offset、Leader epoch 和日志末端,比较新旧副本差异;业务侧用 eventId 对账,不能只凭集群恢复绿色就宣布没丢。
故障后重点修复 ISR 为什么提前缩小:磁盘慢、网络抖动、长 GC 还是副本抓取跟不上。副本数等于 3 但长期只有一个 ISR,并没有三副本的保护能力。