在 Debian 上备份 Kafka 通常分为 数据备份 和 元数据/配置备份 两类。下面按常见场景说明。
Kafka 的消息数据默认存放在:
/var/lib/kafka/data
# 或
/tmp/kafka-logs
取决于你的 server.properties:
log.dirs=/var/lib/kafka/data
备份方式:
systemctl stop kafka
cp -a /var/lib/kafka/data /backup/kafka-data-$(date +%F)
systemctl start kafka
✅ 优点:简单、完整
❌ 缺点:需停机,数据量大时慢
如果你是生产环境,推荐:
kafka-topics.sh --alter \
--topic your_topic \
--partitions 3 \
--replication-factor 3 \
--bootstrap-server localhost:9092
只要副本足够,Kafka 本身就是“分布式备份”。
用于 异地容灾:
kafka-mirror-maker.sh \
--consumer.config consumer.properties \
--producer.config producer.properties \
--whitelist ".*"
常用于:
适合小数据量或审计:
kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic your_topic --from-beginning > kafka_backup.json
恢复:
kafka-console-producer.sh \
--bootstrap-server localhost:9092 \
--topic your_topic < kafka_backup.json
cp -a /etc/kafka /backup/kafka-config-$(date +%F)
重点文件:
server.propertiesproducer.propertiesconsumer.propertieszookeeper.properties(如果用 ZK)kafka-topics.sh --bootstrap-server localhost:9092 --list
kafka-topics.sh --bootstrap-server localhost:9092 --describe
ACL:
kafka-acls.sh --bootstrap-server localhost:9092 --list
如果你用的是 Kafka < 3.0(依赖 ZooKeeper):
systemctl stop zookeeper
cp -a /var/lib/zookeeper /backup/zk-$(date +%F)
systemctl start zookeeper
如果是 KRaft(无 ZooKeeper):
/var/lib/kafka/kraft
备份:
cp -a /var/lib/kafka/kraft /backup/kraft-$(date +%F)
| 场景 | 推荐方式 |
|---|---|
| 单机/测试 | 停服 + 拷贝 log.dirs |
| 生产 | 多副本 + MirrorMaker |
| 容灾 | 跨集群 MirrorMaker |
| 审计 | Console 导出 |
| 配置 | 定期备份 /etc/kafka |
如果你愿意,可以告诉我:
kafka_2.13-3.x?)我可以给你精确命令脚本。