温馨提示×

debian怎样备份kafka数据

小樊
36
2026-08-31 23:34:03
栏目: 智能运维

在 Debian 上备份 Kafka 数据,通常分两类:元数据(Topic 配置)备份消息数据(Log 文件)备份。下面按常见、可靠的方式说明。


一、Kafka 数据都存哪?

默认情况下(取决于你的安装方式):

  • Kafka 数据目录(消息日志)
    /var/lib/kafka/data/opt/kafka/logs
  • Kafka 配置文件
    /etc/kafka/
  • ZooKeeper 数据(老版本 Kafka)
    /var/lib/zookeeper

Kafka 3.x 以后推荐使用 KRaft 模式,不再依赖 ZooKeeper。


二、备份 Kafka 消息数据(最常用)

方法 1:直接备份数据目录(物理备份)

适用场景:整机迁移、灾备

# 停止 Kafka(非常重要)
systemctl stop kafka

# 备份数据目录
tar czf kafka-data-$(date +%F).tar.gz /var/lib/kafka/data

# 启动 Kafka
systemctl start kafka

✅ 优点:简单、完整
❌ 缺点:需要停服


方法 2:不停机逻辑备份(推荐生产环境)

使用 Kafka 自带的消费者工具

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

恢复:

kafka-console-producer.sh \
  --bootstrap-server localhost:9092 \
  --topic my_topic < my_topic_backup.json

✅ 不停机
❌ 不支持 key / partition / timestamp 精确恢复


方法 3:使用 MirrorMaker(集群级备份)

适合 跨机房 / 跨集群

kafka-mirror-maker.sh \
  --consumer.config consumer.properties \
  --producer.config producer.properties \
  --whitelist ".*"

三、备份 Topic 元数据(配置)

导出 Topic 配置

kafka-topics.sh \
  --bootstrap-server localhost:9092 \
  --list > topics.txt

kafka-topics.sh \
  --bootstrap-server localhost:9092 \
  --describe > topics-describe.txt

恢复时手动重建:

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

四、ZooKeeper / KRaft 备份

ZooKeeper(旧版)

systemctl stop zookeeper
tar czf zk-data.tar.gz /var/lib/zookeeper
systemctl start zookeeper

KRaft(新版)

备份:

/var/lib/kafka/kraft-logs
/etc/kafka/server.properties

五、自动化备份(crontab 示例)

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

六、推荐方案总结

场景 推荐方式
单机 / 测试 直接 tar 备份数据目录
生产环境 MirrorMaker + Topic 配置备份
云环境 云盘快照
精确恢复 自研 Consumer + Producer

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

  • Kafka 版本
  • 是否用 ZooKeeper
  • 单机还是集群
  • 是否能停服

我可以给你一套 完全贴合你环境的备份脚本

0