温馨提示×

linux zookeeper怎么备份数据

小樊
37
2026-09-22 18:31:53
栏目: 智能运维

在 Linux 下备份 ZooKeeper 数据,通常有以下几种常见方式,按推荐程度和使用场景说明:


一、最常用:直接备份数据目录(推荐)

ZooKeeper 的所有数据都存储在 dataDir 中(在 zoo.cfg 里配置)。

1. 查看数据目录

grep dataDir /etc/zookeeper/conf/zoo.cfg
# 或
grep dataDir $ZOOKEEPER_HOME/conf/zoo.cfg

示例:

dataDir=/var/lib/zookeeper/data

2. 停止 ZooKeeper(最安全)

systemctl stop zookeeper
# 或
zkServer.sh stop

3. 备份数据目录

tar czf zk-data-backup-$(date +%F).tar.gz /var/lib/zookeeper/data

4. 启动 ZooKeeper

systemctl start zookeeper

✅ 优点:简单、可靠
❌ 缺点:需要短暂停服


二、不停机备份(生产常用)

ZooKeeper 使用 事务日志 + 快照,可以直接拷贝。

1. 同时备份 dataDir 和 dataLogDir

tar czf zk-backup-$(date +%F).tar.gz \
  /var/lib/zookeeper/data \
  /var/lib/zookeeper/log

⚠️ 拷贝时可能有写操作,但 ZooKeeper 能处理,恢复时以快照+日志重放为准

✅ 优点:无需停服
✅ 适合生产环境


三、使用 ZooKeeper 自带快照(自动)

ZooKeeper 会自动生成快照:

ls /var/lib/zookeeper/data
# 类似
snapshot.100000  snapshot.200000

你可以:

  • 定期 rsync 快照目录
  • 保留最近 N 个快照
rsync -avz /var/lib/zookeeper/data/ backup-server:/zk/backup/

四、使用 zkCli 导出节点数据(逻辑备份)

适合只备份部分配置数据。

zkCli.sh -server localhost:2181

导出:

get /my/config > config-backup.txt

或用脚本遍历:

zkCli.sh -server localhost:2181 ls /

✅ 适合配置型数据
❌ 不适合大规模数据


五、集群环境备份建议

  • 只需备份一个节点(数据一致)
  • 推荐:
    • 每天定时 tar 备份
    • 保留 7~30 天
    • 异地存储(NFS / 对象存储)

示例 crontab:

0 2 * * * tar czf /backup/zk-$(date +\%F).tgz /var/lib/zookeeper

六、恢复数据

  1. 停止 ZooKeeper
  2. 清空原 dataDir
  3. 解压备份
  4. 启动 ZooKeeper
zkServer.sh stop
rm -rf /var/lib/zookeeper/data/*
tar xzf zk-backup.tar.gz -C /
zkServer.sh start

如果你愿意,可以告诉我:

  • 单机还是集群
  • ZooKeeper 版本
  • 是否可停服

我可以给你一套可直接用的备份脚本。

0 踩