从事务日志中及时将Solr 4.1索引恢复到piint



我意外地替换了我有用的文档,删除了所有文档并插入了其他文档。我注意到我有交易日志。有没有办法将索引从同一时间点恢复到某个时间点?

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

我不知道如何恢复丢失的数据(或者是否可能)。但是,为了防止这种情况再次发生,您可以使用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复制配置中进行了描述

按照目前的情况,不,您不能为此使用tlog。

在阅读了"硬提交、软提交和事务日志"之后,尤其是关于事务日志的第一小节

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

所以tlog是为了数据一致性而不是备份。

参考答案:可以在solr usinf tlog文件中恢复文档

我也遇到了同样的问题,我找到了一个解决方案(解决方法):打开你的tlog文件,删除文件末尾的"ƒD`-SOLR_tlog_end",然后启动你的SOLR,tlog文件的内容被索引/commitet到索引。在我的测试用例中,我在文件夹中只包含一个tlog文件。

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

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

最新更新