sudo systemctl stop zookeeper
snapshots、事務日志文件log.*)未損壞且包含所需數據。備份通常存儲在獨立目錄(如/backup/zookeeper_backup_YYYYMMDD)。/var/lib/zookeeper)中的所有文件,防止舊數據與新備份沖突。sudo rm -rf /var/lib/zookeeper/*
sudo cp -r /path/to/backup/zookeeper_backup_*/ * /var/lib/zookeeper/
zookeeper)有權訪問數據目錄。sudo chown -R zookeeper:zookeeper /var/lib/zookeeper
sudo systemctl start zookeeper
sudo systemctl status zookeeper # 確認狀態為"active (running)"
若需頻繁恢復,可編寫腳本簡化操作。示例如下:
#!/bin/bash
# 定義變量
DATA_DIR="/var/lib/zookeeper"
BACKUP_PATH="/path/to/backup/zookeeper_backup_20250101"
# 停止服務
sudo systemctl stop zookeeper
# 清空數據目錄
sudo rm -rf "${DATA_DIR}"/*
# 恢復數據
sudo cp -r "${BACKUP_PATH}"/* "${DATA_DIR}"/
# 設置權限
sudo chown -R zookeeper:zookeeper "${DATA_DIR}"
# 啟動服務
sudo systemctl start zookeeper
echo "Restore completed from: ${BACKUP_PATH}"
使用方法:將腳本保存為restore_zookeeper.sh,賦予執行權限后運行:
chmod +x restore_zookeeper.sh
./restore_zookeeper.sh
host1:port1為實際地址)。./zkCli.sh -server host1:2181
restore命令并指定備份的快照文件路徑(需提前將快照文件復制到Zookeeper節點)。restore /path/to/snapshot
注:
zkCli.sh的restore功能需配合快照文件使用,通常用于恢復單個節點的快照數據。
tar或rsync備份數據目錄(示例:tar -czvf zookeeper_backup_$(date +%F).tar.gz /var/lib/zookeeper)。/var/lib/zookeeper的權限(屬主應為zookeeper),否則服務可能無法正常啟動。