在 Debian 系统上升级 Kafka,通常不是通过 apt 直接升级(Debian 官方源里的 Kafka 版本通常很旧),而是手动下载新版本并替换。下面按稳妥、可回滚的方式说明。
kafka-server-start.sh --version
# 或
cat /opt/kafka/li*/kafka_*/VERSION
常见路径:
/opt/kafka/usr/local/kafka/srv/kafkacp -r /opt/kafka /opt/kafka_backup_$(date +%F)
systemctl stop kafka
systemctl stop zookeeper
或(如果是脚本启动):
/opt/kafka/bin/kafka-server-stop.sh
/opt/kafka/bin/zookeeper-stop.sh
以 3.6.1 为例:
cd /tmp
wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz
tar -xzf kafka_2.13-3.6.1.tgz
mv /opt/kafka /opt/kafka_old
mv /tmp/kafka_2.13-3.6.1 /opt/kafka
然后恢复配置:
cp /opt/kafka_old/config/server.properties /opt/kafka/config/
cp /opt/kafka_old/config/zookeeper.properties /opt/kafka/config/
不建议新手使用。
不要动 log.dirs 指定的数据目录!
检查:
log.dirs=/var/lib/kafka-logs
确保新 Kafka 仍指向旧数据目录。
server.properties:
inter.broker.protocol.version=CURRENT_VERSION
例如从 2.8 → 3.6:
inter.broker.protocol.version=2.8
systemctl start kafka
inter.broker.protocol.version=3.6
再次重启。
systemctl status kafka
kafka-topics.sh --list --bootstrap-server localhost:9092
Kafka 3.x 需要 Java 11+
java -version
Kafka 3.x 支持 KRaft 模式(无 ZK),但是升级不能自动转,需新建集群。
停服务 → 备份 → 下新版 → 替换 → 恢复配置 → 保留数据目录 → 升级协议 → 重启
如果你愿意,可以告诉我:
我可以给你精确到命令的升级方案。