首页/数据/数据工程与 ETL 速查/Broker 磁盘满应急处理
Kafka64 条

Broker 磁盘满应急处理

磁盘写满是 Kafka 高危故障:会导致副本离线甚至分区不可写。处理顺序是止血(限流与缩保留)、清空间(删过期段、迁分区)、再扩容与复盘。

应急命令

应急命令
# 1) 看是哪块盘、哪个主题在涨
df -h /data/kafka
du -sh /data/kafka/* | sort -h | tail -5
kafka-log-dirs.sh --bootstrap-server localhost:9092 --describe | head

# 2) 临时缩短保留期(对已有主题)
kafka-configs.sh --bootstrap-server localhost:9092 \
  --entity-type topics --entity-name orders \
  --alter --add-config retention.ms=86400000

# 3) 迁移大分区到空闲盘(reassign + log_dirs)
kafka-reassign-partitions.sh --bootstrap-server localhost:9092 \
  --reassignment-json-file move-to-disk2.json \
  --throttle 50000000 --execute
保留时间缩短后删除要等段滚动与检查周期(log.retention.check.interval.ms 默认 5 分钟),不要反复重启 Broker。

易错点

  • 删除当前活动段不会发生,正在写的段始终保留,要配合段滚动评估空间释放
  • 磁盘满期间 broker 可能反复重启,先扩容或清理再恢复,避免元数据抖动

数据来源与参考

  • Apache Kafka 官方文档:Log Retention 与 Cluster Expansion
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌