温馨提示×

ubuntu kafka配置怎样备份数据

小樊
43
2026-09-14 17:25:35
栏目: 智能运维

在 Ubuntu 上备份 Kafka 数据,通常有两种层面的“备份”方式:基于文件系统的物理备份基于数据导出的逻辑备份。下面按常见场景给你说明。


一、Kafka 数据物理备份(最常用、最可靠)

Kafka 的消息是存储在磁盘上的日志文件,默认路径由 server.properties 中的 log.dirs 指定。

1. 查看 Kafka 数据目录

cat /usr/local/kafka/config/server.properties | grep log.dirs

常见路径:

log.dirs=/var/lib/kafka-logs

2. 停止 Kafka(推荐)

避免备份时数据写入导致不一致:

sudo systemctl stop kafka
# 或
kafka-server-stop.sh

3. 备份数据目录

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

或使用 tar:

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

4. 启动 Kafka

sudo systemctl start kafka

✅ 优点:简单、完整、可快速恢复
❌ 缺点:占用空间大,只能整机恢复


二、Kafka 元数据备份(Zookeeper / KRaft)

如果你使用 Zookeeper

sudo systemctl stop zookeeper

sudo tar -czf /backup/zk-backup-$(date +%F).tar.gz /var/lib/zookeeper

sudo systemctl start zookeeper

如果你使用 KRaft(新版本 Kafka)

KRaft 元数据也在 log.dirs 中,物理备份已包含。


三、逻辑备份(导出消息内容)

适合跨集群迁移长期归档

1. 使用 Kafka 自带工具

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

2. 使用 MirrorMaker(集群间备份)

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

四、定时自动备份(crontab 示例)

crontab -e

添加:

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

五、恢复 Kafka 数据

  1. 停止 Kafka
  2. 删除或重命名原 log.dirs
  3. 拷贝备份目录回去
  4. 启动 Kafka

⚠️ 注意:

  • broker.id 必须一致
  • 分区和副本结构不能变

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

  • Kafka 版本
  • 是否用 Zookeeper
  • 是否集群

我可以给你一套更适合你环境的备份方案

0