Couchdb 1.x удален с моего сервера, переустановлен Couchdb 3.x, как мне заставить мои старые файлы с расширением .couch работать с ним?

#couchdb #ubuntu-18.04

#couchdb #ubuntu-18.04

Вопрос:

Доброе утро.

Мы уже довольно давно запускаем couchdb на нашем сервере Ubuntu (18.04) без проблем. К сожалению, ИТ-отдел недавно выполнил ряд обновлений, которые многое испортили на сервере. Нам удалось восстановить и запустить большую его часть, но мы все еще боремся с couchdb.

Наш веб-сайт Python flask не загружался, и журнал ошибок показал, что он не смог получить доступ к couchdb. После расследования мы поняли, что couchdb был полностью удален с сервера.

Мы переустановили couchdb, но установленная версия — версия 3, и, согласно подсказке, которую мы получили во время установки, наши файлы в /var/ lib/couchdb предназначены для версии 1, для которой они рекомендуют использовать replicator tool для их обновления до версии 3.

Мы безуспешно пытались это сделать, следуя этому руководству и этому. Я могу ошибаться, потому что я не эксперт по couchdb, но, похоже, проблема в том, что в этих руководствах рассказывается, как реплицировать базу данных из уже запущенной couchdb, которой у нас на данный момент нет (только недавно установленная версия без базы данных в ней).

В настоящее время Python flask может подключаться к couchdb (недавно установленному), но не находит никакой базы данных, и при попытке получить доступ к базам данных вручную с помощью команд couchdb нам просто предлагается:

 {"error":"not_found","reason":"Database does not exist."}
 

У нас есть резервная копия файлов couchdb, они выглядят как куча файлов с расширением .couch. Они также все еще находятся в /var/lib/couchdb .

Вопрос в том, как мы можем заставить эти файлы .couch работать с нашей недавно установленной версией couchdb?

Заранее спасибо всем, кто может помочь с этим.

Ответ №1:

Наконец-то мне удалось это сделать, и вот как:

Я установил более старую версию Ubuntu server на виртуальной машине (я использовал VirtualBox) и установил couchdb 1.6. Я вручную добавил свои файлы .couch в /var/lib/couchdb с помощью FileZilla. Я проверил, что все работает нормально, и это сработало.

После этого я обновил couchdb 1.6 до couchdb 2.3 и использовал инструмент couchup, который поставляется с couchdb 2 (обратите внимание, что для couchdb 2 и 3 требуется установить пароль администратора). На этой странице показано, как его использовать. Сценарий couchup находится в /opt/couchdb/bin.

Я перешел в эту папку и запустил следующее:

 $ python couchup list                                             # Shows your unmigrated 1.x databases
$ python couchup replicate -a --login admin --password password   # Replicates your 1.x DBs to 2.x
$ python couchup rebuild -a --login admin --password password     # Optional; starts rebuilding your views
$ python couchup delete -a --login admin --password password      # Deletes your 1.x DBs (careful!)
$ python couchup list                                             # Should show no remaining databases!
 

Оказывается, базы данных couchdb 2.x отлично работают с couchdb 3, поэтому больше ничего не нужно. Я загрузил реплицированные базы данных на свой развернутый сервер, и он сразу же заработал.

ИНФОРМАЦИЯ: обратите внимание, что с couchdb 1 каждая создаваемая вами база данных отображается как один файл. (например, db1.couch, db2.couch и т. Д.), Но с couchdb 2 и 3 все они находятся в файле _dbs.couch (возможно, вы захотите перенести осколки, _users.couch идругие файлы в /var/lib/couchdb, чтобы убедиться, что все работает хорошо).

ИНФОРМАЦИЯ 2: утилита couchup по умолчанию установлена только с couchdb 2, у вас ее не будет, если вы сразу перейдете к couchdb 3. Однако couchup — это всего лишь скрипт на python, и я считаю, что его можно загрузить с этой страницы github, поэтому вам может даже не понадобиться устанавливать couchdb 2 (я не пробовал это таким образом, поэтому никаких гарантий).