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
),否则服务可能无法正常启动。