温馨提示×

Debian Kafka数据备份与恢复怎么做

小樊
48
2025-09-08 10:54:07
栏目: 智能运维

一、备份

1. 全量备份

  • 工具1:kafka-console-consumer.sh
    备份指定主题数据到文件:

    BACKUP_TOPIC=test
    BACKUP_DIR=/tmp/backup
    mkdir -p $BACKUP_DIR
    kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic $BACKUP_TOPIC --from-beginning > $BACKUP_DIR/$BACKUP_TOPIC.txt
    

    注意:同步阻塞,大数据量时建议用异步方式。

  • 工具2:kafka-dump
    备份整个Kafka数据目录:

    sudo apt-get install kafka-dump
    kafka-dump --bootstrap-server localhost:9092 --output-dir /path/to/backup
    
  • 工具3:kafka-backup(推荐)
    增量备份(需先安装):

    sudo apt-get install confluent-kafka-backup
    mkdir -p /path/to/backup
    kafka-backup --bootstrap-server localhost:9092 --backup-dir /path/to/backup
    

2. 增量备份

仅能通过第三方工具实现,常用 MirrorMaker

# 配置源和目标地址
SOURCE=localhost:9092
DESTINATION=backup-host:9092
cat > /tmp/mirror-maker.properties <<EOF
consumer.bootstrap.servers=$SOURCE
producer.bootstrap.servers=$DESTINATION
EOF
# 执行同步(指定主题)
kafka-run-class.sh kafka.tools.MirrorMaker --consumer.config /tmp/mirror-maker.properties --producer.config /tmp/mirror-maker.properties --whitelist "topic1,topic2"

二、恢复

1. 全量恢复

  • 从文件恢复

    BACKUP_FILE=/tmp/backup/test.txt
    RESTORE_TOPIC=test
    kafka-console-producer.sh --broker-list localhost:9092 --topic $RESTORE_TOPIC --new-producer < $BACKUP_FILE
    
  • 从目录恢复(kafka-dump/kafka-backup)
    停止Kafka服务后,将备份文件/目录复制回原位置,重启服务:

    sudo systemctl stop kafka
    sudo cp -r /path/to/backup/* /var/lib/kafka/data/  # 假设备份的是数据目录
    sudo systemctl start kafka
    

2. 增量恢复

使用 MirrorMaker 将增量数据同步到目标集群:
配置与增量备份类似,通过--whitelist指定需恢复的主题,运行同步命令即可。

三、注意事项

  1. 服务状态:备份/恢复前务必停止Kafka服务,避免数据不一致。
  2. 存储位置:备份文件需存放在安全可靠的存储(如异地磁盘或云存储),定期清理过期备份。
  3. 测试恢复:定期验证备份文件的可恢复性,确保数据完整。

参考来源:[1,2,3,4,5,6,7,8,9,10]

0