Kafka 在 CentOS 上的数据迁移方法
一、迁移场景与总体思路
二、跨实例或跨集群迁移步骤(不停机优先)
| 方案 | 适用场景 | 优点 | 注意点 |
|---|---|---|---|
| 先迁生产,再迁消费 | 对顺序敏感 | 实现简单、无乱序 | 存在切换等待时延 |
| 同时消费,后迁生产 | 对时延敏感 | 无长时间等待 | 短时间可能乱序 |
| MirrorMaker/Connect 同步后切换 | 生产不可停、需带历史数据 | 可同步全量+增量 | 消费端需支持幂等,可能有重复 |
三、本机或同机目录迁移步骤(换盘/扩容)
mkdir -p /mnt/kafka/{data,logs};chown -R kafka:kafka /mnt/kafka。systemctl stop kafka 或 bin/kafka-server-stop.sh。rsync -av /opt/kafka/data/ /mnt/kafka/data/(保留权限与时间戳);rsync -av /opt/kafka/logs/ /mnt/kafka/logs/。log.dirs=/mnt/kafka/data;bin/kafka-run-class.sh,在脚本前部设置 LOG_DIR=/mnt/kafka/logs(某些老版本不支持在 server.properties 中直接配置运行日志目录)。systemctl start kafka 或 nohup bin/kafka-server-start.sh config/server.properties &;tail -f /mnt/kafka/logs/server.log 无报错;du -sh /mnt/kafka/data 增长;kafka-topics.sh --bootstrap-server localhost:9092 --describe 正常。log.dirs=/mnt/disk1/kafka/data,/mnt/disk2/kafka/data,Kafka 会按分区做轮询/均衡写入,提升吞吐(不是按磁盘空间均衡)。log.retention.hours、log.retention.bytes(时间/大小维度择一或组合使用)。四、回退与风险控制