2010-06-21 3 views
6

Implemento il motore di ricerca con solr che importa minimo 2 milioni di doc al giorno. L'utente deve cercare sul documento importato ASAP (quasi in tempo reale).Solr Backup incrementale su sistema in tempo reale con indice pesante

Io utilizzo 2 Windows x64 dedicato con tomcat 6 (modalità shard Solr). ogni server, indicizza circa 120 milioni di documenti e circa 220 GB (totale 500 GB).

Desidero ottenere il backup incrementale dal file indice solr durante l'aggiornamento o la ricerca.
dopo la ricerca, trovare strumenti rsync per UNIX e DeltaCopy per Windows (GUI rsync per Windows). ma ottieni un errore (svanito) durante l'aggiornamento.

come risolvere questo problema.

Nota1: copia del file molto lenta, quando le dimensioni del file sono molto grandi. quindi non posso usare in questo modo.

Nota2: Posso impedire i file di indice corrotti durante l'aggiornamento, se Windows si arresta in modo anomalo o se si ripristina l'hardware o altri problemi?

risposta

8

Non eseguire un backup durante l'aggiornamento dell'indice. Probabilmente otterrai un backup corrotto (quindi inutile).

Alcune idee per lavorare intorno ad esso:

  • batch i vostri aggiornamenti, cioè invece di aggiungere/aggiornamento dei documenti per tutto il tempo, aggiungere/aggiornamento ogni n minuti. Ciò consente di eseguire il backup tra quelli n minuti. Contro: la freschezza del documento è influenzata.
  • Usa un secondo nucleo passivo di Solr: imposta due nuclei per frammento, uno attivo e uno passivo. Tutte le domande vengono emesse sul core attivo. Utilizzare replication per mantenere aggiornato il core passivo. Esegui il backup sul nucleo passivo. Dovresti eseguire il disable replication durante l'esecuzione del backup. Contro: parti complesse e in movimento, richiede il doppio dello spazio su disco per mantenere il core passivo.
+0

L'indice passivo non è già il backup perfetto? – Karussell

+2

@Karussell: è solo una copia e non un vero e proprio backup poiché non è possibile applicare criteri di backup come storage off-site, backup incrementale/differenziale/completo, ecc. C'è molto di più per il backup che copiare semplicemente cose. –

+0

grazie mille Mauricio – Hamid

14

È possibile eseguire un backup a caldo (ad esempio durante la scrittura nell'indice) utilizzando ReplicationHandler per copiare la directory dei dati Solr in un altro punto del sistema locale. Quindi fai quello che vuoi con quella directory. È possibile avviare il backup ogni volta che si desidera andando a un URL come questo:

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

Ovviamente si potrebbe scrivere script con wget + cron.

Maggiori dettagli possono essere trovati qui:

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

Il Lucene in azione libro ha una sezione sul backup a caldo con Lucene, e mi sembra che il codice in ReplicationHandler di Solr utilizza la stessa strategia delineato lì. Uno degli autori di questo libro ha persino elaborato come funziona in another StackOverflow answer.