温馨提示×

ubuntu kafka配置怎么迁移数据

小樊
41
2026-10-02 15:20:01
栏目: 智能运维

在 Ubuntu 上迁移 Kafka 数据,通常分为同一机器目录迁移、机器间迁移(集群扩容/缩容)、以及使用 MirrorMaker 跨集群迁移几种场景。下面按常见需求说明。


一、同机器修改数据目录(最简单)

适用于:磁盘满了、换盘、调整 log.dirs

1. 停止 Kafka

sudo systemctl stop kafka
# 或
<kafka_dir>/bin/kafka-server-stop.sh

2. 修改配置

编辑 server.properties

log.dirs=/new/path/kafka-logs

3. 拷贝数据

cp -rp /old/path/kafka-logs /new/path/kafka-logs

4. 启动 Kafka

sudo systemctl start kafka

✅ 注意:

  • 不要只拷贝部分 partition
  • broker.id 必须一致
  • 不建议直接 mv 正在运行的 Kafka

二、集群内 Broker 迁移(推荐方式)

适用于:换机器、节点下线

方式:Kafka 自带的 Reassign Partition

1. 生成迁移计划

bin/kafka-reassign-partitions.sh \
--bootstrap-server localhost:9092 \
--topics-to-move-json-file topics.json \
--broker-list "1,2,3" \
--generate

topics.json 示例:

{
  "topics": [
    { "topic": "test-topic" }
  ],
  "version": 1
}

2. 执行迁移

bin/kafka-reassign-partitions.sh \
--bootstrap-server localhost:9092 \
--reassignment-json-file reassignment.json \
--execute

3. 查看进度

bin/kafka-reassign-partitions.sh \
--bootstrap-server localhost:9092 \
--reassignment-json-file reassignment.json \
--verify

✅ 优点:不影响业务、零停机


三、跨机器 / 跨集群迁移(MirrorMaker)

适用于:机房迁移、灾备

1. 源集群 → 目标集群

bin/kafka-mirror-maker.sh \
--consumer.config consumer.properties \
--producer.config producer.properties \
--whitelist ".*"

consumer.properties

bootstrap.servers=source:9092

producer.properties

bootstrap.servers=target:9092

✅ 注意:

  • topic 名一致
  • offset 不保证一致
  • 适合异步复制

四、直接拷贝数据文件(不推荐)

仅限测试环境

scp -r /var/lib/kafka /target-server:/var/lib/

要求:

  • broker.id 相同
  • Kafka 版本一致
  • 停止两台 Kafka

五、常见坑

❌ 直接删 log.dirs 会导致数据丢失
❌ 不同 broker.id 拷贝数据无法启动
❌ 迁移中 topic 正在写会不一致


六、推荐方案总结

场景 推荐方式
换磁盘 改 log.dirs + 拷贝
节点下线 Reassign Partition
跨集群 MirrorMaker
测试 文件拷贝

如果你能告诉我:

  • 单机还是集群?
  • 是否跨机器?
  • Kafka 版本?

我可以给你精确命令。

0 踩