在 Debian 上备份 Kafka,通常不是简单拷贝整个 Kafka 目录,而是要根据你的目标(灾备 / 迁移 / 回放)来选择合适的备份方式。下面按常见场景说明。
Kafka 的数据特点:
log.dirs)✅ 所以:
systemctl stop kafka
grep log.dirs /etc/kafka/server.properties
通常是:
/var/lib/kafka/data
tar czf kafka-data-$(date +%F).tar.gz /var/lib/kafka/data
tar czf kafka-conf.tar.gz /etc/kafka
⚠️ 注意:
kafka-console-consumerkafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic my_topic \
--from-beginning \
--timeout-ms 60000 \
> my_topic_backup.json
✅ 优点:简单
❌ 缺点:
kafka-dump-log(底层日志)kafka-dump-log.sh \
--files /var/lib/kafka/data/my_topic-0/00000000000000000000.log \
--print-data-log
适合底层分析,不适合常规备份。
源 Kafka → MirrorMaker → 目标 Kafka
kafka-mirror-maker.sh \
--consumer.config consumer.properties \
--producer.config producer.properties \
--whitelist ".*"
✅ 优点:
systemctl stop zookeeper
tar czf zk-data.tar.gz /var/lib/zookeeper
备份:
/var/lib/kafka/kraft
| 场景 | 推荐方式 |
|---|---|
| 单机测试 | tar 数据目录 |
| 数据留存 | console / 导出 |
| 灾备 | MirrorMaker 2 |
| 集群迁移 | MirrorMaker + topic 脚本 |
导出 topic 列表:
kafka-topics.sh --bootstrap-server localhost:9092 --list
导出 topic 配置:
kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --describe
如果你愿意,可以告诉我:
我可以给你一套可直接用的备份脚本。