升级 Debian 上的 Kafka 通常分为 “保留数据升级” 和 “全新安装升级” 两种场景。下面我按 生产环境最稳妥的方式 给你一个完整流程(适用于 Kafka 2.x → 3.x,或 3.x 小版本升级)。
kafka-server-start.sh --version
或
ls /opt/kafka
cat /etc/debian_version
cp -r /opt/kafka /opt/kafka.bak
cp -r /var/lib/kafka /var/lib/kafka.bak
cp /etc/kafka/server.properties /etc/kafka/server.properties.bak
grep log.dirs /etc/kafka/server.properties
| 场景 | 推荐方式 |
|---|---|
| 单机 / 测试 | 停止 → 替换 → 启动 |
| 集群 / 生产 | 滚动升级(逐个 broker) |
systemctl stop kafka
# 或
/opt/kafka/bin/kafka-server-stop.sh
官网:https://kafka.apache.org/downloads
cd /opt
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
ln -s /opt/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/ # 如果用 ZK
systemctl start kafka
kafka-features.sh --bootstrap-server localhost:9092 describe
确保:
kafka-configs.sh \
--bootstrap-server localhost:9092 \
--entity-type brokers \
--entity-default \
--alter \
--add-config auto.leader.rebalance.enable=false
systemctl stop kafka
systemctl start kafka
kafka-broker-api-versions.sh --bootstrap-server localhost:9092
如果你从 2.x → 3.x 并想启用 KRaft(无 ZooKeeper):
⚠️ 不能原地直接切换 必须:
kafka-server-start.sh --version
kafka-broker-api-versions.sh --bootstrap-server localhost:9092
kafka-topics.sh --bootstrap-server localhost:9092 --list
journalctl -u kafka -xe
常见原因:
log.dirs 权限问题| Kafka 版本 | Java |
|---|---|
| 2.8 及以下 | Java 8 |
| 3.x | Java 11 / 17 |
java -version
✅ 备份
✅ 停服务
✅ 替换 Kafka 目录
✅ 复用配置
✅ 启动验证
如果你愿意,可以告诉我:
我可以给你 精确到命令的升级方案 ✅