在 Linux 环境下,ZooKeeper 的备份主要分为数据备份和配置备份两部分。下面按常见、推荐的方式说明。
ZooKeeper 的关键文件通常包括:
数据目录(dataDir)
/var/lib/zookeepermyidversion-2/(事务日志 + 快照)日志目录(dataLogDir,若单独配置)
配置文件
zoo.cfglog4j.properties、java.env如果是生产环境,建议:
zkServer.sh stop
如果是集群,可逐个节点备份(ZooKeeper 本身支持多副本)。
cp -r /var/lib/zookeeper /backup/zookeeper-$(date +%F)
cp /etc/zookeeper/conf/zoo.cfg /backup/
ZooKeeper 支持在线备份,因为快照是原子的。
tar czf zookeeper-backup-$(date +%F).tar.gz \
/var/lib/zookeeper \
/etc/zookeeper/conf/zoo.cfg
注意:在线拷贝时可能包含正在写入的事务日志,但恢复时 ZooKeeper 会自动处理。
echo "snapshot" | nc localhost 2181
然后立即备份 version-2 目录。
适合迁移或审计:
zkCli.sh -server localhost:2181
导出节点:
ls /
get /path
或写脚本批量导出(如用 Python + kazoo)。
示例:每天凌晨备份
0 2 * * * tar czf /backup/zk-$(date +\%F).tgz /var/lib/zookeeper /etc/zookeeper
zkServer.sh stop
rm -rf /var/lib/zookeeper
cp -r /backup/zookeeper-2026-01-15 /var/lib/zookeeper
zkServer.sh start
⚠️ 集群恢复时,确保所有节点数据一致,否则可能选主异常。
如果你愿意,我可以: