温馨提示×

Linux Zookeeper数据备份与恢复方法

小樊
36
2025-11-28 20:22:37
栏目: 智能运维

Linux Zookeeper数据备份与恢复方法

一 备份方法

  • 文件系统快照法(停机一致性最好)
    • 停止服务:sudo systemctl stop zookeeper
    • 确认数据目录:grep "^dataDir" /etc/zookeeper/conf/zoo.cfg
    • 打包备份:sudo tar -czvf zookeeper-backup-$(date +%Y%m%d%H%M%S).tar.gz /var/lib/zookeeper
    • 同时备份配置:sudo cp /etc/zookeeper/conf/zoo.cfg zookeeper-backup-$(date +%Y%m%d%H%M%S).conf
    • 记录日志:echo "Backup created at $(date): /path/to/...tar.gz" >> /var/log/zookeeper-backup.log
    • 说明:适合单节点或已停机的维护窗口;对集群建议逐台在维护窗口内执行,避免脑裂与数据漂移。
  • 在线导出法(不停机,适合小体量或关键子树)
    • 连接客户端:/opt/zookeeper/bin/zkCli.sh -server localhost:2181
    • 全量导出:[zk: localhost:2181(CONNECTED)] dump / > /backup/zookeeper-dump-$(date +%Y%m%d%H%M%S).json
    • 子树导出:[zk: localhost:2181(CONNECTED)] dump /myapp > /backup/myapp-dump.json
    • 说明:基于四字命令导出,仅含节点数据与元数据,不含本地事务日志;恢复需逐节点重建或使用脚本导入。
  • 远程同步法(近实时、增量)
    • 本地到远端:rsync -avz --delete /var/lib/zookeeper/ backup@10.0.0.10:/backup/zookeeper/$(date +%Y%m%d%H%M%S)
    • 远端到本地:rsync -avz --delete backup@10.0.0.10:/backup/zookeeper/latest/ /var/lib/zookeeper/
    • 定时任务:将命令加入 crontab -e 实现日常增量备份与异地落地。

二 恢复方法

  • 文件系统快照恢复(停机恢复)
    • 停止服务:sudo systemctl stop zookeeper
    • 备份当前数据目录:sudo mv /var/lib/zookeeper /var/lib/zookeeper.bak-$(date +%Y%m%d%H%M%S)
    • 还原数据:sudo tar -xzvf zookeeper-backup-YYYYMMDDHHMMSS.tar.gz -C /
    • 还原配置:sudo cp zookeeper-backup-YYYYMMDDHHMMSS.conf /etc/zookeeper/conf/zoo.cfg
    • 启动与校验:sudo systemctl start zookeeperecho ruok | nc localhost 2181 返回 imok 表示就绪。
  • 在线导出数据导入(不停机或滚动恢复)
    • 连接客户端:/opt/zookeeper/bin/zkCli.sh -server localhost:2181
    • 使用脚本/工具读取导出的 JSON 并逐节点 create -s/-eset 写入;对顺序节点需按业务规则重建。
    • 校验:抽样 get /pathls /path 核对子节点与数据。
  • 远程同步回灌(近实时)
    • 将远端最新备份目录回灌至本地数据目录后,重启服务并校验:sudo systemctl restart zookeeper && echo ruok | nc localhost 2181

三 关键注意事项

  • 一致性优先:文件系统快照建议在停机窗口执行;在线导出适合容忍轻微延迟与额外导入工作的场景。
  • 目录与配置:恢复时确保 dataDirdataLogDir(若配置)与 zoo.cfg 一致;多节点集群按相同流程逐台处理,避免版本与配置漂移。
  • 版本兼容:跨大版本恢复需评估存储格式与特性兼容性,先在测试环境验证。
  • 备份留存与异地:至少保留近7天关键时点(如发布前)备份,异地/离线存储提升容灾能力。
  • 定期演练:定期执行恢复演练与校验(抽样节点、数据量、ACL、顺序节点),确保备份可用。

四 快速命令清单

  • 备份
    • 停机快照:sudo systemctl stop zookeeper && tar -czvf zookeeper-backup-$(date +%Y%m%d%H%M%S).tar.gz /var/lib/zookeeper && sudo systemctl start zookeeper
    • 在线导出:/opt/zookeeper/bin/zkCli.sh -server localhost:2181 dump / > /backup/zk-dump-$(date +%Y%m%d%H%M%S).json
    • 远程增量:rsync -avz --delete /var/lib/zookeeper/ backup@10.0.0.10:/backup/zookeeper/$(date +%Y%m%d%H%M%S)
  • 恢复
    • 快照还原:sudo systemctl stop zookeeper && tar -xzvf zookeeper-backup-YYYYMMDDHHMMSS.tar.gz -C / && sudo systemctl start zookeeper
    • 健康检查:echo ruok | nc localhost 2181

0