2010-07-11 40 views
2

我创建了solr 1.4索引,并希望针对大容量应用程序针对它进行查询。我查询的索引是静态的 - 不允许更新。一些客户端应用程序在服务器上请求CPU负载在四核ubuntu盒子上达到约200%,所以我想在第二个盒子上复制索引并并行运行以提高吞吐量。复制只读solr服务器

我关闭solr,将索引复制到一个单独的目录,配置solr服务器指向新的索引,并将它们都解雇了。尽管原始服务器像以前一样工作,但该副本未能找到任何文档。

当我这样做服务器上的目录列表,我看到有点奇怪的东西: 这是原来的索引目录

total 3581328 
-rw-r--r-- 1 gene pal 2502676419 2010-07-08 20:53 _38.fdt 
-rw-r--r-- 1 gene pal  488660 2010-07-08 20:53 _38.fdx 
-rw-r--r-- 1 gene pal  198 2010-07-08 20:53 _38.fnm 
-rw-r--r-- 1 gene pal 213752776 2010-07-08 20:54 _38.frq 
-rw-r--r-- 1 gene pal  366496 2010-07-08 20:54 _38.nrm 
-rw-r--r-- 1 gene pal 725677119 2010-07-08 20:54 _38.prx 
-rw-r--r-- 1 gene pal 1124453 2010-07-08 20:54 _38.tii 
-rw-r--r-- 1 gene pal 85260530 2010-07-08 20:54 _38.tis 
-rw-r--r-- 1 gene pal  280471 2010-07-08 20:54 _38.tvd 
-rw-r--r-- 1 gene pal 133020745 2010-07-08 20:54 _38.tvf 
-rw-r--r-- 1 gene pal  977316 2010-07-08 20:54 _38.tvx 
-rw-r--r-- 1 gene pal  299 2010-07-08 20:54 segments_1b 
-rw-r--r-- 1 gene pal   20 2010-07-08 20:54 segments.gen 

上市,这是复制的上市:

total 3577796 
-rw-r--r-- 1 gene pal 2502676419 2010-07-10 23:16 _38.fdt 
-rw-r--r-- 1 gene pal  488660 2010-07-10 23:15 _38.fdx 
-rw-r--r-- 1 gene pal  198 2010-07-10 23:15 _38.fnm 
-rw-r--r-- 1 gene pal 213752776 2010-07-10 23:15 _38.frq 
-rw-r--r-- 1 gene pal  366496 2010-07-10 23:15 _38.nrm 
-rw-r--r-- 1 gene pal 725677119 2010-07-10 23:16 _38.prx 
-rw-r--r-- 1 gene pal 1124453 2010-07-10 23:16 _38.tii 
-rw-r--r-- 1 gene pal 85260530 2010-07-10 23:15 _38.tis 
-rw-r--r-- 1 gene pal  280471 2010-07-10 23:16 _38.tvd 
-rw-r--r-- 1 gene pal 133020745 2010-07-10 23:16 _38.tvf 
-rw-r--r-- 1 gene pal  977316 2010-07-10 23:16 _38.tvx 
-rw-r--r-- 1 gene pal  299 2010-07-10 23:15 segments_1b 
-rw-r--r-- 1 gene pal   20 2010-07-10 23:15 segments.gen 

尽管文件大小看起来都一样,但每个列表顶部显示的总数是不同的。而且即使Solr的启动消息表明,它在寻找这个目录在

INFO: Opening new SolrCore at solr/, dataDir=./data/ 

管理统计表明没有可用的文件SOLR

我应该看看麻烦,拍这个问题还有什么呢?

感谢,

基因

+0

你复制solrconfig.xml中和schema.xml中呢? – 2010-07-11 21:10:22

回答

0

(我张贴原来的问题我已经创建了一个计算器帐户,也无法弄清楚如何编辑原始之前,因此第二个职位,而不是编辑或评论;抱歉的混淆)

是的,我复制了整个solr目录,然后编辑solrconfig.xml指向第二个索引位置。在启动时,两个solr实例报告正确的dataDir位置。

+0

日志中完全没有错误?没有隐藏的文件对吗? (即尝试LS -A) – 2010-07-12 05:13:20

+0

原来,这是我的愚蠢(这是一直在操作的假设):我指定solrconfig.xml文件中的索引位置为./data而不是./solr/data,因为我复制它来自上面的评论。 – 2010-07-15 00:29:57

3

我发现使用Solr's built-in Replication API比在文件系统上复制索引文件容易得多。

在您的从机上创建一个新的空核心。然后指示该内核使用fetchindex命令从现有主站进行复制。 Solr将为您处理所有其他的繁重工作。

例如,你会最终有一个URL是这样的:

http://slave_host:port/solr/corename/replication?command=fetchindex&masterUrl=http://master_host:port/solr/corename/replication

+0

这看起来不错,而且我已经弄清楚了我需要在solrconfig.xml中同时启用它,包括在提交之后告诉主要副本。然而,我坚持让奴隶拥有一个较旧的“版本”,以便它实际上可以读取索引,因为它在主版本及其时间戳更新之后已经启动。新的主提交似乎只会在版本号中碰撞“毫秒”数字。有小费吗? (Solr 1.4) – mrooney 2011-06-30 15:20:36

+0

好的,对我来说诀窍就是把master放在slave XML中,而不是指定为URL参数,然后使用command = fetchindex。谢谢! – mrooney 2011-06-30 18:17:52