我在Windows 8系统上将CouchDB从1.4更新到2.0。 我已经备份了我的数据并从/ var / lib / couchdb查看文件并卸载了1.4。
成功安装2.0并运行。 现在我将所有数据复制到/ var / lib / couchdb和/ data文件夹,但是futon没有显示任何数据库。
我创建了一个新的数据库“test”,它可以在蒲团中访问,但我在/ data目录中找不到它。
配置:
default.ini:
[couchdb]
uuid =
database_dir = ./data
view_index_dir = ./data
另外我想了解:升级是否需要重新编制索引?
答案 0 :(得分: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
:这就是所谓的< i>本地端口从未打算用于生产,但在这里很有帮助。)
由于本地端口不是永久性解决方案,您现在可以启动从本地端口到群集端口的复制(仍然引用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(运行)复制到新的CouchDB,因为您可以在1.x和2.0之间进行复制,就像您可以在1.x和1.x之间复制一样
答案 1 :(得分:0)
使用它来迁移驻留在CouchDB的 database_dir 中的所有数据库,例如的/ var / lib中/ 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
如果在同一个docker主机上的docker容器中运行源和目标CouchDB,则可能首先检查映射到源容器的docker主机IP,以便允许源容器访问目标容器
/sbin/ip route|awk '/default/ { print $3 }'