我有一台运行应用程序的生产服务器,该应用程序使用CouchDB作为其主数据库。我想设置一个具有CouchDB实例的登台服务器,我可以随时将其同步回生产实例并获得干净的副本。
一个天真的解决方案就是让登台服务器不断复制生产服务器的数据库,并使用它。问题当然是在测试登台服务器的过程中,我可能会做一些修改数据库的事情。
功能正确的是我每次都要删除数据库并从生产中重新复制;但是,如果我每次都必须从头开始,这显然需要很长的时间。
我正在寻找类似的解决方案:1)在登台服务器上保留生产数据库的原始副本,即不断重新索引其视图2)将包括索引在内的所有数据库文件复制到名为其他内容的数据库中3)使用它并在完成后将其吹走。
有没有人尝试过这样的事情?复制db文件并重命名它们是否能顺利运行?如果是这样,哪些文件需要复制和不需要复制?
答案 0 :(得分:2)
你的方法是我推荐的。将DB和索引文件复制到新名称可以按预期工作。
检查/_config/couchdb
,查看database_dir
和view_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
检查正确的所有者和群组。