在 Ubuntu 上升级 Kafka 版本,一般不会通过 apt 直接升级(官方 Kafka 通常不走 apt 源),而是手动替换二进制包。下面给你一套安全、常用的升级步骤,适用于大多数生产/测试环境。
# 进入 kafka 目录
cd /opt/kafka
cat release-notes.md | head
# 或
bin/kafka-topics.sh --version
确认以下重要路径(不要删):
config/server.properties/data/kafka-logsconfig/zookeeper.propertiescp -r /opt/kafka /opt/kafka_backup
cp config/server.properties /opt/server.properties.bak
wget https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz
tar -xzf kafka_2.13-3.7.0.tgz
bin/kafka-server-stop.sh
# 如果使用 systemd
sudo systemctl stop kafka
mv /opt/kafka /opt/kafka_old
mv kafka_2.13-3.7.0 /opt/kafka
cp /opt/kafka_old/config/server.properties /opt/kafka/config/
⚠️ 注意:
diff /opt/kafka_old/config/server.properties /opt/kafka/config/server.properties
如果是跨大版本升级(如 2.x → 3.x):
在 server.properties 中:
inter.broker.protocol.version=CURRENT_VERSION
log.message.format.version=CURRENT_VERSION
例如从 2.8 升级到 3.7:
inter.broker.protocol.version=2.8
bin/kafka-server-start.sh -daemon config/server.properties
inter.broker.protocol.version=3.7
log.message.format.version=3.7
重启 Kafka。
如果你是用 systemd 管理:
sudo systemctl stop kafka
# 替换目录后
sudo systemctl start kafka
sudo systemctl status kafka
示例 service:
[Unit]
Description=Apache Kafka
After=network.target
[Service]
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
bin/kafka-broker-api-versions.sh --bootstrap-server localhost:9092
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
✅ Kafka 支持滚动升级(多 broker)
✅ 不要同时升级 Kafka + Zookeeper + OS
❌ 不要直接 apt upgrade(Ubuntu 自带 kafka 很旧)
❌ 不要删除 kafka-logs
如果你能告诉我:
我可以给你更精确的升级方案。