下面以 Ubuntu 上常见的 Kafka 部署方式(二进制包,非 Docker) 为例,说明 Kafka 升级步骤。Kafka 升级最重要的是 兼容性 和 顺序(先 Broker,后 Client)。
cd /opt/kafka
./bin/kafka-topics.sh --version
# 或
cat release
不同版本跨度升级策略不同:
官方文档:
https://kafka.apache.org/documentation/#upgrade
假设 Kafka 安装在
/opt/kafka,使用 systemd 管理
cp -r /opt/kafka /opt/kafka-backup
如有重要数据:
cp -r /var/lib/kafka /var/lib/kafka-backup
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 -C /opt
cp /opt/kafka/config/server.properties \
/opt/kafka_2.13-3.6.1/config/
如还有:
producer.propertiesconsumer.propertieszookeeper.properties一并复制
sudo systemctl stop kafka
mv /opt/kafka /opt/kafka-old
ln -s /opt/kafka_2.13-3.6.1 /opt/kafka
编辑 server.properties:
inter.broker.protocol.version=CURRENT_VERSION
log.message.format.version=CURRENT_VERSION
例如从 2.8 升级:
inter.broker.protocol.version=2.8
log.message.format.version=2.8
升级完成并稳定后再改成新版本
sudo systemctl start kafka
查看日志:
tail -f /opt/kafka/logs/server.log
对每一台 Broker 重复 停止 → 升级 → 启动
inter.broker.protocol.version=3.6
log.message.format.version=3.6
重启 Kafka:
sudo systemctl restart kafka
| 场景 | 建议 |
|---|---|
| 仍使用 ZooKeeper | 可继续 |
| 想用 KRaft | 新建集群迁移,不原地升级 |
docker pull confluentinc/cp-kafka:新版本
修改 docker-compose.yml 后:
docker-compose down
docker-compose up -d
❌ 直接跨多个大版本
❌ 忘记改 inter.broker.protocol.version
❌ 客户端未升级导致兼容问题
❌ 未做备份
如果你能提供:
我可以给你 精确到命令的升级方案。