温馨提示×

ubuntu如何备份kafka

小樊
44
2026-08-17 19:43:22
栏目: 智能运维

在 Ubuntu 上备份 Kafka,通常分为 Kafka 数据备份Kafka 配置备份Kafka 元数据(ZooKeeper / KRaft)备份。下面按实际使用场景给你一个完整、可操作的方案。


一、Kafka 需要备份什么?

类型 是否需要备份 说明
Kafka 数据(topic 消息) ✅ 必须 核心数据
Kafka 配置文件 ✅ 建议 server.properties 等
ZooKeeper 数据 ✅(如用 ZK) offset、消费者信息
KRaft 元数据 ✅(如用 KRaft) Kafka 3.x+
Kafka 程序本身 ❌ 可选 可重新安装

二、Kafka 数据目录备份(最常见)

1️⃣ 确认 Kafka 数据目录

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

常见路径:

/var/lib/kafka/data
/opt/kafka/logs
/tmp/kafka-logs

2️⃣ 停止 Kafka(强烈推荐)

sudo systemctl stop kafka

生产环境:可以使用 rsync 在线备份,但数据一致性略差。


3️⃣ 备份 Kafka 数据

sudo mkdir -p /backup/kafka
sudo cp -a /var/lib/kafka/data /backup/kafka/data_$(date +%F)

或使用 rsync(推荐):

sudo rsync -av /var/lib/kafka/data /backup/kafka/data_$(date +%F)

三、Kafka 配置文件备份

sudo cp -a /etc/kafka /backup/kafka/config_$(date +%F)

或:

sudo tar czf /backup/kafka/kafka-config-$(date +%F).tar.gz /etc/kafka

四、ZooKeeper 数据备份(Kafka 2.x)

1️⃣ 查看 ZooKeeper 数据目录

grep "dataDir" /etc/zookeeper/conf/zoo.cfg

常见路径:

/var/lib/zookeeper

2️⃣ 停止 ZooKeeper

sudo systemctl stop zookeeper

3️⃣ 备份 ZooKeeper

sudo rsync -av /var/lib/zookeeper /backup/kafka/zookeeper_$(date +%F)

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

1️⃣ 查看元数据目录

grep "metadata.log.dir" /etc/kafka/server.properties

或:

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

2️⃣ 备份元数据

sudo rsync -av /var/lib/kafka/metadata /backup/kafka/metadata_$(date +%F)

六、在线备份(不停机,生产环境)

⚠️ 只能保证最终一致性

sudo rsync -av --delete /var/lib/kafka/data /backup/kafka/data_latest

建议:

  • 配合 Kafka 副本机制
  • 多 broker 环境更安全

七、恢复 Kafka 数据

1️⃣ 停止 Kafka

sudo systemctl stop kafka

2️⃣ 恢复数据

sudo rm -rf /var/lib/kafka/data/*
sudo cp -a /backup/kafka/data_2026-01-20/* /var/lib/kafka/data/

3️⃣ 启动 Kafka

sudo systemctl start kafka

八、自动化备份(cron)

sudo crontab -e

示例(每天 2 点):

0 2 * * * rsync -av /var/lib/kafka/data /backup/kafka/data_$(date +\%F)

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

不要只备份 Kafka 数据

  • 必须同时备份 ZooKeeper / KRaft 元数据

Kafka 是多副本系统

  • 优先保证 broker 数量 ≥ 副本数

备份 ≠ 高可用

  • 备份用于灾难恢复
  • 高可用靠副本 + ISR

十、你可以告诉我

我可以给你更精确的方案,如果你告诉我:

  1. Kafka 版本
  2. Ubuntu 版本
  3. 是否使用 ZooKeeper / KRaft
  4. 单机还是集群
  5. 是否生产环境

我可以直接给你 可复制执行的备份脚本

0