我使用solr实现搜索引擎,每天导入最少200万个doc。 用户必须尽快搜索导入的文档(接近实时)。
我使用2个专用的Windows x64和tomcat 6(Solr shard模式)。每台服务器,索引约1.2亿doc,约220 GB(总计500 GB)。
我希望在更新或搜索期间从solr索引文件获得备份增量。
搜索之后,找到UNIX的rsync工具和Windows的DeltaCopy(Windows的GUI rsync)。但在更新过程中会收到错误(消失)。
如何解决这个问题。
注意1:文件大小非常大时,文件复制速度很慢。因此我不能用这种方式。
注意2:如果Windows崩溃或硬件重置或任何其他问题,我可以在更新期间防止损坏的索引文件吗?
答案 0 :(得分:15)
您可以使用ReplicationHandler将Solr的数据目录复制到本地系统的其他位置,从而进行热备份(即写入索引时)。然后用该目录做任何你喜欢的事情。您可以随时通过转到以下URL来启动备份:
http://host:8080/solr/replication?command=backup&location=/home/jboss/backup
显然你可以用wget + cron编写脚本。
更多细节可以在这里找到:
http://wiki.apache.org/solr/SolrReplication
Lucene in Action一书中有一节关于Lucene的热备份,在我看来,Solr的ReplicationHandler中的代码使用了与此处概述的相同的策略。其中一本书的作者甚至详细阐述了它在another StackOverflow answer中是如何运作的。
答案 1 :(得分:8)
更新索引时不要运行备份。你可能会得到一个腐败的(因此无用的)备份。
解决它的一些想法: