在 Debian 上升级 Kafka 版本,核心原则是保证数据安全和兼容性。下面给你一套通用、稳妥的升级流程(以从旧版本升级到新版本为例,如 2.x → 3.x)。
kafka-server-start.sh --version
# 或
cat /opt/kafka/libs/kafka_2.13-*.jar | head
# broker 数据目录(示例)
cp -r /var/lib/kafka /var/lib/kafka_bak
# 配置文件
cp -r /etc/kafka /etc/kafka_bak
⚠️ 非常关键
一般规则:
假设 Kafka 安装在
/opt/kafka
systemctl stop kafka
# 或
/opt/kafka/bin/kafka-server-stop.sh
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 kafka kafka_old
mv kafka_2.13-3.6.1 kafka
cp /etc/kafka_bak/* /opt/kafka/config/
⚠️ 注意:
server.propertieszookeeper.properties(如用 ZK)consumer.propertiesproducer.properties在 server.properties 中:
inter.broker.protocol.version=CURRENT_VERSION
log.message.format.version=CURRENT_VERSION
例如从 2.8 升级:
inter.broker.protocol.version=2.8
systemctl start kafka
tail -f /opt/kafka/logs/server.log
确认无异常。
确认运行稳定后:
inter.broker.protocol.version=3.6
log.message.format.version=3.6
重启 Kafka:
systemctl restart kafka
示例 kafka.service:
[Unit]
Description=Apache Kafka
After=network.target zookeeper.service
[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
重新加载:
systemctl daemon-reload
kafka-topics.sh --bootstrap-server localhost:9092 --list
kafka-broker-api-versions.sh --bootstrap-server localhost:9092
✅ 只要按协议版本逐步升级,一般不会丢数据
Debian 官方仓库 Kafka 版本很旧,不建议 apt 升级
2.8 → 3.0 → 3.3 → 3.6
如果你愿意,可以告诉我:
我可以给你量身定制的升级方案。