在 Linux 上备份 Kafka,通常分为 数据备份、配置备份 和 元数据备份 三类。下面按生产环境常用做法给你一个完整方案。
Kafka 本身设计是 分布式、可恢复 的,但备份仍然必要,主要用于:
| 类型 | 路径 / 内容 |
|---|---|
| Kafka 数据 | log.dirs(默认 /var/lib/kafka/data) |
| Kafka 配置 | server.properties、producer.properties、consumer.properties |
| Kafka 元数据 | Zookeeper 或 KRaft 元数据 |
| 消费者位移 | __consumer_offsets |
| 系统服务 | systemd / supervisor 配置 |
grep log.dirs /etc/kafka/server.properties
示例:
log.dirs=/data/kafka-logs
强烈建议先停 Kafka,避免数据不一致
systemctl stop kafka
或:
jps
kill -9 <kafka-pid>
tar -czvf kafka-data-$(date +%F).tar.gz /data/kafka-logs
或使用 rsync(适合大目录):
rsync -av /data/kafka-logs/ /backup/kafka-logs-$(date +%F)/
systemctl start kafka
tar -czvf kafka-config-$(date +%F).tar.gz \
/etc/kafka \
/etc/systemd/system/kafka.service
如果是自定义安装:
tar -czvf kafka-config.tar.gz \
/opt/kafka/config
Kafka 2.x 及以前依赖 Zookeeper
grep dataDir /etc/zookeeper/zoo.cfg
systemctl stop zookeeper
tar -czvf zookeeper-data-$(date +%F).tar.gz /var/lib/zookeeper
tar -czvf kafka-metadata-$(date +%F).tar.gz \
/tmp/kraft-combined-logs
(路径由 metadata.log.dir 决定)
kafka-consumer-groups.sh \
--bootstrap-server localhost:9092 \
--group my-group \
--describe > consumer-offset-backup.txt
kafka-topics.sh --bootstrap-server localhost:9092 --list | grep __consumer_offsets
(不建议直接拷贝,推荐导出)
#!/bin/bash
BACKUP_DIR=/backup/kafka
DATE=$(date +%F)
mkdir -p $BACKUP_DIR
systemctl stop kafka
tar -czvf $BACKUP_DIR/kafka-data-$DATE.tar.gz /data/kafka-logs
systemctl start kafka
chmod +x /usr/local/bin/backup-kafka.sh
crontab -e
0 2 * * * /usr/local/bin/backup-kafka.sh >> /var/log/kafka-backup.log 2>&1
systemctl stop kafka
rm -rf /data/kafka-logs/*
tar -xzvf kafka-data-2026-01-21.tar.gz -C /
systemctl start kafka
⚠️ 注意:
✅ 不要只备份数据,配置 + 元数据一起备份
✅ 使用 rsync + 快照(LVM / EBS) 更快
✅ 定期测试恢复流程
✅ 生产环境建议 多副本(replication factor ≥ 3)
你可以告诉我:
我可以给你 定制备份方案或脚本 ✅