温馨提示×

kafka在linux怎么备份

小樊
40
2026-10-14 03:08:35
栏目: 智能运维

在 Linux 上备份 Kafka,通常不是简单地 copy 一个目录就完事,而是要根据你的目标(防止误删 / 灾难恢复 / 迁移)来选方案。下面按最常见、最稳妥的方式讲。


一、Kafka 备份的核心概念(先搞清楚)

Kafka 的数据主要在:

  • 数据日志:log.dirs 指定的目录(默认 /var/lib/kafka/data)
  • 元数据(非常重要):
    • Kafka ≤ 2.7:ZooKeeper
    • Kafka ≥ 3.0(KRaft):__cluster_metadata 主题

✅ 只备份数据目录 ≠ 完整备份


二、方式一:直接备份数据目录(最常用)

1️⃣ 停止 Kafka(推荐)

systemctl stop kafka

不停也可以,但可能有脏数据

2️⃣ 备份数据目录

cp -r /var/lib/kafka/data /backup/kafka-data-$(date +%F)

或压缩:

tar czf /backup/kafka-data-$(date +%F).tar.gz /var/lib/kafka/data

3️⃣ 恢复

systemctl stop kafka
rm -rf /var/lib/kafka/data/*
cp -r /backup/kafka-data-2026-01-21/* /var/lib/kafka/data/
systemctl start kafka

⚠️ 仅适合同集群、同配置恢复


三、方式二:备份 ZooKeeper(老版本必做)

如果你用的是 ZooKeeper 模式:

# 停止 Kafka & ZooKeeper
systemctl stop kafka
systemctl stop zookeeper

备份 ZooKeeper 数据

cp -r /var/lib/zookeeper /backup/zk-$(date +%F)

恢复时:

  • 先恢复 ZooKeeper
  • 再恢复 Kafka 数据目录

四、方式三:KRaft 模式(Kafka 3.x+)

备份元数据

kafka-dump-log.sh \
  --files /var/lib/kafka/data/__cluster_metadata-0/00000000000000000000.log

或直接备份:

cp -r /var/lib/kafka/data/__cluster_metadata-0 /backup/

五、方式四:逻辑备份(推荐用于迁移/长期保存)

使用 MirrorMaker 2(官方推荐)

kafka-mirror-maker.sh \
  --consumer.config source.conf \
  --producer.config target.conf \
  --whitelist='.*'

适合:

  • 跨机房
  • 容灾
  • 版本升级

六、方式五:只备份重要 Topic(最安全)

kafka-console-consumer.sh \
  --bootstrap-server localhost:9092 \
  --topic important_topic \
  --from-beginning > topic.backup.json

恢复:

kafka-console-producer.sh \
  --bootstrap-server localhost:9092 \
  --topic important_topic < topic.backup.json

七、生产环境建议(很重要)

✅ 定期备份
✅ 备份 ZooKeeper / KRaft 元数据
✅ 备份 server.properties
✅ 测试恢复流程
✅ 不要用 rm -rf 后靠运气


八、最小可用备份清单

/var/lib/kafka/data
/var/lib/zookeeper(如有)
/etc/kafka/*
备份脚本 + 恢复文档

如果你愿意,可以告诉我:

  • Kafka 版本
  • 是否用 ZooKeeper
  • 是单机还是集群
  • 备份目的(误删 / 容灾 / 迁移)

我可以给你一套可直接用的脚本。

0 踩