温馨提示×

Debian Kafka备份与恢复如何操作

小樊
34
2025-12-08 06:06:38
栏目: 智能运维

Debian 上 Kafka 备份与恢复实操指南

一 备份策略与准备

  • 明确运行模式:确认是 ZooKeeper 还是 KRaft 模式,二者的元数据备份方式不同。
  • 确定数据目录:在 server.properties 中查看 log.dirs(常见路径如 /var/lib/kafka/data),备份需覆盖所有 Broker 的日志目录。
  • 元数据与配置:同时备份 /etc/kafka 配置;ZooKeeper 模式需备份 ZooKeeper 数据目录(常见 /var/lib/zookeeper),KRaft 模式需关注 __cluster_metadata 日志。
  • 影响与窗口:离线备份需停写,在线备份需控制对业务的影响(限速、低峰期、副本容错)。
  • 保留与合规:结合 log.retention.hours / log.retention.bytes 与业务 RPO/RTO 制定周期与保留策略。

二 方法一 离线物理备份与恢复(停机,最稳妥)

  • 适用场景:Broker 磁盘故障、目录损坏、版本升级回滚、全量迁移。
  • 备份步骤:
    1. 停止 Kafka:sudo systemctl stop kafka
    2. 备份数据与配置:
      sudo tar -czvf kafka_data_$(date +%F).tar.gz /var/lib/kafka
      sudo tar -czvf kafka_config_$(date +%F).tar.gz /etc/kafka
    3. 如为 ZooKeeper:sudo tar -czvf zookeeper_$(date +%F).tar.gz /var/lib/zookeeper
    4. 将备份拷贝到安全位置(异地/对象存储)
    5. 启动 Kafka:sudo systemctl start kafka
  • 恢复步骤:
    1. 停止 Kafka:sudo systemctl stop kafka
    2. 清空或重命名损坏的数据目录(谨慎操作,先确认备份可用)
    3. 解压恢复:
      sudo tar -xzvf kafka_data_YYYY-MM-DD.tar.gz -C /
      sudo tar -xzvf kafka_config_YYYY-MM-DD.tar.gz -C /
      (ZooKeeper 同理)
    4. 修正权限(以实际运行用户为准,常见为 kafka:kafka):
      sudo chown -R kafka:kafka /var/lib/kafka /var/lib/zookeeper
    5. 启动 Kafka:sudo systemctl start kafka
    6. 验证:列出 Topic、检查分区与副本、抽样消费验证数据。

三 方法二 在线逻辑备份与恢复(不停机,按 Topic/时间窗口)

  • 适用场景:按 Topic 导出、跨集群迁移、误删少量消息回滚、开发/测试环境快速拉数。
  • 全量导出单个 Topic:
    BACKUP_TOPIC=test
    BACKUP_DIR=/tmp/backup
    mkdir -p $BACKUP_DIR
    kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic $BACKUP_TOPIC --from-beginning --timeout-ms 60000 > $BACKUP_DIR/$BACKUP_TOPIC.txt
  • 全量导入:
    RESTORE_TOPIC=test
    BACKUP_FILE=$BACKUP_DIR/$RESTORE_TOPIC.txt
    kafka-console-producer.sh --broker-list localhost:9092 --topic $RESTORE_TOPIC --new-producer < $BACKUP_FILE
  • 批量/多 Topic:脚本化循环调用;大 Topic 建议分批按时间窗口导出,避免单文件过大与超时。
  • 注意:该方式依赖可重放语义,压缩/序列化格式需与业务消费端兼容;不建议作为唯一灾备手段。

四 方法三 增量与异地容灾(持续保护,低 RPO)

  • MirrorMaker 2(跨集群复制,适合灾备/演练/迁移):
    1. 准备源/目的集群地址与复制白名单/正则
    2. 使用 Kafka Connect 部署 MirrorMaker 2(推荐)或命令行工具,配置 source->dest 复制任务,按需设置 topics、复制因子、检查点等
    3. 监控复制延迟与 Lag,定期演练切换
  • 专用备份工具 kafka-backup(若仓库提供该包):
    1. 安装:sudo apt-get install confluent-kafka-backup
    2. 备份:kafka-backup --bootstrap-server localhost:9092 --backup-dir /backups/kafka(可配合 cron 定时)
    3. 恢复:按工具文档执行(通常涉及停写、清理目标目录、导入、校验)
  • 对象存储落地:结合 Kafka Connect S3 Sink 或 MirrorMaker 2 将 Topic 持续导出到 S3/GCS,实现低成本长期留存与异地恢复。

五 元数据备份与恢复要点

  • ZooKeeper 模式:定期导出关键 znode(如 /kafka/config/topics/kafka/brokers 等),发生故障时用于恢复 Topic 配置与集群元数据。
  • KRaft 模式:重点备份 __cluster_metadata 日志(可使用 kafka-dump-log.sh 工具导出校验),恢复时确保该日志完整一致。
  • 一致性校验:恢复后使用 kafka-topics.sh 与 kafka-consumer-groups.sh 校验分区与消费者组状态。

0