Резервное копирование CouchDB и клонирование базы данных

Мы ищем CouchdDB для CMS-приложения. Каковы некоторые общие шаблоны, передовые методы и рекомендации по рабочему процессу, связанные с резервным копированием нашей производственной базы данных?

Меня особенно интересует процесс клонирования базы данных для использования в разработке и тестировании.

Достаточно ли просто скопировать файлы на диск из-под работающего экземпляра? Можно ли клонировать данные базы данных между двумя работающими экземплярами?

Мы будем очень благодарны за советы и описание методов, которые вы используете.


person Kyle Burton    schedule 23.09.2008    source источник


Ответы (6)


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

https://docs.couchdb.org/en/latest/maintenance/backups.html

Вы буквально отправляете POST-запрос на свой экземпляр CouchDB, сообщая ему, куда реплицировать, и он работает (tm)

РЕДАКТИРОВАТЬ: вы можете просто скопировать файлы .couch в каталог данных из-под работающей базы данных, если вы можете принять ввод-вывод.

person Marc Gear    schedule 23.09.2008
comment
Ссылка отсутствует. - person Darryl Wagoner WA1GON; 06.02.2021

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

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

Для справки см.: http://wiki.apache.org/couchdb/FilesystemBackups.

person Paul J. Davis    schedule 23.09.2008
comment
вы можете копировать файлы из-под действующей базы данных. Это отличный совет, я хотел продублировать базу данных и обнаружил, что могу продублировать и переименовать файл .couch в Finder, чтобы выполнить это. - person DigitalDesignDj; 16.01.2013

Я хотел бы поддержать предложение Пола: просто cp файлы вашей базы данных из-под работающего сервера, если вы можете выдержать нагрузку ввода-вывода. Если вы все равно запускаете реплицированную копию, вы можете безопасно копировать и из нее, не влияя на производительность вашего мастера.

person Jan Lehnardt    schedule 24.09.2008

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

Это приводит к почти полному отсутствию накладных расходов на ввод-вывод. Если у вас есть, например. случайно удалили документ из базы данных, вы можете переместить снимок на другую машину и извлечь оттуда недостающие данные. Возможно, вы даже сможете выполнить репликацию обратно в производственную базу данных, но я никогда этого не пробовал.

Но всегда следите за тем, чтобы при перемещении файлов базы данных вы использовали одни и те же версии Couchdb. Формат на диске все еще развивается несовместимыми способами.

person max    schedule 27.12.2008

Репликация CouchDB ужасна. Обычно я использую tar, что намного лучше.

  1. Остановите службу CouchDB на исходном хосте
  2. tar.gz файлы данных.
  3. На моих серверах Ubuntu это обычно находится в /var/lib/couchdb (иногда в подкаталоге, основанном на версии Couch). Если вы не уверены, где находятся эти файлы, вы можете найти путь в конфигурационных файлах CouchDb или часто с помощью ps -A w, чтобы увидеть полную команду, которая запустила CouchDb. Убедитесь, что вы получаете подкаталоги, начинающиеся с ., когда вы архивируете файлы.
  4. Перезапустите службу CouchDB на исходном хосте.
  5. scp файл tar.gz на целевой хост и распаковать их во временное место.
  6. chown файлы пользователю и группе, которым принадлежат файлы, уже находящиеся в каталоге базы данных в месте назначения. Вероятно, это coachdb:couchdb. Это важно, так как нарушение прав доступа к файлам — единственный способ, которым мне пока удалось испортить этот процесс.
  7. Остановите CouchDB на целевом хосте.
  8. cp файлы в целевой каталог. Опять же, на моих хостах это /var/lib/couchdb.
  9. Дважды проверьте права доступа к файлам в их новом доме.
  10. Перезапустите CouchDB на целевом хосте.
person coffeequant    schedule 26.02.2015
comment
Репликация — едва ли не единственное, в чем CouchDB действительно хороша — в этом весь смысл дизайна документа на основе ревизий. Я бы серьезно спросил, почему вы используете его, если не копируете. Кроме того, вам не нужно останавливать CouchDB для копирования файлов (ссылка: wiki.apache.org/couchdb /Резервные копии файловой системы) - person slang; 09.04.2015
comment
Ха-ха, нет, я не разработчик CouchDB — я просто использую его в некоторых внутренних аналитических системах VICE. И 20 ГБ не должны быть проблемой - если у вас произойдет сбой, я сообщу об этом Apache как об ошибке. - person slang; 10.04.2015
comment
Я думаю, что в некоторых случаях это правильный ответ, например, когда вы делаете новую установку чего-то, что использует CouchDB, или с новыми узлами репликации очень больших баз данных, когда HTTP-запросы являются ненужной перегрузкой. Серебряной пули не существует. Кстати, в Centos 6.6 файлы баз данных находятся в /usr/local/var/lib/couchdb. - person evalarezo; 02.06.2015

Я делаю это через powershell и модуль PSCouchDB командой Export-CouchDBDatabase.

Это экспортирует всю базу данных в файл json, который вы можете повторно импортировать с помощью команды импорта (см. ссылку).

ex.

Export-CouchDBDatabase -Database test -Authorization "admin:password"

этот экспортирует файл json в текущий каталог: test_05-28-2021_17_01_00.json

person reduce_mighty    schedule 28.05.2021