2010-07-11 27 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