Как вы делаете резервную копию Zookeeper? - PullRequest
9 голосов
/ 18 июня 2011

Я прочитал, что копирование каталога данных будет работать. Но это комбинация журналов и снимков. Как люди делают резервную копию инфраструктуры зоопарка? Экспорт? Дамп? Пользовательский скрипт? Каковы лучшие практики?

Ответы [ 5 ]

15 голосов
/ 24 июня 2011

Zookeeper записывает снимок, как только он определяет, что у него достаточно транзакций, и каждый новый снимок полностью заменяет старые. Таким образом, последний моментальный снимок + журнал транзакций с момента создания моментального снимка достаточно для восстановления до текущего состояния. Чтобы упростить вычисления, вы можете просто сделать резервную копию последних 3 снимков (в случае повреждения последней привязки) и журналов транзакций с отметки времени, соответствующей самому раннему снимку. Ссылки ниже имеют некоторые подробности.

  1. http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_dataFileManagement
  2. http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
3 голосов
/ 16 ноября 2015

Netflix предоставил решение для этого, названного экспонентом . Это "ZooKeeper-совместный процесс для мониторинга экземпляров, резервного копирования / восстановления, очистки и визуализации."

3 голосов
/ 12 сентября 2015

У меня было такое же требование, и я обнаружил, что большинство доступных опций либо не работают, либо требуют большой настройки.

Лучшим вариантом, который я нашел, было Guano, маленькое Java-приложение, которое рекурсивно посещает каждый узел в дереве, начиная с объявленного узла, и выгружает его в соответствующую структуру каталогов, так что вы получаете структуру каталогов простых файлов, которые структурирован как фактическое дерево.

Вы также можете восстановить эти резервные копии, попросив их восстановить рекурсивно из любой точки этого дерева. Я думаю, что это довольно хорошо как для резервного копирования, так и для исследования. Например, я сразу использовал ack из корня, чтобы найти все файлы с записью, которая меня волновала.

Это легко превратить в правильную резервную копию, просто поместив ее как задание cron и добавив шаг zip, чтобы сжать всю резервную копию в архив, а также обработать любую необходимую ротацию.

У инструмента есть несколько недостатков:

  1. На Github оригинал не компилируется из-за отсутствия нескольких импортов. Несколько человек сделали PR или вилки, которые решают эту проблему, такие как https://github.com/feldoh/guano, который является моей вилкой, в которой я также улучшил документы. Я также сейчас предварительно скомпилировал банку и буду вставлять двоичные файлы в https://bintray.com/feldoh/Guano/guano.
  2. Он сбрасывает только данные, что хорошо для исследования, но теряет метаданные, такие как mTime или версия данных. По общему признанию, восстановление, вероятно, должно считаться обновлением, поэтому я не могу сказать, что это действительно плохо, но это не настоящее восстановление на момент времени.

NB. Я создал свой собственный редактор Zookeeper, поскольку у меня были похожие проблемы с поиском одного из них, который работал и отвечал моим потребностям. В зависимости от того, когда вы читаете это https://github.com/feldoh/JZookeeperEdit может также иметь функцию экспорта. Проблемы 13/14 охватывают эту запланированную функцию.

2 голосов
/ 21 ноября 2018

Есть очень хороший инструмент под названием zk-shell, который может делать огромное количество вещей с Zookeeper. Он имеет команду mirror, которая может рекурсивно копировать все дерево Zookeeper в / из Zookeeper или локальный файл JSON.

Источник и документация: https://github.com/rgs1/zk_shell

Установка на Centos 7:

yum install python2-pip
pip install zk_shell

Пример для резервного копирования дерева зоопарка в локальный файл JSON:

zk-shell localhost:2181 --run-once 'mirror / json://!tmp!zookeeper-backup.json/'
0 голосов
/ 21 июня 2011

Мы модифицируем скрипт zkConfig.py, который является проектом, добавленным при установке zookeeper. Это позволяет вам взаимодействовать с Zookeeper с помощью скрипта Python.

Мы модифицируем сценарии, чтобы каждый вечер легко сохранять и сохранять все содержимое, а затем делать резервные копии файлов. Хотя мне было бы любопытно услышать и решения других людей на этот счет.

...