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