39

我们正在寻找 CouchdDB 的 CMS 应用程序。围绕备份我们的生产数据库有哪些常见模式、最佳实践和工作流程建议?

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

仅从实时运行的实例下复制磁盘上的文件就足够了吗?您可以在两个实时运行的实例之间克隆数据库数据吗?

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

4

6 回答 6

37

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

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

参考见:http ://wiki.apache.org/couchdb/FilesystemBackups

于 2008-09-23T17:33:44.040 回答
32

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

https://docs.couchdb.org/en/latest/maintenance/backups.html

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

编辑:只要您可以接受 I/O 命中,您就可以从正在运行的数据库下 cp 出数据目录中的 .couch 文件。

于 2008-09-23T15:13:29.337 回答
7

我想支持 Paul 的建议:cp如果您可以承受 I/O 负载的冲击,只需从实时服务器下获取您的数据库文件即可。如果您仍然运行复制副本,您也可以安全地从中复制,而不会影响您的主服务器的性能。

于 2008-09-24T11:18:44.290 回答
7

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

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

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

于 2008-12-27T20:41:27.063 回答
1

CouchDB 复制是可怕的。我通常会做tar,这要好得多。

  1. 停止源主机上的 CouchDB 服务
  2. tar.gz 数据文件。
  3. 在我的 Ubuntu 服务器上,这通常位于 /var/lib/couchdb 中(有时位于基于 Couch 版本的子目录中)。如果您不确定这些文件在哪里,您可以在您的 CouchDb 配置文件中找到路径,或者通常通过执行 ps -A w 查看启动 CouchDb 的完整命令。.确保获得以存档文件开头的子目录。
  4. 重新启动源主机上的 couchdb 服务。
  5. scptar.gz 文件到目标主机并将它们解压缩到那里的临时位置。
  6. chown文件到目标数据库目录中已经拥有文件的用户和组。这可能是 couchdb:couchdb。这很重要,因为弄乱文件权限是迄今为止我设法弄乱这个过程的唯一方法。
  7. 在目标主机上停止 CouchDB。
  8. cp文件到目标目录。在我的主机上,这又是 /var/lib/couchdb。
  9. 仔细检查他们新家中的文件权限。
  10. 在目标主机上重新启动 CouchDB。
于 2015-02-26T04:02:56.003 回答
0

我通过 powershell 和PSCouchDB模块使用命令Export-CouchDBDatabase 来完成

这会将整个数据库导出到一个 json 文件,您可以通过 import 命令重新导入该文件(请参阅链接)。

前任。

Export-CouchDBDatabase -Database test -Authorization "admin:password"

这会在当前目录中导出一个 json 文件:test_05-28-2021_17_01_00.json

于 2021-05-28T15:08:27.020 回答