2016-11-16 4 views
2

Я обновляю CouchDB от 1.4 до 2.0 на моей системе Windows 8. Я взял резервную копию своих данных и просмотрел файлы из/var/lib/couchdb и удалил 1.4.Перемещение данных CouchDb с 1.4 до 2.0

Установлен 2.0 успешно и работает. Теперь я скопировал все данные в папку/var/lib/couchdb и/data, но futon не показывает какую-либо базу данных.

Я создал новую базу данных «test» и ее доступную в футоне, но я не смог найти ее в каталоге/data dir.

Конфигурация:

default.ini: 
[couchdb] 
uuid = 
database_dir = ./data 
view_index_dir = ./data 

Кроме того, я хочу, чтобы понять, что: модернизирует требуют повторной индексации?

ответ

2

Возможно, вы захотите посмотреть на локальный порт узла, на который вы скопировали данные: когда вы просто скопируете файлы данных, это, скорее всего, будет работать, но они появятся в другом порту (5986 вместо 5984).

Что это означает: при копировании файла базы данных (лиц, проживающих в каталоге, указанном в /_config/couchdb/database_dir и заканчивая .couch, цитируя https://blog.couchdb.org/2016/08/17/migrating-to-couchdb-2-0/ здесь) в каталог данных одного из узлов кластера CouchDB 2.0 (например, lib/node1/data), база данных будет отображаться в http://localhost:5986/_all_dbs (примечание 5986 вместо 5984: это так называемый местный порт, который никогда не предназначался для производства, но полезен здесь).

Как локальный порт не является постоянным решением, теперь вы можете начать репликацию с локального порта на кластерной порт (по-прежнему цитирую https://blog.couchdb.org/2016/08/17/migrating-to-couchdb-2-0/ - если вы имеете дело с базой данных с именем mydb в результате имя файла mydb.couch):

# create a clustered new mydb on CouchDB 2.0 
curl -X PUT 'http://machine2:5984/mydb' 

# replicate data (local 2 cluster) 
curl -X POST 'http://machine2:5984/_replicate' -H 'Content-type: application/json' -d '{"source": "http://machine2:5986/mydb", "target": "http://machine2:5984/mydb"}' 

# trigger re-build index(es) of somedoc with someview; 
# do for all to speed up first use of application 
curl -X GET 'http://machine2:5984/mydb/_design/_view/?stale=update_after' 

в качестве альтернативы, вы можете также скопировать из старого CouchDB (бег) на новый, как вы можете реплицировать между 1.x и 2.0 так же, как вы могли бы повторить между 1.x и 1.x

0

Используйте это, чтобы перенести все базы данных, находящиеся в CouchDB database_dir, например. /вар/Библиотека/CouchDB

# cd to database dir, where all .couchdb files reside 
cd /var/lib/couchdb 

# create new databases in the target instance 
for i in ./*.couch; do curl -X PUT http://machine2:5986$(echo $i | grep -oP '[^.]+(?=.couch)'); done 

# one-time replication of each database from source to target instance 
for i in ./*.couch; do curl -X POST http://machine1:5984/_replicate -H "Content-type: application/json" -d '{"source": "'"$(echo $i | grep -oP '[^./]+(?=.couch)')"'", "target": "http://machine2:5986'$(echo $i | grep -oP '[^.]+(?=.couch)')'"}'; done 

Если вы работаете как источник и цель CouchDB в пределах Docker контейнера на том же Docker хоста, вы можете сначала проверить докер хоста IP, который отображается в источник контейнер, чтобы позволить контейнеру-источнику доступа к целевому контейнеру

/sbin/ip route|awk '/default/ { print $3 }' 
Смежные вопросы