代码之家  ›  专栏  ›  技术社区  ›  Kyle Burton

couchdb备份和克隆数据库

  •  36
  • Kyle Burton  · 技术社区  · 16 年前

    我们正在查找couchddb以获得CMS ISH应用程序。关于备份我们的生产数据库,有哪些常见的模式、最佳实践和工作流建议?

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

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

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

    5 回复  |  直到 6 年前
        1
  •  31
  •   Marc Gear    16 年前

    couchdb支持复制,所以只需复制到couchdb的另一个实例并从中进行备份,避免干扰写入更改的位置。

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

    实际上,您向CouchDB实例发送一个post请求,告诉它复制到哪里,它就工作了(tm)

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

        2
  •  37
  •   Paul J. Davis    16 年前

    另一件需要注意的事情是,您可以从活动数据库下复制文件。考虑到您可能有一个很大的数据库,您可以将它OOB从您的测试/生产机器复制到另一台机器上。

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

    有关参考,请参见: http://wiki.apache.org/couchdb/FilesystemBackups

        3
  •  7
  •   Peter Mortensen icecrime    9 年前

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

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

    但在移动数据库文件时,一定要确保使用完全相同的couchdb版本。磁盘上的格式仍在以不兼容的方式发展。

        4
  •  6
  •   Peter Mortensen icecrime    9 年前

    我想支持保罗的建议:只是 cp 如果您可以接受I/O-LOAD命中,那么您的数据库文件将位于Live Server下。如果您仍然运行一个复制副本,您也可以从中安全地进行复制,而不会影响主服务器的性能。

        5
  •  0
  •   Peter Mortensen icecrime    9 年前

    CouchDB复制很糟糕。我通常这样做 tar 哪个好多了。

    1. 停止源主机上的couchdb服务
    2. tar.gz数据文件。
    3. 在我的Ubuntu服务器上,这通常在/var/lib/couchdb中(有时在基于coach版本的子目录中)。如果您不确定这些文件在哪里,可以在couchdb配置文件中找到路径,或者经常通过执行ps-a w来查看启动couchdb的完整命令。确保您得到以开头的子目录 . 当你存档文件时。
    4. 在源主机上重新启动couchdb服务。
    5. scp tar.gz文件到目标主机,并将它们解包到那里的一个临时位置。
    6. chown 指向用户和组的文件,该用户和组拥有目标上数据库目录中已存在的文件。这很可能是couchdb:couchdb。这一点很重要,因为到目前为止,文件权限的混乱是我管理混乱此过程的唯一方式。
    7. 停止目标主机上的CouchDB。
    8. cp 将文件放入目标目录。在我的主机上,这也是/var/lib/couchdb。
    9. 再次检查他们新家中的文件权限。
    10. 在目标主机上重新启动couchdb。