在 Debian 系统上升级 Kafka,通常 不建议用 apt,而是采用 官方二进制包 + 手动升级 的方式。下面给你一套 生产环境稳妥升级流程,适用于从旧版本升级到新版本(如 2.x → 3.x)。
kafka-server-start.sh --version
# 或
ls /opt/kafka*
cp -r /opt/kafka /opt/kafka_bak_$(date +%F)
cp -r /var/lib/kafka /var/lib/kafka_bak_$(date +%F)
| Kafka 版本 | 推荐 Java |
|---|---|
| 2.8+ | Java 11 / 17 |
| 3.x | Java 11 / 17 |
查看 Java:
java -version
cd /opt
wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz
示例为 Kafka 3.6.1(Scala 2.13)
tar -xzf kafka_2.13-3.6.1.tgz
ln -s /opt/kafka_2.13-3.6.1 /opt/kafka_new
适用于 多 Broker 集群
拷贝旧配置:
cp /opt/kafka/config/server.properties /opt/kafka_new/config/
重点检查:
broker.id
log.dirs
zookeeper.connect
listeners
⚠️ 不要直接覆盖 log.dirs
systemctl stop kafka
# 或
pkill -f kafka
/opt/kafka_new/bin/kafka-server-start.sh \
-daemon /opt/kafka_new/config/server.properties
tail -f /opt/kafka_new/logs/server.log
确认:
当 所有 Broker 都升级完成后再执行
/opt/kafka_new/bin/kafka-configs.sh \
--bootstrap-server localhost:9092 \
--entity-type brokers \
--entity-default \
--alter \
--add-config inter.broker.protocol.version=3.6
(版本号对应 Kafka 版本)
重复步骤 2–4
/opt/kafka_new/bin/kafka-broker-api-versions.sh \
--bootstrap-server localhost:9092
kafka-console-producer.sh \
--bootstrap-server localhost:9092 \
--topic test
kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic test --from-beginning
UnsupportedVersionException✅ 说明 protocol 版本未升级
✅ Kafka 3.x 需要 Java 11+
✅ 一定确认指向旧数据目录
systemctl stop kafka
mv /opt/kafka /opt/kafka_old
ln -s /opt/kafka_new /opt/kafka
systemctl start kafka
[Unit]
Description=Apache Kafka
After=network.target
[Service]
Type=simple
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
✅ Debian 下 Kafka 不使用 apt
✅ 推荐 滚动升级
✅ 一定要 备份配置 & 数据
✅ 升级完成后 调整 protocol 版本
如果你愿意,可以告诉我:
我可以给你 定制化升级方案 ✅