kafka遇到的问题
今天启动kafka的时候遇到报错了,问题就是启动失败,截图如下
太多了只截取了一部分,反正是报错
这是因为Kafka 在 Windows 上做 Files.move(.cleaned → .swap)
的时候失败了,报的还是同样的错:
另一个程序正在使用此文件,进程无法访问
然后 Kafka 认为日志目录损坏 → 把整个 E:\tmp\kraft-combined-logs
标记为 failed log dir → broker 自杀退出。
🔍 关键点
-
这不是配置文件(你贴的那堆 config)的问题。
-
不是杀毒软件的问题(已经卸了,后来又装回来了,这是之前安装的一个杀毒软件,我以为有冲突,其实没有冲突,不关别的软件的事儿)。
-
根本原因:
- Windows 文件系统对 rename 操作的限制(文件还被自己线程引用时也会失败),而 Kafka LogCleaner 逻辑是默认会重命名
.cleaned → .swap
。 - Linux 上这没问题,Windows 上就频繁触发。
- Windows 文件系统对 rename 操作的限制(文件还被自己线程引用时也会失败),而 Kafka LogCleaner 逻辑是默认会重命名
✅ 解决办法
方案 :禁用日志清理器(最简单,适合开发环境)
在 config/kraft/server.properties
里加上:
log.cleaner.enable=false
uuid生成
.\bin\windows\kafka-storage.bat random-uuid
然后执行下面的命令,把生成的uuid,替换掉下面的 (包括尖括号一并替换) 的位置。
.\bin\windows\kafka-storage.bat format -t <uuid> -c.\config\kraft\server.properties
.\bin\windows\kafka-server-start.bat .\config\kraft\server.properties
最后就执行成功
这只是目前我本地开发应急用的方法,因为没有实际部署,所以之后有机会部署了出现问题再补充。