在 Linux 上备份 Kafka 一般可以从 消息数据备份 和 元数据/配置备份 两个层面来做。下面按常见场景给你总结。
Kafka 的数据本身是分布式、可复制的,所以“备份”通常不是像 MySQL 那样导出,而是:
kafka-topics.sh --create \
--bootstrap-server localhost:9092 \
--replication-factor 3 \
--partitions 3 \
--topic test-topic
✅ 只要副本数 ≥ 2,并且 broker 分布在不同机器,基本不怕单点故障。
在 server.properties 中:
log.dirs=/data/kafka-logs
systemctl stop kafka
# 或
bin/kafka-server-stop.sh
tar czf kafka-backup-$(date +%F).tar.gz /data/kafka-logs
或 rsync:
rsync -avz /data/kafka-logs /backup/kafka/
⚠️ 注意:
kafka-mirror-maker.sh \
--consumer.config consumer.properties \
--producer.config producer.properties \
--whitelist ".*"
consumer.properties
bootstrap.servers=source:9092
producer.properties
bootstrap.servers=backup:9092
✅ 实时备份,不影响源集群
写个消费者把消息存文件或对象存储:
kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic test-topic \
--from-beginning > backup.log
适合:
/etc/kafka/
kafka-topics.sh --bootstrap-server localhost:9092 --describe > topics.txt
kafka-acls.sh --bootstrap-server localhost:9092 --list > acls.txt
systemctl stop kafka
rm -rf /data/kafka-logs
tar xzf kafka-backup.tar.gz -C /
systemctl start kafka
直接消费备份集群数据即可。
| 场景 | 推荐方式 |
|---|---|
| 生产环境 | 多副本 + MirrorMaker |
| 临时备份 | 停服拷贝 log.dirs |
| 审计 | 消费者落盘 |
| 容灾 | 跨机房 MirrorMaker |
如果你能告诉我:
我可以给你更具体的备份脚本。