Ubuntu下Zookeeper备份策略
全量备份是Zookeeper备份的基础,通过打包数据目录(dataDir)实现,包含某一时刻的所有znode树状态(节点路径、数据、ACL、会话信息等)。
sudo systemctl stop zookeeper;/var/lib/zookeeper,可通过grep "dataDir" /etc/zookeeper/conf/zoo.cfg确认);tar命令打包数据目录(文件名包含时间戳,便于管理):sudo tar -czvf zookeeper-backup-$(date +%Y%m%d%H%M%S).tar.gz /var/lib/zookeeper;sudo systemctl start zookeeper。增量备份仅备份自上次全量/增量备份以来修改的文件,节省存储空间和备份时间。
tar的-g选项(指定快照文件):sudo tar -czvf zookeeper-backup-incremental-$(date +%Y%m%d%H%M%S).tar.gz -g /tmp/zookeeper_snapshot.snap /var/lib/zookeeper(/tmp/zookeeper_snapshot.snap为快照文件,需提前创建);Zookeeper内置的快照机制,会定期(默认每10万次事务)将内存中的全量数据dump到磁盘(存储在dataDir/version-2目录下,文件名为snapshot.xxxxxx,xxxxxx为事务ID)。
zkCli.sh连接集群,执行save /target/path(将当前状态保存到指定路径);dataDir/version-2目录下的snapshot.xxxxxx文件复制到备份存储(如/backup/zookeeper/snapshot)。Zookeeper的事务日志(dataLogDir/version-2目录下的log.xxxxxx文件)记录了所有数据变更操作(如创建/删除节点、更新数据),结合快照可实现完整恢复。
dataDir相同,可通过zoo.cfg中的dataLogDir配置);tar命令打包version-2目录(如sudo tar -czvf zookeeper-log-backup-$(date +%Y%m%d%H%M%S).tar.gz /var/lib/zookeeper/version-2)。rsync是高效的文件同步工具,可实现Zookeeper数据的增量备份(仅传输变化的文件),适合远程备份。
sudo apt install rsync(Ubuntu默认已安装);rsync -avz --delete /var/lib/zookeeper/ user@remote_host:/path/to/remote/backup(--delete选项会删除远程备份中不存在的本地文件,保持一致性);crontab(如每天凌晨2点执行:0 2 * * * rsync -avz --delete /var/lib/zookeeper/ user@remote_host:/path/to/remote/backup)。save命令手动生成快照),避免备份过程中数据写入导致不一致。