在 Linux 上备份 Kafka 数据,常见做法分为 文件系统级备份、Kafka 自带机制(副本/镜像) 和 逻辑备份(导出消息) 三类。下面按实用程度给你一个清晰说明。
一般在 server.properties 中:
log.dirs=/var/lib/kafka/data
systemctl stop kafka
# 或
kafka-server-stop.sh
⚠️ 不停止也可以,但可能有脏数据
cd /var/lib/kafka
tar czf kafka-backup-$(date +%F).tar.gz data
或增量备份(rsync):
rsync -avz /var/lib/kafka/data /backup/kafka-data/
systemctl stop kafka
rm -rf /var/lib/kafka/data
tar xzf kafka-backup-2026-01-21.tar.gz -C /var/lib/kafka
systemctl start kafka
✅ 优点:简单、完整
❌ 缺点:必须同版本 Kafka,恢复粒度是“整个 broker”
Kafka 本身通过 replication 防止数据丢失:
default.replication.factor=3
min.insync.replicas=2
✅ 防止 broker 宕机
❌ 不能防止误删 topic / 误删消息
用于:
bin/kafka-mirror-maker.sh \
--consumer.config consumer.properties \
--producer.config producer.properties \
--whitelist ".*"
✅ 实时同步
✅ 可跨版本
❌ 不是“时间点恢复”
kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic my-topic \
--from-beginning > backup.json
kafka-console-producer.sh \
--bootstrap-server localhost:9092 \
--topic my-topic < backup.json
✅ 简单
❌ 丢 offset / 时间戳 / key 格式可能变
log.dirsserver.properties / zookeeper 数据/var/lib/kafka/kraft
| 场景 | 推荐方式 |
|---|---|
| 单机/测试 | tar 备份数据目录 |
| 生产环境 | 副本 + MirrorMaker |
| 误删恢复 | 逻辑导出 |
| 灾备 | MM2 |
如果你愿意,可以告诉我:
我可以给你 精确可执行的备份脚本。