/var/lib/zookeeper(可通过grep "dataDir" /etc/zookeeper/conf/zoo.cfg确认)。/etc/zookeeper/conf。sudo systemctl stop zookeeper
使用tar命令将数据目录打包为压缩文件(文件名包含时间戳,便于管理):
sudo tar -czvf zookeeper-data-backup-$(date +%Y%m%d%H%M%S).tar.gz /var/lib/zookeeper
同样使用tar命令备份配置文件:
sudo tar -czvf zookeeper-config-backup-$(date +%Y%m%d%H%M%S).tar.gz /etc/zookeeper/conf
将备份时间、文件名等信息记录到日志文件,方便后续查找:
echo "Backup completed at $(date)" >> /var/log/zookeeper-backup.log
echo "Data backup file: /path/to/zookeeper-data-backup-$(date +%Y%m%d%H%M%S).tar.gz" >> /var/log/zookeeper-backup.log
echo "Config backup file: /path/to/zookeeper-config-backup-$(date +%Y%m%d%H%M%S).tar.gz" >> /var/log/zookeeper-backup.log
使用rsync命令实现增量备份(仅同步变化的文件):
sudo rsync -av --delete /var/lib/zookeeper /backup/zookeeper-data
sudo rsync -av --delete /etc/zookeeper/conf /backup/zookeeper-config
可将此命令添加到crontab中(如每天凌晨3点执行):
crontab -e
# 添加以下内容
0 3 * * * sudo rsync -av --delete /var/lib/zookeeper /backup/zookeeper-data && sudo rsync -av --delete /etc/zookeeper/conf /backup/zookeeper-config
连接到Zookeeper集群:
./zkCli.sh -server localhost:2181
在客户端中执行save命令创建快照(快照会保存到数据目录的version-2子目录):
save
退出客户端:
quit
sudo systemctl stop zookeeper
data目录、config目录和快照文件可用。将数据目录和配置文件的备份解压到原路径:
# 解压数据目录
sudo tar -xzvf /path/to/zookeeper-data-backup-*.tar.gz -C /
# 解压配置文件
sudo tar -xzvf /path/to/zookeeper-config-backup-*.tar.gz -C /etc/zookeeper/
解压完成后,启动Zookeeper服务:
sudo systemctl start zookeeper
使用zkCli.sh连接Zookeeper,检查数据是否恢复:
./zkCli.sh -server localhost:2181
ls /
# 查看具体节点数据
get /your_node_path
quit
若之前使用zkCli.sh save创建了快照,可将快照文件复制到数据目录并重启服务:
# 停止服务
sudo systemctl stop zookeeper
# 删除原数据目录内容(谨慎操作!)
sudo rm -rf /var/lib/zookeeper/*
# 复制快照文件(假设快照在/var/lib/zookeeper/version-2/snapshot.123)
sudo cp /var/lib/zookeeper/version-2/snapshot.123 /var/lib/zookeeper/
# 启动服务
sudo systemctl start zookeeper
log.*),恢复时无需单独处理,Zookeeper会自动合并快照和日志。通过以上步骤,可在Ubuntu上完成Zookeeper数据的备份与恢复,确保数据安全性和系统可靠性。