温馨提示×

ubuntu kafka配置如何迁移

小樊
47
2026-08-29 01:29:23
栏目: 智能运维

迁移 Ubuntu 上的 Kafka 配置,一般可分为 配置迁移、数据迁移、集群迁移 三种场景。下面按 最常见、最稳妥 的方式一步一步说明,你可以按需选择。


一、迁移前准备

1️⃣ 确认当前 Kafka 信息

# Kafka 安装目录(常见)
ls /opt/kafka
ls /usr/local/kafka

# 配置文件位置
ls /opt/kafka/config
# 或
ls /etc/kafka

重点关注:

  • server.properties
  • producer.properties
  • consumer.properties
  • zookeeper.properties(如果用 ZK)

2️⃣ 查看 Kafka 版本

kafka-topics.sh --version

⚠️ 新机器 Kafka 版本尽量一致或大版本一致


二、仅迁移 Kafka 配置(不迁移数据)

✅ 适用于:

  • 重建 Kafka
  • 更换机器
  • 升级配置

1️⃣ 拷贝配置文件

scp -r /opt/kafka/config user@new-server:/opt/kafka/

或手动复制:

scp server.properties user@new-server:/opt/kafka/config/

2️⃣ 修改新机器配置

重点检查:

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

3️⃣ 重启 Kafka

systemctl restart kafka
# 或
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties

三、迁移 Kafka + 数据(完整迁移)

✅ 适用于:

  • 整机迁移
  • 保留历史消息
  • 升级服务器

1️⃣ 停止 Kafka

systemctl stop kafka

2️⃣ 拷贝 Kafka 数据目录

scp -r /data/kafka-logs user@new-server:/data/

⚠️ 必须保证:

  • log.dirs 路径一致
  • 文件权限一致
chown -R kafka:kafka /data/kafka-logs

3️⃣ 拷贝配置文件

scp -r /opt/kafka/config user@new-server:/opt/kafka/

4️⃣ 修改 broker.id(如果是新节点)

broker.id=新ID

5️⃣ 启动 Kafka

systemctl start kafka

四、Kafka 集群迁移(最常见生产场景)

最推荐方式(不停机)

1️⃣ 新机器加入集群

  • 新 Kafka 使用相同:
    • Zookeeper
    • Cluster ID
  • broker.id 不重复

2️⃣ 分区迁移(数据迁移)

生成迁移计划:

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

五、ZooKeeper 迁移(如使用)

1️⃣ 迁移 ZK 数据

scp -r /var/lib/zookeeper user@new-server:/var/lib/

2️⃣ 修改 Kafka 配置

zookeeper.connect=new-zk:2181

六、常见坑总结(非常重要)

broker.id 冲突
log.dirs 权限不对
❌ Kafka 版本不一致导致协议错误
❌ hostname / IP 写死导致无法通信
❌ 忘记迁移 __consumer_offsets

检查消费者是否正常

kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list

七、迁移检查清单 ✅

  • [ ] Kafka 版本一致
  • [ ] broker.id 唯一
  • [ ] log.dirs 存在且权限正确
  • [ ] ZooKeeper 正常
  • [ ] 分区 / 副本正常
  • [ ] 消费者 offset 正常

八、你可以告诉我

如果你愿意,可以告诉我:

  1. 单机还是集群?
  2. 是否使用 ZooKeeper?
  3. 是否保留数据?
  4. Ubuntu 版本 + Kafka 版本

我可以给你一份 完全针对你环境的迁移方案(含命令 + 回滚方案)。

0