工具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
仅能通过第三方工具实现,常用 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"
从文件恢复:
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
使用 MirrorMaker 将增量数据同步到目标集群:
配置与增量备份类似,通过--whitelist指定需恢复的主题,运行同步命令即可。
参考来源:[1,2,3,4,5,6,7,8,9,10]