在 Linux 上备份 Kafka 数据,一般不是像数据库那样“导出一份数据文件”,而是根据 使用场景 选择不同方式。下面按 最常见、最安全、最实用 的顺序给你讲清楚。
Kafka 的数据主要包括:
/tmp/kafka-logs 或 log.dirs 配置目录server.properties、producer.properties 等# 停止 Kafka
bin/kafka-server-stop.sh
⚠️ 不停止 Kafka 备份,可能导致数据不一致
查看 server.properties:
grep log.dirs config/server.properties
常见路径:
/var/lib/kafka-logs
/data/kafka-logs
tar -czvf kafka-logs-backup-$(date +%F).tar.gz /var/lib/kafka-logs
或同步到远程:
rsync -avz /var/lib/kafka-logs/ user@backup-server:/backup/kafka-logs/
tar -xzvf kafka-logs-backup-2026-01-21.tar.gz -C /
然后启动 Kafka 即可。
✅ 优点
❌ 缺点
从一个 Kafka 集群 实时复制 到另一个 Kafka 集群。
示例(Kafka 自带):
# consumer.properties
bootstrap.servers=source-kafka:9092
group.id=mirror-maker-group
# producer.properties
bootstrap.servers=backup-kafka:9092
bin/kafka-mirror-maker.sh \
--consumer.config consumer.properties \
--producer.config producer.properties \
--whitelist ".*"
✅ 优点
❌ 缺点
bin/kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic test-topic \
--from-beginning > kafka-backup.json
恢复:
bin/kafka-console-producer.sh \
--bootstrap-server localhost:9092 \
--topic test-topic < kafka-backup.json
✅ 优点
❌ 缺点
tar -czvf zk-backup.tar.gz /var/lib/zookeeper
KRaft 元数据在 Kafka 数据目录中,备份 log.dirs 即可。
✅ 生产环境建议组合:
| 内容 | 方式 |
|---|---|
| Kafka 消息 | MirrorMaker |
| 数据目录 | 定期 tar / rsync |
| 配置文件 | Git / 手动备份 |
| 元数据 | 随数据目录一起 |
❌ 不要只备份 topic,不备份 offset ❌ 不要跨大版本直接恢复数据目录 ❌ 不要在线直接 cp kafka-logs ❌ 不要忽略磁盘权限
| 需求 | 最佳方案 |
|---|---|
| 快速恢复 | 备份数据目录 |
| 灾备 | MirrorMaker |
| 归档 | 导出消息 |
| 升级 | 数据目录 + 测试 |
如果你愿意,可以告诉我:
我可以给你 一份完全可执行的备份方案。