如何备份Zookeeper?

piwo6bdm  于 2023-04-18  发布在  Apache
关注(0)|答案(6)|浏览(362)

我已经读到复制数据目录将工作.但是,这是日志和快照的组合.人们如何备份zookeeper基础设施?导出?转储?自定义脚本?什么是最佳实践?

piztneat

piztneat1#

Zookeeper一旦确定有足够的事务并且每个新的快照完全取代旧的快照就写一个快照。所以最新的快照+从快照开始的事务日志就足以恢复到当前状态。为了使计算更容易,您只需备份最后3个快照(在最新快照损坏的情况下)和与最早快照对应的时间戳中的事务日志。下面的链接提供了更多详细信息。

  1. http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_dataFileManagement
  2. http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
uhry853o

uhry853o2#

有一个非常好的工具叫做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/'
h9vpoimq

h9vpoimq3#

Netflix为此提供了一个名为exhibitor的解决方案。这是一个 “ZooKeeper协同进程,用于示例监控,备份/恢复,清理和可视化。”

kpbpu008

kpbpu0084#

我只是有同样的要求,发现大多数可用的选项要么不工作,要么需要大量的定制。
我发现的最佳选择是Guano,这是一个小型Java应用程序,它从声明的节点开始递归地访问树中的每个节点,并将其转储到匹配的目录结构中,因此您最终得到的是一个结构类似于实际树的普通文件目录结构。
你也可以通过要求它从树中的任何一点递归地恢复来恢复这些备份。我认为这对于备份和探索都是非常好的。例如,我立即从根使用ack来查找所有我关心的条目的文件。
这很容易扩展到一个适当的备份,只需将其作为一个cron作业,并添加一个zip步骤,将整个备份压缩到一个归档中,并处理任何需要的旋转。
该工具有几个缺点:
1.因为它在Github上的立场,由于缺少一些导入,原始版本无法编译。一些人已经制作了PR或fork来解决这个问题,例如https://github.com/feldoh/guano,这是我的fork,我也在其中改进了文档。我现在也预编译了jar,并将二进制文件推入https://bintray.com/feldoh/Guano/guano
1.它只转储数据,这有利于探索,但会丢失元数据,如mTime或数据版本。诚然,恢复可能应该算作更新,所以我不能说这真的是一件坏事,但它不是一个真正的时间点恢复。
注:我已经做了我自己的Zookeeper编辑器,因为我有类似的问题,找到一个工作,并满足我的需要。取决于你什么时候读这https://github.com/feldoh/JZookeeperEdit也可能有一个导出功能。问题13/14涵盖这个计划的功能。

zrfyljdw

zrfyljdw5#

请考虑将https://github.com/boundary/zoocreeper.Carefull与其他工具一起使用,如burry.sh或zk_shell。这些工具将快照旧的临时znode并将其恢复为新集群的持久znode,这将导致协调器问题。
更多信息:What is the use case of an ephemeral znode of zookeeper?

lc8prwob

lc8prwob6#

我们正在修改zkConfig.py脚本,这是安装zookeeper时的一个贡献项目。它允许您通过python脚本与zookeeper交互。
我们正在修改脚本,以便每天晚上轻松地转储和保存整个内容,然后备份文件。

相关问题