15

我已阅读复制数据目录将起作用。但是,这是日志和快照的组合。人们如何备份 zookeeper 基础设施?出口 ?倾倒 ?自定义脚本?最佳做法是什么?

4

5 回答 5

21

一旦 Zookeeper 确定它有足够的事务并且每个新快照完全取代旧快照,它就会写入快照。所以最新的快照+快照时的事务日志就足够恢复到当前状态了。为了使计算更容易,您可以简单地备份最后 3 个快照(以防最新快照损坏)和最早快照对应的时间戳中的事务日志。下面的链接有更多详细信息。

  1. http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_dataFileManagement
  2. http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
于 2011-06-24T11:30:11.790 回答
6

有一个非常好的工具叫做zk-shell它可以用 Zookeeper 做大量的事情。它有一个mirror命令可以递归地将整个 Zookeeper 树复制到 Zookeeper 或本地 JSON 文件。

来源和文档:https ://github.com/rgs1/zk_shell

在 Centos 7 上安装:

yum install python2-pip
pip install zk_shell

将 zookeeper 树备份到本地 JSON 文件的示例/tmp/zookeeper-backup.json

zk-shell localhost:2181 --run-once 'mirror / json://!tmp!zookeeper-backup.json/'
于 2018-11-21T09:42:13.710 回答
4

我只是有同样的要求,发现大多数可用选项要么不起作用,要么需要大量定制。

我发现的最佳选择是 Guano,它是一个小型 Java 应用程序,它从声明的节点开始递归地访问树中的每个节点并将其转储到匹配的目录结构中,因此您最终会得到一个普通文件的目录结构,其结构类似于实际的树。

您还可以通过要求它从该树中的任何点递归还原来还原这些备份。我认为这对于备份和探索都非常好。例如,我立即从根目录使用 ack 来查找所有包含我关心的条目的文件。

这很容易扩展到适当的备份,只需将其作为 cron 作业并添加一个 zip 步骤以将整个备份压缩到存档中并处理所需的任何轮换。

该工具有一些缺点:

  1. 由于它在 Github 上的立场,由于缺少一些导入,原版无法编译。有几个人制作了解决此问题的 PR 或分叉,例如https://github.com/feldoh/guano这是我的分叉,其中我还改进了文档。我现在还预编译了 jar,并将二进制文件推送到https://bintray.com/feldoh/Guano/guano
  2. 它只转储数据,这有利于探索,但会丢失元数据,例如 mTime 或数据版本。诚然,恢复可能应该算作更新,所以我不能说它真的是一件坏事,但它不是真正的时间点恢复。

注意:我制作了自己的 Zookeeper 编辑器,因为我在寻找一个可以满足我需求的工作时遇到了类似的问题。根据您阅读此内容的时间, https://github.com/feldoh/JZookeeperEdit也可能具有导出功能。第 13/14 期涵盖了这个计划中的功能。

于 2015-09-12T13:54:57.103 回答
4

Netflix 为此提供了一个解决方案,称为“参展商” 。这是一个“用于实例监控、备份/恢复、清理和可视化的 ZooKeeper 协同过程”。

于 2015-11-16T06:25:06.857 回答
-1

我们正在修改 zkConfig.py 脚本,该脚本是您安装 zookeeper 时的一个贡献项目。它允许您通过 python 脚本与 zookeeper 交互。

我们正在修改脚本,以便每晚轻松转储和保存整个内容,然后备份文件。尽管我也很想听听其他人对此的解决方案。

于 2011-06-21T15:48:18.530 回答