迁移 Ubuntu 上的 Kafka 配置,一般可分为 配置迁移、数据迁移、集群迁移 三种场景。下面按 最常见、最稳妥 的方式一步一步说明,你可以按需选择。
# Kafka 安装目录(常见)
ls /opt/kafka
ls /usr/local/kafka
# 配置文件位置
ls /opt/kafka/config
# 或
ls /etc/kafka
重点关注:
server.propertiesproducer.propertiesconsumer.propertieszookeeper.properties(如果用 ZK)kafka-topics.sh --version
⚠️ 新机器 Kafka 版本尽量一致或大版本一致
✅ 适用于:
scp -r /opt/kafka/config user@new-server:/opt/kafka/
或手动复制:
scp server.properties user@new-server:/opt/kafka/config/
重点检查:
broker.id=
listeners=
log.dirs=
zookeeper.connect=
示例:
broker.id=2
listeners=PLAINTEXT://192.168.1.12:9092
log.dirs=/data/kafka-logs
zookeeper.connect=zk1:2181,zk2:2181
systemctl restart kafka
# 或
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
✅ 适用于:
systemctl stop kafka
scp -r /data/kafka-logs user@new-server:/data/
⚠️ 必须保证:
log.dirs 路径一致chown -R kafka:kafka /data/kafka-logs
scp -r /opt/kafka/config user@new-server:/opt/kafka/
broker.id=新ID
systemctl start kafka
✅ 最推荐方式(不停机)
broker.id 不重复生成迁移计划:
cat > topics-to-move.json <<EOF
{
"topics": [
{"topic": "test-topic"}
],
"version": 1
}
EOF
生成迁移脚本:
kafka-reassign-partitions.sh \
--bootstrap-server new-broker:9092 \
--topics-to-move-json-file topics-to-move.json \
--broker-list "1,2,3" \
--generate
执行迁移:
kafka-reassign-partitions.sh \
--bootstrap-server new-broker:9092 \
--reassignment-json-file reassignment.json \
--execute
查看进度:
kafka-reassign-partitions.sh \
--bootstrap-server new-broker:9092 \
--reassignment-json-file reassignment.json \
--verify
scp -r /var/lib/zookeeper user@new-server:/var/lib/
zookeeper.connect=new-zk:2181
❌ broker.id 冲突
❌ log.dirs 权限不对
❌ Kafka 版本不一致导致协议错误
❌ hostname / IP 写死导致无法通信
❌ 忘记迁移 __consumer_offsets
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
如果你愿意,可以告诉我:
我可以给你一份 完全针对你环境的迁移方案(含命令 + 回滚方案)。