CouchDB резервное копирование и клонирование базы данных
мы смотрим на CouchdDB для приложения CMS-ish. Каковы некоторые общие шаблоны, лучшие практики и рекомендации по рабочему процессу, связанные с резервным копированием нашей производственной базы данных?
меня особенно интересует процесс клонирования базы данных для использования в разработке и тестировании.
достаточно ли просто скопировать файлы на диск из-под текущий запущенный экземпляр? Можно ли клонировать данные базы данных между двумя работающими экземплярами?
советы и описание методов, которые вы используете, будет очень оценено.
5 ответов
CouchDB поддерживает репликацию, поэтому просто реплицируйтесь на другой экземпляр CouchDB и резервное копирование оттуда, избегая беспокоить, где вы пишете изменения.
http://wiki.apache.org/couchdb/FrequentlyAskedQuestions#how_replication
вы буквально отправляете запрос POST на ваш экземпляр CouchDB, сообщая ему, куда реплицироваться, и он работает(tm)
EDIT: вы можете просто вырезать файлы из-под работающей базы данных, пока вы можете примите удар I/O.
другое дело, что вы можете копировать файлы из-под живой базы данных. Учитывая, что у вас может быть большая база данных, вы можете просто скопировать ее OOB с тестовой/производственной машины на другую машину.
в зависимости от загрузки записи машин может быть целесообразно запустить репликацию после копирования, чтобы собрать все записи, которые были в процессе копирования файла. Но репликация нескольких записей все равно будет быстрее, чем репликация вся база данных.
Для справки см.: http://wiki.apache.org/couchdb/FilesystemBackups
CouchDB также очень хорошо работает с моментальными снимками файловой системы, предлагаемыми современными файловыми системами, такими как ZFS. Поскольку файл базы данных всегда находится в согласованном состоянии, вы можете сделать снимок файла в любое время без ослабления гарантий целостности, предоставляемых CouchDB.
Это приводит к почти никаким накладным расходам ввода-вывода. Если вы, например, случайно удалили документ из базы данных, вы можете переместить снимок на другой компьютер и извлечь отсутствующие данные там. Возможно, вы даже сможете реплицироваться обратно в рабочую базу данных, но я никогда не пробовал.
но всегда убедитесь, что вы используете точно такие же версии couchdb при перемещении файлов базы данных. Формат на диске по-прежнему развивается несовместимым образом.
Я хотел бы поддержать предложение пола: просто cp
ваши файлы базы данных из-под живого сервера, если вы можете принять удар ввода-вывода. Если вы все равно запустите реплицированную копию, вы также можете безопасно скопировать ее, не влияя на производительность вашего мастера.
репликация CouchDB ужасна. Я вообще делаю деготь что гораздо лучше.
- остановите службу CouchDB на исходном хосте
- деготь.gz файлы данных.
- на моих серверах Ubuntu это обычно находится в /var/lib/couchdb (иногда в подкаталоге на основе версии Couch). Если вы не уверены, где находятся эти файлы, вы можете найти путь в конфигурационных файлах CouchDb или часто делая ps-a w, чтобы увидеть полную команду, которая начал в CouchDB. Убедитесь, что вы получаете подкаталоги, которые начинаются с
.
при архивировании файлов. - перезапустите службу couchdb на исходном хосте.
-
scp
тдо.GZ файл на хост назначения и распаковать их во временном месте там. -
chown
файлы для пользователя и группы, которой принадлежат файлы, уже находящиеся в каталоге базы данных в месте назначения. Это, вероятно, couchdb: couchdb. Это важно, так как перепутать файл разрешения-это единственный способ, которым мне удалось испортить этот процесс до сих пор. - остановить CouchDB на хосте назначения.
-
cp
файлы в целевой каталог. Снова на моих хостах это был /var/lib / couchdb. - дважды проверьте права доступа к файлам в своем новом доме.
- перезапустите CouchDB на хосте назначения.