Ubuntu 上 Zookeeper 备份与恢复实操指南
一 准备与定位
- 确认服务名与数据目录
- 服务名通常为:zookeeper(如使用 systemd 管理)。
- 数据目录由配置项 dataDir 指定,常见路径为:/var/lib/zookeeper 或 /data/zookeeper。
- 查看配置:grep “dataDir” /etc/zookeeper/conf/zoo.cfg。
- 一致性建议
- 为保证备份一致性,建议在备份前将服务置于维护状态或短暂停机;对集群环境,优先在非 Leader节点操作或确保集群写入暂停。
二 备份步骤
- 停止服务
- sudo systemctl stop zookeeper
- 备份数据目录
- 数据目录路径以 dataDir 为准(示例为 /var/lib/zookeeper):
- sudo tar -czvf zookeeper-backup-$(date +%Y%m%d%H%M%S).tar.gz /var/lib/zookeeper
- 备份配置文件
- sudo tar -czvf zookeeper-config-backup-$(date +%Y%m%d%H%M%S).tar.gz /etc/zookeeper/conf
- 可选 备份事务日志目录
- 若配置了 dataLogDir,一并备份(路径以实际配置为准):
- sudo tar -czvf zookeeper-log-backup-$(date +%Y%m%d%H%M%S).tar.gz /var/log/zookeeper
- 记录备份元数据
- echo “Backup completed at $(date): /path/to/zookeeper-backup-$(date +%Y%m%d%H%M%S).tar.gz” >> /var/log/zookeeper-backup.log
- 启动服务
- sudo systemctl start zookeeper
三 恢复步骤
- 停止服务
- sudo systemctl stop zookeeper
- 恢复数据目录
- 以数据目录 /var/lib/zookeeper 为例:
- sudo tar -xzvf zookeeper-backup-YYYYMMDDHHMMSS.tar.gz -C /
- 恢复配置文件
- sudo tar -xzvf zookeeper-config-backup-YYYYMMDDHHMMSS.tar.gz -C /etc/zookeeper/conf
- 可选 恢复事务日志目录
- 如曾备份 dataLogDir,执行对应解压覆盖操作(路径以实际配置为准)。
- 启动并验证
- sudo systemctl start zookeeper
- 健康检查:echo ruok | nc localhost 2181,返回 imok 表示服务正常
- 数据校验:使用 zkCli 连接并列出根节点
- ./zkCli.sh -server localhost:2181 ls /
四 自动化与远程备份建议
- 定时备份脚本示例
- 0 2 * * * root /usr/bin/tar -czvf /backup/zookeeper-backup-$(date +%Y%m%d%H%M%S).tar.gz /var/lib/zookeeper /etc/zookeeper/conf && echo “Backup completed at $(date)” >> /var/log/zookeeper-backup.log
- 远程备份
- rsync 增量同步到备份主机:
- rsync -avz --delete /var/lib/zookeeper user@remote:/backup/zookeeper/
- 备份策略
- 定期执行全量备份,保留多份并按时间命名;定期做恢复演练验证可用性。
五 常见问题与注意事项
- 路径以实际环境为准:务必通过 zoo.cfg 的 dataDir(及 dataLogDir)确认目录,避免误覆盖。
- 一致性优先:备份期间尽量避免写入;对集群,先摘除或隔离待操作节点,恢复后按顺序启动并检查集群状态。
- 版本与兼容性:跨大版本恢复需谨慎,建议同版本恢复;如存在重大变更,先在测试环境验证。
- 校验与演练:每次恢复后进行数据与连通性校验,并定期演练恢复流程,确保备份有效。