将Solr 4.1索引还原到事务日志的时间点?

时间:2013-12-27 08:33:28

标签: solr

我意外地删除了我的有用文件,删除了所有文件并插入其他文件。我注意到我有事务日志。有没有办法将索引恢复到某个时间点?

BTW,它有用但不重要的数据,但有些人可能需要恢复关键的东西: - )

3 个答案:

答案 0 :(得分:0)

我不确定如何恢复丢失的数据(或者如果可能的话)。但为了防止再次发生这种情况,您可以使用Solr的复制来创建定期备份。配置看起来像这样:

<requestHandler name="/replication" class="solr.ReplicationHandler" >
  <lst name="master">
    <str name="enable">true</str>
    <str name="replicateAfter">commit</str>
    <str name="replicateAfter">optimize</str>

    <str name="backupAfter">optimize</str>
    <str name="maxNumberOfBackups">3</str>
  </lst>
</requestHandler>

Solr Replication Configuration

中描述了完整配置选项

答案 1 :(得分:0)

目前看来,没有你不能使用tlogs。

阅读“Hard commits, soft commits and transaction logs”之后,尤其是关于交易日志的第一个较小的部分

  

事务日志(tlog):为恢复目的而编写原始文档的文件。在SolrCloud中,每个节点都有自己的tlog。在更新时,整个文档将写入tlog。对于Atomic Updates,它仍然是整个文档,包括从旧版本文档中读取的数据。换句话说,写入tlog的文档不是原子更新的“delta”。 Tlog对于一致性至关重要,如果JVM在段关闭之前停止,它们将用于使索引更新。

因此,tlog用于数据一致性而非备份。

答案 2 :(得分:0)

参考答案: It is possible to restore document in solr usinf tlog file

我也遇到了同样的问题,我找到了一个解决方案(解决方法):打开您的tlog文件,然后在文件“ƒD`-SOLR_TLOG_END”的末尾删除,然后启动Solr,将tlog文件的内容编入索引/ commitet索引。在我的测试用例中,我只在文件夹中放置了一个tlog文件。

要找出应删除的字符,只需在管理Web界面的“文档”下添加一个示例文档,该文档的“提交范围”值为100000,之后立即停止solr。在solr进行提交之前停止solr是很重要的(在时间之内的提交应该很高)。然后将新的tlog文件复制到桌面或其他文件夹上。再次启动solr并比较两个文件,然后将tlog添加到索引solr后,您会看到在solr后面附加了“ƒD`-SOLR_TLOG_END”字符串。

简短信息:如果solr在没有提交的情况下中断,则tlog用于将文档添加到索引。如果solr再次启动,则使用tlog将未提交的文档添加到索引中。