温馨提示×

ubuntu kafka如何升级

小樊
42
2026-09-20 21:16:30
栏目: 智能运维

下面以 Ubuntu 上常见的 Kafka 部署方式(二进制包,非 Docker) 为例,说明 Kafka 升级步骤。Kafka 升级最重要的是 兼容性 和 顺序(先 Broker,后 Client)。


一、升级前准备

1. 确认当前版本

cd /opt/kafka
./bin/kafka-topics.sh --version
# 或
cat release

2. 查看官方升级说明(非常重要)

不同版本跨度升级策略不同:

  • 小版本升级(如 2.8 → 2.8.2):可直接升级
  • 跨大版本(如 2.x → 3.x):需注意
    • ZooKeeper → KRaft(3.x 支持但不强制)
    • 协议版本(inter.broker.protocol)
    • 消息格式版本

官方文档:

https://kafka.apache.org/documentation/#upgrade

二、通用升级步骤(滚动升级,推荐)

假设 Kafka 安装在 /opt/kafka,使用 systemd 管理

1. 备份(必做)

cp -r /opt/kafka /opt/kafka-backup

如有重要数据:

cp -r /var/lib/kafka /var/lib/kafka-backup

2. 下载新版本 Kafka

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

3. 复制配置文件

cp /opt/kafka/config/server.properties \
   /opt/kafka_2.13-3.6.1/config/

如还有:

  • producer.properties
  • consumer.properties
  • zookeeper.properties

一并复制


4. 停止旧 Kafka(逐台停止,集群环境)

sudo systemctl stop kafka

5. 切换目录

mv /opt/kafka /opt/kafka-old
ln -s /opt/kafka_2.13-3.6.1 /opt/kafka

6. 修改配置(关键)

编辑 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

升级完成并稳定后再改成新版本


7. 启动 Kafka

sudo systemctl start kafka

查看日志:

tail -f /opt/kafka/logs/server.log

8. 逐台完成(集群)

对每一台 Broker 重复 停止 → 升级 → 启动


三、升级完成后的最终操作

1. 修改协议版本为新版

inter.broker.protocol.version=3.6
log.message.format.version=3.6

重启 Kafka:

sudo systemctl restart kafka

2. 升级客户端

  • Java 客户端
  • kafka-console-producer / consumer
  • Connect / Streams

四、ZooKeeper 与 KRaft 说明

场景 建议
仍使用 ZooKeeper 可继续
想用 KRaft 新建集群迁移,不原地升级

五、Docker 部署的 Kafka 升级(简要)

docker pull confluentinc/cp-kafka:新版本

修改 docker-compose.yml 后:

docker-compose down
docker-compose up -d

六、常见坑

❌ 直接跨多个大版本
❌ 忘记改 inter.broker.protocol.version
❌ 客户端未升级导致兼容问题
❌ 未做备份


如果你能提供:

  • Kafka 当前版本
  • 是否集群
  • 是否使用 ZooKeeper / KRaft
  • Ubuntu 版本

我可以给你 精确到命令的升级方案。

0 踩