CouchDB备份忽略零星文件

问题描述 投票:1回答:1

我有一个CouchDB的设置(CouchDB的2.1.1),我的应用程序,这在很大程度上依赖于复制的完整性。我们使用的是“每个用户一个DB”的方针,以“角色”分贝的附加层:■该组的用户像下面的图片。

最近,同时增加了beta测试者的数量,我们发现有些文件还没有被复制,因为他们应该。我们无法看到文件大小,创建/更新时间,用户或其他任何图案。这些错误似乎发生零星,以2-3成功复制文档,然后4-6非复制的文档。

该服务器上的文档{"error":"not_found","reason":"missing"}响应。

用户文件的大多数(但不是全部)已被复制到相应的角色DB,但很少它使所有的方式到主数据库。与<100个文件(现在我们在DB 1000-1200文档)测试时,这从来没有发生过。

我发现了一个问题,在Performance chapter in the docs提到的“最大打开的文件”设置,并固定它,但不复制文件仍然没有复制。如果我打开一个文档并保存它,它会复制。

这是我目前的理论:

  1. 复制过程试图复制新的文档,当用户上线
  2. 刻录过程失败,因为linux的“max_open_files”见顶
  3. 主DB仍然认为复制成功
  4. 在以后的复制,主数据库会忽略那些旧文件,只有尝试复制新的

难道这是正确的吗?而且我可以以某种方式使CouchDB的服务器“双重检查”所有文件和以前复制的完整性?

感谢您的时间和任何有益的意见!

Couch replication schema

couchdb couchdb-2.0
1个回答
2
投票

我所经历过类似的东西 - 试图复制文件没有足够的权限,因为它应该做的复制失败的时候。但是,当权限问题是固定的文件,你试图复制不能再被复制,但编辑/保存的文件修复该问题。我不知道这是由于检查站?该CouchDb manual说,有关“use_checkpoints”标志:

禁用检查点,不建议作为CouchDB的将扫描从一开始就喂源数据库的变化。

虽然从一开始就扫描听起来像它可能会解决问题,所以也许禁用检查点可能会有帮助。我从来没有回到这个问题的时候,所以我恐怕这不是一个合适的回答,只是一个建议。

© www.soinside.com 2019 - 2024. All rights reserved.