在 Ubuntu 上备份 Kafka 数据,通常有两种层面的“备份”方式:基于文件系统的物理备份 和 基于数据导出的逻辑备份。下面按常见场景给你说明。
Kafka 的消息是存储在磁盘上的日志文件,默认路径由 server.properties 中的 log.dirs 指定。
cat /usr/local/kafka/config/server.properties | grep log.dirs
常见路径:
log.dirs=/var/lib/kafka-logs
避免备份时数据写入导致不一致:
sudo systemctl stop kafka
# 或
kafka-server-stop.sh
sudo cp -r /var/lib/kafka-logs /backup/kafka-logs-$(date +%F)
或使用 tar:
sudo tar -czf /backup/kafka-backup-$(date +%F).tar.gz /var/lib/kafka-logs
sudo systemctl start kafka
✅ 优点:简单、完整、可快速恢复
❌ 缺点:占用空间大,只能整机恢复
sudo systemctl stop zookeeper
sudo tar -czf /backup/zk-backup-$(date +%F).tar.gz /var/lib/zookeeper
sudo systemctl start zookeeper
KRaft 元数据也在 log.dirs 中,物理备份已包含。
适合跨集群迁移或长期归档。
kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic test-topic --from-beginning > /backup/test-topic.json
kafka-mirror-maker.sh \
--consumer.config consumer.properties \
--producer.config producer.properties \
--whitelist ".*"
crontab -e
添加:
0 2 * * * tar -czf /backup/kafka-$(date +\%F).tar.gz /var/lib/kafka-logs
log.dirs⚠️ 注意:
如果你愿意,可以告诉我:
我可以给你一套更适合你环境的备份方案。