2010-06-21 22 views
6

Arama motorunu günde en az 2 milyon dokümanı içe alan solr ile uygularım. Kullanıcı, içe aktarılmış dokümanın ASAP (gerçek zamanlı olarak) üzerinde arama yapmalıdır.Solr Ağır endeksli gerçek zamanlı sistemde artımlı yedekleme

2 özel Windows x64'i tomcat 6 (Solr shard modu) ile kullanıyorum. Her sunucu, yaklaşık 120 milyon doküman ve yaklaşık 220 GB (toplam 500 GB).

Güncelleme veya arama sırasında solr indeks dosyasından yedekleme artışı almak istiyorum.
aramadan sonra, pencereler için UNIX ve DeltaCopy rsync araçlarını (pencereler için GUI rsync) bulun. ama güncelleme sırasında hata (kayboldu) olsun. Bu sorunu nasıl çözebilirim?

.

Not1: Dosya boyutu çok büyük olduğunda dosya kopyalama gerçekten yavaş. bu yüzden bu şekilde kullanamıyorum.

Not2: Windows kilitlenme veya donanım sıfırlaması veya başka bir sorun olursa, güncelleme sırasında bozuk dizin dosyalarını önleyebilir miyim?

cevap

8

Dizini güncellerken bir yedekleme yapmayın. Muhtemelen bozuk (dolayısıyla işe yaramaz) bir yedek alacaksınız.

bazı fikirler etrafında çalışmak: güncellemelerinize kadar

  • Toplu yerine belgeleri güncelleme/her zaman ekleme/güncelleştirme her n dakika ekleyin yani. Bu, yedeklemeyi n dakikalarında çalıştırmanıza izin verecektir. Eksileri: belge tazeliği etkilenir.
  • İkinci bir pasif Solr çekirdeği kullanın: Her bir aktif, bir aktif ve bir pasif olmak üzere iki çekirdek oluşturun. Tüm sorgular aktif çekirdeğe karşı verilir. Pasif çekirdeği güncel tutmak için replication kullanın. Yedek pasif çekirdeğe karşı çalıştırın. Yedeklemeyi çalıştırırken disable replication gerekir. Eksileri: karmaşık, daha hareketli parçalar, pasif çekirdek korumak için disk alanı iki kat gerektirir.
+0

Pasif dizin zaten mükemmel bir yedekleme değil midir? – Karussell

+2

@Karussell: Sadece bir kopyasını değil, yerinde depolama, artımlı/diferansiyel/tam yedekleme vb. Gibi yedekleme politikalarını uygulayamayacağınız için tek başına uygun bir yedekleme değil. Sadece kopyalamaktan çok daha fazlası var. –

+0

çok teşekkürler Mauricio – Hamid

14

Yerel sistemdeki başka bir yerde Solr'un veri dizinini kopyalamak için ReplicationHandler'ı kullanarak (örneğin dizine yazarken) sıcak bir yedek alabilirsiniz. O dizinde ne istersen onu yap. İstediğiniz zaman böyle bir URL'ye giderek yedekleme başlatabilirsiniz:

http://host:8080/solr/replication?command=backup&location=/home/jboss/backup 

Açıkçası yapabildin komut o wget + cron ile.

http://wiki.apache.org/solr/SolrReplication

Lucene Eylem kitapta Lucene ile sıcak yedeklemeler bir bölüm vardır ve solr en ReplicationHandler kod aynı stratejiyi olarak kullandığı bana görünen:

Daha fazla detay burada bulabilirsiniz orada özetlendi. Kitabın yazarlarından biri, another StackOverflow answer'da nasıl çalıştığı konusunda ayrıntılı bir açıklama yaptı.

İlgili konular