我们正在考虑使用CouchdDB进行CMS-ish应用程序.有关备份我们的生产数据库的常见模式,最佳实践和工作流建议有哪些?
我对克隆数据库以用于开发和测试的过程特别感兴趣.
仅仅从正常运行的实例下复制磁盘上的文件是否足够?你能在两个实时运行的实例之间克隆数据库数据吗
我们将非常感谢您使用的技术的建议和描述.
另一件需要注意的事情是,您可以从实时数据库中复制文件.鉴于您可能有一个可能很大的数据库,您可以将它从测试/生产机器复制到另一台机器.
根据计算机的写入负载,建议在复制后触发复制以收集复制文件时正在进行的任何写入.但复制一些记录仍然比复制整个数据库更快.
有关参考,请参阅:http://wiki.apache.org/couchdb/FilesystemBackups
CouchDB支持复制,因此只需复制到另一个CouchDB实例并从那里进行备份,避免干扰写入更改的位置.
http://wiki.apache.org/couchdb/FrequentlyAskedQuestions#how_replication
你真的发送一个POST请求到你的CouchDB实例告诉它在哪里复制,它的工作原理(tm)
编辑:只要您可以接受I/O命中,您就可以从正在运行的数据库中删除文件.
CouchDB也可以很好地处理现代文件系统(如ZFS)提供的文件系统快照.由于数据库文件始终处于一致状态,因此您可以随时获取文件的快照,而不会削弱CouchDB提供的完整性保证.
这导致几乎没有I/O开销.如果您有意外删除数据库中的文档,您可以将快照移动到另一台计算机并在那里提取丢失的数据.您甚至可以复制回生产数据库,但我从未尝试过.
但总是确保在移动数据库文件时使用完全相同的couchdb修订版.磁盘格式仍然以不兼容的方式发展.
我想提出Paul的建议:cp
如果您可以接受I/O负载命中,那么只需要在实时服务器下提供数据库文件.如果您仍然运行复制的副本,您也可以安全地从中复制,而不会影响主人的表现.