温馨提示×

怎么在Linux备份Kafka

小樊
32
2026-08-17 03:26:11
栏目: 智能运维

在 Linux 上备份 Kafka,通常分为 数据备份配置备份元数据备份 三类。下面按生产环境常用做法给你一个完整方案。


一、Kafka 需要备份什么?

Kafka 本身设计是 分布式、可恢复 的,但备份仍然必要,主要用于:

  • 磁盘损坏
  • 误删 topic / 数据
  • 集群迁移
  • 回滚配置

需要备份的核心内容

类型 路径 / 内容
Kafka 数据 log.dirs(默认 /var/lib/kafka/data
Kafka 配置 server.propertiesproducer.propertiesconsumer.properties
Kafka 元数据 Zookeeper 或 KRaft 元数据
消费者位移 __consumer_offsets
系统服务 systemd / supervisor 配置

二、备份 Kafka 数据(最重要)

1️⃣ 查看数据目录

grep log.dirs /etc/kafka/server.properties

示例:

log.dirs=/data/kafka-logs

2️⃣ 停止 Kafka(推荐)

强烈建议先停 Kafka,避免数据不一致

systemctl stop kafka

或:

jps
kill -9 <kafka-pid>

3️⃣ 备份数据目录

tar -czvf kafka-data-$(date +%F).tar.gz /data/kafka-logs

或使用 rsync(适合大目录):

rsync -av /data/kafka-logs/ /backup/kafka-logs-$(date +%F)/

4️⃣ 启动 Kafka

systemctl start kafka

三、备份 Kafka 配置

tar -czvf kafka-config-$(date +%F).tar.gz \
/etc/kafka \
/etc/systemd/system/kafka.service

如果是自定义安装:

tar -czvf kafka-config.tar.gz \
/opt/kafka/config

四、备份 Zookeeper(老版本 Kafka)

Kafka 2.x 及以前依赖 Zookeeper

1️⃣ 查看 Zookeeper 数据目录

grep dataDir /etc/zookeeper/zoo.cfg

2️⃣ 停止 Zookeeper

systemctl stop zookeeper

3️⃣ 备份

tar -czvf zookeeper-data-$(date +%F).tar.gz /var/lib/zookeeper

五、KRaft 模式(Kafka 3.x+,无 Zookeeper)

备份元数据

tar -czvf kafka-metadata-$(date +%F).tar.gz \
/tmp/kraft-combined-logs

(路径由 metadata.log.dir 决定)


六、备份消费者位移(可选)

方法 1:导出位移(推荐)

kafka-consumer-groups.sh \
--bootstrap-server localhost:9092 \
--group my-group \
--describe > consumer-offset-backup.txt

方法 2:直接备份内部 topic

kafka-topics.sh --bootstrap-server localhost:9092 --list | grep __consumer_offsets

(不建议直接拷贝,推荐导出)


七、自动化备份(生产推荐)

示例 cron 脚本

#!/bin/bash
BACKUP_DIR=/backup/kafka
DATE=$(date +%F)

mkdir -p $BACKUP_DIR

systemctl stop kafka
tar -czvf $BACKUP_DIR/kafka-data-$DATE.tar.gz /data/kafka-logs
systemctl start kafka
chmod +x /usr/local/bin/backup-kafka.sh
crontab -e
0 2 * * * /usr/local/bin/backup-kafka.sh >> /var/log/kafka-backup.log 2>&1

八、恢复 Kafka 数据

systemctl stop kafka
rm -rf /data/kafka-logs/*
tar -xzvf kafka-data-2026-01-21.tar.gz -C /
systemctl start kafka

⚠️ 注意:

  • broker.id 必须一致
  • 不要跨版本恢复
  • 恢复后 topic 自动恢复

九、最佳实践(非常重要)

✅ 不要只备份数据,配置 + 元数据一起备份
✅ 使用 rsync + 快照(LVM / EBS) 更快
✅ 定期测试恢复流程
✅ 生产环境建议 多副本(replication factor ≥ 3)


十、我可以继续帮你

你可以告诉我:

  • Kafka 版本(2.x / 3.x)
  • 是否使用 Zookeeper
  • 单机还是集群
  • 是否需要 不停机备份

我可以给你 定制备份方案或脚本

0