我们正在考虑使用CouchdDB进行CMS-ish应用程序。有关备份我们的生产数据库的常见模式,最佳实践和工作流建议有哪些?

我对克隆数据库以用于开发和测试的过程特别感兴趣。

仅仅从正常运行的实例下复制磁盘上的文件是否足够?你能在两个实时运行的实例之间克隆数据库数据吗?

非常感谢您使用的技巧的建议和描述。

有帮助吗?

解决方案

CouchDB支持复制,因此只需从那里复制到另一个CouchDB实例并进行备份,避免干扰您更改的位置。

http://wiki.apache.org/couchdb/FrequentlyAskedQuestions#how_replication

你真的向你的CouchDB实例发送一个POST请求,告诉它要复制到哪里,并且它可以工作(tm)

编辑:只要您可以接受I / O匹配,您就可以从正在运行的数据库中删除文件。

其他提示

另一件需要注意的事情是,您可以从实时数据库中复制文件。鉴于您可能有一个可能很大的数据库,您可以将它从测试/生产机器复制到另一台机器。

根据计算机的写入负载,建议在复制后触发复制以收集复制文件时正在进行的任何写入。但复制一些记录仍然比复制整个数据库更快。

供参考,请参阅: http://wiki.apache.org/couchdb/FilesystemBackups

CouchDB也可以很好地处理现代文件系统提供的文件系统快照,例如 ZFS 。由于数据库文件始终处于一致状态,因此您可以随时获取文件的快照,而不会削弱CouchDB提供的完整性保证。

这导致几乎没有I / O开销。如果您有例如不小心从数据库中删除了一个文档,您可以将快照移动到另一台机器并在那里提取丢失的数据。您甚至可以复制回生产数据库,但我从未尝试过。

但总是确保在移动数据库文件时使用完全相同的couchdb修订版。磁盘格式仍然以不兼容的方式发展。

我想提出Paul的建议:如果你可以接受I / O-load命令,只需 cp 你的数据库文件就可以从实时服务器下面了。如果您仍然运行复制副本,您也可以安全地从中复制,而不会影响主人的表现。

CouchDB复制非常糟糕。我通常会更好地 tar

  1. 停止源主机上的CouchDB服务
  2. tar.gz数据文件。
  3. 在我的Ubuntu服务器上,这通常位于/ var / lib / couchdb中(有时在基于Couch版本的子目录中)。如果您不确定这些文件的位置,可以在CouchDb配置文件中找到路径,或者通常通过执行ps -A来查看启动CouchDb的完整命令。存档文件时,请确保获得以开头的子目录。
  4. 在源主机上重新启动couchdb服务。
  5. scp 将tar.gz文件发送到目标主机并将其解压缩到那里的临时位置。
  6. chown 将文件发送给拥有目标数据库目录中已有文件的用户和组。这很可能是couchdb:couchdb。这很重要,因为弄乱文件权限是我到目前为止设法弄乱这个过程的唯一方法。
  7. 在目标主机上停止CouchDB。
  8. cp 将文件放入目标目录。再次在我的主机上,这是/ var / lib / couchdb。
  9. 仔细检查新家中的文件权限。
  10. 在目标主机上重新启动CouchDB。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top