2011-07-26 14 views
0

我有一台生产服务器运行一个使用CouchDB作为其主数据库的应用程序。我想设置一个具有CouchDB实例的登台服务器,我可以随时将其备份到生产实例并获得干净的副本。使用couchdb进行分段设置

一个天真的解决方案只是让登台服务器连续复制生产服务器的数据库,并使用它。当然问题是,在登台服务器上进行测试的过程中,我可能会修改数据库。

功能上正确的是我每次删除数据库并从生产中重新复制;但显然如果每次都必须从头开始,这将需要很长的时间。

我正在寻找一个解决方案是这样的:1)保持在临时服务器上生产数据库的一个副本,那就是不断重新索引其观点2)复制所有数据库文件包括索引的数据库名为东西否则3)使用它并在完成时吹掉它。

有没有人曾经尝试过这样的事情,复制数据库文件并重命名他们甚至工作顺利吗?如果是这样,什么文件做和不需要被复制?

回答

2

你的方法是我会推荐的。将数据库和索引文件复制到一个新的名称按预期工作。

检查/_config/couchdb您的database_dirview_index_dir值,然后

cd $database_dir 
cp live_replica.couch local_copy_to_mess_with.couch 

cd $view_index_dir # most likely the same dir 
cp -r .live_replica_design .local_copy_to_mess_with_design 

确保所有其他文件在这些目录的所有者,例如运行这些命令couchbase,否则couchdb将无权使用您创建的文件。您可以使用ls -alR检查正确的所有者和群组。

+0

谢谢。我很高兴它像复制文件一样简单。 –

+1

我试过这个,我得到{“error”:“kill”,“reason”:“{gen_server,call,\ n [couch_server,\ n {open,<< \”cchq-staging \“>>,\ n [{user_ctx,\ n {user_ctx,<<\"admin\">>,\ n [<<\"_admin\">>],\ n << \“{couch_httpd_auth,default_authentication_handler} \”>>}}]},\ n infinity]}“} –

+0

当访问http :// admin:****** @ localhost:5984/{copied_db /。访问原始数据库的作品。我已经尝试过在没有已存在的{copied_db}的情况下执行此操作,并且结果相同。任何其他需要复制的文件? –