我有一个34Gb的数据库(在服务器A上),我想在创建数据库本身的副本后删除部分文档以提高性能。 遵循以下步骤:
我希望确保使用副本数据库将已删除的文档恢复到原始数据库中(如果需要)。 所以我尝试从本地副本使用 pull 到数据库,或者从副本到数据库使用 push 。
什么也没发生,0文件补充说,我无法“重新导入”文件。
怎么了?
答案 0 :(得分:4)
他们不应该回来!复制是双向的,对文档的最新更改会覆盖旧版本,但删除总是获胜。
嗯......几乎总是。
在一个副本中删除文档时,会在其位置留下“删除存根”。只要该副本存在于副本中,另一个副本中的该文档的版本将不会复制回来。存根阻止它。这就是删除胜利的原因。
但在称为“清除间隔”的一段时间后,存根被清除。默认清除间隔为30天。从副本中清除存根后,删除不能再赢了,因为没有任何东西可以阻止旧版本从另一个副本复制回来。问题是,通常这是一件坏事。通常在删除文档时,您希望它们保持删除状态。你不希望它们重新出现只是因为有人将副本保留了31天。
现在,您可以尝试一些方法来仔细控制此过程,清除存根并使用其他内容(例如,选择性复制设置)以防止删除,除非您希望它们。有一些方法可以尝试,但是一个副本中有一个设置,并且繁荣!坏事发生了。其中包括任何副本,包括您未仔细控制的副本。这是个坏主意。我完全赞同@ Karl-Henry。
此外,选择性复制是邪恶的,应该不惜一切代价避免。无论如何,这只是我的意见,但是在我得出结论之前的几天里,我留下了很多伤疤。
以下是关于副本存根和清除间隔的两个Lotus技术说明:Purging documents in Lotus Notes,How to purge document deletion stubs immediately。请明智地使用您从这些技术中学到的东西。我强烈建议您不要使用这些知识来尝试构建基于复制的备份/恢复方案!
答案 1 :(得分:0)
我会非常小心地使用副本作为这样的存档。我可以看到有人以错误的方式复制,这会导致一些问题...... 我在这里为我的几个大数据库设计了一些归档解决方案。我只是将一个单独的数据库(相同的设计)指定为归档。然后,我有一个手动触发或预定的代理(在不同的数据库中不同),用于标识要归档的文档并将它们从生产数据库移动到归档。然后,我有了将文档移回所需生产的功能。