工具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]