sudo systemctl stop kafka
/var/lib/kafka/data)、配置文件備份(/etc/kafka)及Zookeeper數據備份(若使用Zookeeper)未被損壞,可通過tar -tzvf backup.tar.gz檢查內容。若之前通過tar或rsync備份了Kafka的數據目錄(默認/var/lib/kafka/data)、配置文件(/etc/kafka)及Zookeeper數據(/var/lib/zookeeper),可直接還原:
sudo tar -xzvf kafka_data_backup.tar.gz -C / # 解壓到根目錄覆蓋原路徑
# 或使用rsync同步(保留權限)
sudo rsync -a /backup/kafka_data_backup/ /var/lib/kafka/data/
sudo tar -xzvf kafka_config_backup.tar.gz -C / # 解壓到根目錄覆蓋原路徑
# 或使用rsync
sudo rsync -a /backup/kafka_config_backup/ /etc/kafka/
sudo tar -xzvf zookeeper_data_backup.tar.gz -C / # 解壓到根目錄覆蓋原路徑
# 或使用rsync
sudo rsync -a /backup/zookeeper_data_backup/ /var/lib/zookeeper/
sudo systemctl start kafka
若之前用kafka-dump導出了數據(生成.txt或.json文件),可通過以下步驟恢復:
# 假設備份文件在/tmp/backup/test.txt,恢復到test主題
kafka-console-producer.sh --broker-list localhost:9092 --topic test --new-producer < /tmp/backup/test.txt
kafka-console-consumer.sh消費主題,檢查數據是否完整:kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
若之前用kafka-backup(Confluent提供)做了增量備份,可按以下步驟恢復:
sudo yum install confluent-kafka-backup
# 假設備份目錄為/backup/kafka_incremental
kafka-backup --bootstrap-server localhost:9092 --restore-dir /backup/kafka_incremental --to-dir /var/lib/kafka/data/
sudo systemctl start kafka
若數據備份在另一個Kafka集群(如遠程備份集群),可通過MirrorMaker將數據同步到當前集群:
/tmp/mirror-maker.properties):consumer.bootstrap.servers=backup-host:9092 # 備份集群地址
producer.bootstrap.servers=localhost:9092 # 當前集群地址
whitelist=test # 需恢復的主題(支持正則)
kafka-run-class.sh kafka.tools.MirrorMaker --consumer.config /tmp/mirror-maker.properties --producer.config /tmp/mirror-maker.properties --whitelist test
test主題,確認數據同步完成。cron定時任務自動化備份,例如每天凌晨2點執行增量備份:0 2 * * * /usr/bin/kafka-backup --bootstrap-server localhost:9092 --backup-dir /backup/kafka_daily_incremental
/var/log/kafka/server.log),及時發現并解決錯誤(如磁盤空間不足、權限問題)。通過以上方法,可根據數據丟失場景選擇合適的恢復策略,確保Kafka數據在CentOS系統上的安全性和可用性。