温馨提示×

linux kafka怎么备份

小樊
40
2026-09-20 15:19:20
栏目: 智能运维

在 Linux 上备份 Kafka 一般可以从 消息数据备份 和 元数据/配置备份 两个层面来做。下面按常见场景给你总结。


一、Kafka 数据备份的核心思路

Kafka 的数据本身是分布式、可复制的,所以“备份”通常不是像 MySQL 那样导出,而是:

  1. 多副本(推荐)
  2. 定期镜像/拷贝数据目录
  3. 跨集群 MirrorMaker 备份
  4. 消费者端落盘备份

二、方式一:Kafka 多副本(最推荐)

1. 创建 Topic 时设置副本

kafka-topics.sh --create \
  --bootstrap-server localhost:9092 \
  --replication-factor 3 \
  --partitions 3 \
  --topic test-topic

✅ 只要副本数 ≥ 2,并且 broker 分布在不同机器,基本不怕单点故障。


三、方式二:直接备份 Kafka 数据目录(物理备份)

1. 找到数据目录

在 server.properties 中:

log.dirs=/data/kafka-logs

2. 停止 Kafka(重要)

systemctl stop kafka
# 或
bin/kafka-server-stop.sh

3. 备份目录

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

或 rsync:

rsync -avz /data/kafka-logs /backup/kafka/

⚠️ 注意:

  • 必须停 Kafka,否则数据不一致
  • 恢复时要保证 Kafka 版本一致

四、方式四:使用 MirrorMaker 做异地备份(生产推荐)

1. 源集群 → 目标集群

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

适合:

  • 审计
  • 离线分析
  • 小数据量

六、Kafka 配置 & 元数据的备份

1. 备份配置文件

/etc/kafka/

2. 备份 Topic / ACL

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

直接消费备份集群数据即可。


八、总结建议

场景 推荐方式
生产环境 多副本 + MirrorMaker
临时备份 停服拷贝 log.dirs
审计 消费者落盘
容灾 跨机房 MirrorMaker

如果你能告诉我:

  • Kafka 版本
  • 是否生产环境
  • 单节点还是集群

我可以给你更具体的备份脚本。

0 踩