一、Linux下Zookeeper备份策略
./zkCli.sh -server host:port连接到集群,执行save /path/to/snapshot命令,将当前集群状态保存到指定路径。此方式适用于手动触发的全量备份。dataLogDir/version-2目录,文件名如log.x),并定期(默认每10万次事务)触发快照(存于dataDir/version-2目录,文件名如snapshot.x)。快照是某一时刻的全量数据,事务日志记录了快照后的增量操作,两者结合可实现完整数据恢复。tar -czvf zookeeper_backup_$(date +%Y%m%d).tar.gz /path/to/zookeeper/data命令,将数据目录打包成压缩文件。可通过-g选项实现增量备份(如tar -czvf incremental.tar.gz -g /tmp/snapshot.snap /path/to/data)。rsync -avz --delete /local/data/dir/ user@remote:/remote/dir/命令,将本地数据同步到远程服务器。支持增量同步,适合异地备份。import org.apache.zookeeper.*;
import java.io.FileOutputStream;
public class Backup {
public static void main(String[] args) throws Exception {
ZooKeeper zk = new ZooKeeper("host:port", 3000, null);
byte[] data = zk.getData("/", false, null);
try (FileOutputStream fos = new FileOutputStream("/path/to/backup.dat")) {
fos.write(data);
}
zk.close();
}
}
适用于需要定制化备份逻辑的场景。/var/lib/zookeeper)。适用于数据量小、变动不频繁的场景,能保证数据一致性。/etc/zookeeper/conf/zoo.cfg),恢复时需确保配置正确。二、Linux下Zookeeper恢复策略
sudo systemctl stop zookeeper(或service zookeeper stop)。/var/lib/zookeeper),防止恢复失败导致数据丢失。命令:cp -r /var/lib/zookeeper /var/lib/zookeeper_backup_$(date +%Y%m%d)。snapshot.x)和事务日志文件(log.y,y>x),通常位于dataDir/version-2目录。rm -rf /var/lib/zookeeper/*)。cp /path/to/backup/snapshot.x /var/lib/zookeeper/、cp /path/to/backup/log.y /var/lib/zookeeper/)。sudo systemctl start zookeeper。tar -xzvf zookeeper_backup.tar.gz -C /)。tar -xzvf zookeeper_conf_backup.tar.gz -C /etc/zookeeper/conf)。sudo systemctl start zookeeper、sudo systemctl status zookeeper)。rsync -avz user@remote:/remote/backup/dir/ /local/data/dir/命令,将远程备份同步到本地数据目录。