在 Linux 上备份 Kafka,通常不是简单地 copy 一个目录就完事,而是要根据你的目标(防止误删 / 灾难恢复 / 迁移)来选方案。下面按最常见、最稳妥的方式讲。
Kafka 的数据主要在:
log.dirs 指定的目录(默认 /var/lib/kafka/data)__cluster_metadata 主题✅ 只备份数据目录 ≠ 完整备份
systemctl stop kafka
不停也可以,但可能有脏数据
cp -r /var/lib/kafka/data /backup/kafka-data-$(date +%F)
或压缩:
tar czf /backup/kafka-data-$(date +%F).tar.gz /var/lib/kafka/data
systemctl stop kafka
rm -rf /var/lib/kafka/data/*
cp -r /backup/kafka-data-2026-01-21/* /var/lib/kafka/data/
systemctl start kafka
⚠️ 仅适合同集群、同配置恢复
如果你用的是 ZooKeeper 模式:
# 停止 Kafka & ZooKeeper
systemctl stop kafka
systemctl stop zookeeper
cp -r /var/lib/zookeeper /backup/zk-$(date +%F)
恢复时:
kafka-dump-log.sh \
--files /var/lib/kafka/data/__cluster_metadata-0/00000000000000000000.log
或直接备份:
cp -r /var/lib/kafka/data/__cluster_metadata-0 /backup/
kafka-mirror-maker.sh \
--consumer.config source.conf \
--producer.config target.conf \
--whitelist='.*'
适合:
kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic important_topic \
--from-beginning > topic.backup.json
恢复:
kafka-console-producer.sh \
--bootstrap-server localhost:9092 \
--topic important_topic < topic.backup.json
✅ 定期备份
✅ 备份 ZooKeeper / KRaft 元数据
✅ 备份 server.properties
✅ 测试恢复流程
✅ 不要用 rm -rf 后靠运气
/var/lib/kafka/data
/var/lib/zookeeper(如有)
/etc/kafka/*
备份脚本 + 恢复文档
如果你愿意,可以告诉我:
我可以给你一套可直接用的脚本。