【问题标题】:Lucene index backupLucene 索引备份
【发布时间】:2011-08-19 08:38:26
【问题描述】:

在不使索引脱机(热备份)的情况下备份 lucene 索引的最佳做法是什么?

【问题讨论】:

  • Lucene 在行动中规定了一种使用 SnapshotDeletionPolicy 的方法,但没有解释更多。也就是说,虽然已经通过 SnapshotDeletionPolicy 获得了 IndexWriter,但其他 IndexWriter 可以写入索引吗?如果没有,“this”IndexWriter 可以写入索引吗?

标签: java lucene


【解决方案1】:

您不必为了备份索引而停止 IndexWriter。

只需使用 SnapshotDeletionPolicy,它可以让您“保护”给定的提交点(及其包含的所有文件)不被删除。然后,将该提交点中的文件复制到您的备份中,最后释放该提交。

如果备份需要一段时间才能运行,这很好——只要您不使用 SnapshotDeletionPolicy 释放提交点,IndexWriter 就不会删除文件(例如,即使它们已经合并在一起)。

这为您提供了一致的备份,它是索引的时间点映像,不会阻塞正在进行的索引。

我在 Lucene in Action(第 2 版)中对此进行了描述,并且有一篇论文摘自来自http://www.manning.com/hatcher3 的书(免费)“使用 Lucene 的热备份”,其中更详细地描述了这一点。

【讨论】:

  • 感谢您的回复!在本书中,虽然我是否总是可以为我的 IndexWriters 使用 SnapshotDeletionPolicy 装饰器并不清楚。由于我将只为我的应用程序使用一个不会经常关闭的 IndexWriter,它是否可以始终使用 SnapshotDeletionPolicy 或者这会影响性能?
  • 你可以一直使用它;性能不会有真正的变化。
【解决方案2】:

使用单独的 IndexWriter 创建一个新索引,并使用 addIndexesNoOptimize() 将正在运行的索引合并到新索引中。这很慢,但它可以让您在进行备份时保持原始索引正常运行。

但是,合并时不能写入索引。所以即使它在线并且可以查询索引,在备份过程中也不能写入。

【讨论】:

  • 这是我以前做的,但是如你所说,不热,慢。因此,最好的解决方案是 cp -lr 方法,因为它只需要毫秒。
  • 是的,务实更好,让索引离线一段时间比缓慢、缓慢的半热复制更可取:)
【解决方案3】:

在我看来,停止任何正在进行的索引操作并简单地获取索引文件的文件副本通常就足够了。另请查看来自 Solr 的 snapshooter 脚本,该脚本可以在 apache-solr-1.4.1/src/scripts 中找到,它实际上是:

cp -lr indexLocation backupLocation

另一种选择可能是查看Directory.copy(..) 例程的程序化方法(例如,使用与IndexWriter 的构造函数参数相同的目录。您可能还对Snapshooter.java 感兴趣相当于脚本。

【讨论】:

    【解决方案4】:

    这个答案取决于 (a) 您的索引有多大和 (b) 您使用的是什么操作系统。它适用于托管在 Unix 操作系统上的大型索引,并且基于 Solr 1.3 复制策略。

    一旦文件被创建,Lucene 不会改变它,它只会删除它。因此,您可以使用硬链接策略进行备份。方法是:

    • 停止索引(并进行提交?),这样您就可以确保不会在写入过程中快照
    • 创建索引文件的硬链接副本(使用 cp -lr)
    • 重新开始索引

    cp -lr 只会复制目录结构而不是文件,因此即使是 100Gb 的索引也应该在不到一秒的时间内复制。

    【讨论】:

    • 您的答案似乎是性能最高的,但是:1. 仅适用于支持硬链接的文件系统 2. 要求停止所有索引操作。有没有别的办法?
    • 如果您的文件系统不支持硬链接,那么您将不得不复制文件,虽然速度较慢,但​​仍然有效。实际上,它不需要停止索引操作,它只需要在复制发生时不进行任何提交/写入。
    • 这恐怕意味着应该停止索引(允许搜索)。无论如何,您的答案可能是最好的尝试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    相关资源
    最近更新 更多