在 Ubuntu 上备份 Kafka,通常分为 Kafka 数据备份、Kafka 配置备份 和 Kafka 元数据(ZooKeeper / KRaft)备份。下面按实际使用场景给你一个完整、可操作的方案。
| 类型 | 是否需要备份 | 说明 |
|---|---|---|
| Kafka 数据(topic 消息) | ✅ 必须 | 核心数据 |
| Kafka 配置文件 | ✅ 建议 | server.properties 等 |
| ZooKeeper 数据 | ✅(如用 ZK) | offset、消费者信息 |
| KRaft 元数据 | ✅(如用 KRaft) | Kafka 3.x+ |
| Kafka 程序本身 | ❌ 可选 | 可重新安装 |
grep "log.dirs" /etc/kafka/server.properties
常见路径:
/var/lib/kafka/data
/opt/kafka/logs
/tmp/kafka-logs
sudo systemctl stop kafka
生产环境:可以使用
rsync在线备份,但数据一致性略差。
sudo mkdir -p /backup/kafka
sudo cp -a /var/lib/kafka/data /backup/kafka/data_$(date +%F)
或使用 rsync(推荐):
sudo rsync -av /var/lib/kafka/data /backup/kafka/data_$(date +%F)
sudo cp -a /etc/kafka /backup/kafka/config_$(date +%F)
或:
sudo tar czf /backup/kafka/kafka-config-$(date +%F).tar.gz /etc/kafka
grep "dataDir" /etc/zookeeper/conf/zoo.cfg
常见路径:
/var/lib/zookeeper
sudo systemctl stop zookeeper
sudo rsync -av /var/lib/zookeeper /backup/kafka/zookeeper_$(date +%F)
grep "metadata.log.dir" /etc/kafka/server.properties
或:
grep "log.dirs" /etc/kafka/server.properties
sudo rsync -av /var/lib/kafka/metadata /backup/kafka/metadata_$(date +%F)
⚠️ 只能保证最终一致性
sudo rsync -av --delete /var/lib/kafka/data /backup/kafka/data_latest
建议:
sudo systemctl stop kafka
sudo rm -rf /var/lib/kafka/data/*
sudo cp -a /backup/kafka/data_2026-01-20/* /var/lib/kafka/data/
sudo systemctl start kafka
sudo crontab -e
示例(每天 2 点):
0 2 * * * rsync -av /var/lib/kafka/data /backup/kafka/data_$(date +\%F)
✅ 不要只备份 Kafka 数据
✅ Kafka 是多副本系统
✅ 备份 ≠ 高可用
我可以给你更精确的方案,如果你告诉我:
我可以直接给你 可复制执行的备份脚本 ✅