在 Ubuntu 上对 Kafka 进行数据备份与恢复
一 备份策略与前置准备
二 方法一 导出为文件的全量备份与恢复(简单、离线)
BACKUP_TOPIC=your_topic
BACKUP_DIR=/data/kafka/backup/$(date +%F)
mkdir -p "$BACKUP_DIR"
kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic "$BACKUP_TOPIC" \
--from-beginning \
--property print.key=true \
--property key.separator='|' \
> "$BACKUP_DIR/${BACKUP_TOPIC}.txt"
说明:开启 print.key=true 可同时保留 Key,用分隔符区分 Key/Value,便于后续精确恢复或重放。# Broker 配置
sudo tar czf /data/kafka/backup/$(date +%F)_broker_conf.tgz -C /opt/kafka/config .
# Topic 配置(需有权限)
kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic "$BACKUP_TOPIC" > "$BACKUP_DIR/${BACKUP_TOPIC}_meta.txt"
RESTORE_TOPIC=your_topic
BACKUP_FILE="$BACKUP_DIR/${RESTORE_TOPIC}.txt"
kafka-console-producer.sh \
--broker-list localhost:9092 \
--topic "$RESTORE_TOPIC" \
--property parse.key=true \
--property key.separator='|' \
< "$BACKUP_FILE"
三 方法二 跨集群镜像的增量备份与恢复(持续、容灾)
# /tmp/mirror-maker-consumer.properties
bootstrap.servers=source-kafka:9092
group.id=mirror-maker-consumer
auto.offset.reset=earliest
# /tmp/mirror-maker-producer.properties
bootstrap.servers=backup-kafka:9092
kafka-mirror-maker.sh \
--consumer.config /tmp/mirror-maker-consumer.properties \
--producer.config /tmp/mirror-maker-producer.properties \
--whitelist "your_topic|other_topic"
说明:新版本使用 kafka-mirror-maker.sh;老版本可用 kafka.tools.MirrorMaker。whitelist 支持正则匹配多主题。四 方法三 使用工具进行增量备份与恢复(kafka-backup)
sudo apt-get update
sudo apt-get install -y confluent-kafka-backup
BACKUP_DIR=/data/kafka/kafka-backup/$(date +%F)
mkdir -p "$BACKUP_DIR"
kafka-backup \
--bootstrap-server localhost:9092 \
--backup-dir "$BACKUP_DIR"
0 2 * * * /usr/bin/kafka-backup --bootstrap-server localhost:9092 --backup-dir /data/kafka/kafka-backup/$(date +\%F) >> /var/log/kafka-backup.log 2>&1
五 实践建议与注意事项