复制只读solr服务器

时间:2010-07-11 18:47:33

标签: solr

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

我关闭了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/

admin stats显示没有可用于solr的文档

我还应该注意什么才能解决这个问题?

谢谢,

基因

2 个答案:

答案 0 :(得分:3)

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

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

例如,您最终会得到如下所示的网址:

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

答案 1 :(得分:0)

(我在创建stackoverflow帐户之前发布了原始问题,并且无法弄清楚如何编辑原文;因此是第二篇文章而不是编辑或评论;抱歉混淆。)

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