Ubuntu系统下Ubuntu Kafka数据备份方法
在开始备份前,需确保已安装Kafka并正确配置(如server.properties
中log.dirs
指向数据目录,默认为/var/lib/kafka/data
)。同时,建议关闭Kafka服务以避免备份过程中数据变更(可通过sudo systemctl stop kafka
执行)。
步骤:
kafka-dump
(适用于Debian/Ubuntu系统):sudo apt-get install kafka-dump
--bootstrap-server
指定Kafka集群地址(如localhost:9092
),--output-dir
指定备份目录(如/path/to/backup
):kafka-dump --bootstrap-server localhost:9092 --output-dir /path/to/backup
此命令会将所有主题及分区的消息以二进制格式导出到指定目录。步骤:
confluent-kafka-backup
(由Confluent提供,支持增量备份):sudo apt-get install confluent-kafka-backup
mkdir -p /path/to/backup
--bootstrap-server
指定集群地址,--backup-dir
指定备份目录:kafka-backup --bootstrap-server localhost:9092 --backup-dir /path/to/backup
建议通过cron
设置定时任务(如每天凌晨2点执行),定期创建增量备份。步骤:
/usr/local/bin/backup_kafka.sh
):#!/bin/bash
BACKUP_DIR="/var/backups/kafka"
DATE=$(date +%Y%m%d%H%M%S)
mkdir -p "$BACKUP_DIR/$DATE"
tar -czvf "$BACKUP_DIR/$DATE/kafka-data-$DATE.tar.gz" /var/lib/kafka/data
find "$BACKUP_DIR" -type d -name 'kafka-data-*' -mtime +7 -exec rm -rf {} \;
脚本功能:将Kafka数据目录(/var/lib/kafka/data
)打包压缩,保留最近7天的备份。chmod +x /usr/local/bin/backup_kafka.sh
crontab -e
添加以下行,每天凌晨2点执行备份:0 2 * * * /usr/local/bin/backup_kafka.sh
步骤:
/tmp/mirror-maker.properties
):consumer.bootstrap.servers=localhost:9092 # 源集群地址
producer.bootstrap.servers=backup-host:9092 # 备份集群地址
whitelist=your_topic_name # 需备份的主题(支持正则,如"topic.*")
kafka-run-class.sh kafka.tools.MirrorMaker \
--consumer.config /tmp/mirror-maker.properties \
--producer.config /tmp/mirror-maker.properties \
--whitelist your_topic_name
此工具会将源集群数据实时同步到备份集群,实现增量备份。步骤:
sudo systemctl stop kafka
RESTORE_TOPIC
主题):kafka-console-producer.sh --broker-list localhost:9092 --topic RESTORE_TOPIC --new-producer < /path/to/backup/backup_file
kafka-backup --bootstrap-server localhost:9092 --restore-dir /path/to/backup
tar -xzvf /var/backups/kafka/kafka-data-YYYYMMDDHHMMSS.tar.gz -C /
sudo chown -R kafka:kafka /var/lib/kafka/data
sudo systemctl start kafka
增量恢复需结合kafka-backup
与MirrorMaker
,步骤与增量备份类似:通过MirrorMaker
将增量备份数据同步到目标集群。