Kopia bezpieczeństwa indeksu

Czy zastanawialiście się kiedyś jak wykonać kopię bezpieczeństwa indeksu w Solr korzystając z dostępnych narzędzi ? Na przykład tak, aby po każdej operacji commit lub optimize otrzymywać kopię bezpieczeństwa ? A może chcielibyście wykonywać kopię własnoręcznie z wykorzystaniem wywołać API HTTP oferowanego przez Solr. Zobaczmy zatem jakie mamy możliwości.

Na początek

Zdecydowaliśmy się opisać te zagadnienie pomimo tego, iż jest bardzo proste. Zauważyliśmy jednak, iż dużo ludzi zapomina o oczywistych funkcjonalnościach, nie tylko w przypadku Apache Solr. Mamy nadzieję, że ten wpis przypomni użytkownikom o tej funkcjonalności, przynajmniej tym, którzy będą jej potrzebować. Zacznijmy od stanu początkowego – zawartość katalogu, w której znajduje się indeks, przed rozpoczęciem testów wyglądała następująco:

drwxrwxr-x 2 gr0 gr0 4096 2012-08-12 20:17 index
drwxrwxr-x 2 gr0 gr0 4096 2012-08-12 20:16 spellchecker

Ręczna Kopia Bezpieczeństwa

Aby wykonać ręczną kopię bezpieczeństwa indeksu, przy pomocy wywołania API HTTP, należy mieć skonfigurowany handler odpowiadający za replikację. Jeżeli handler ten jest obecny, wysyłamy do niego (na serwerze master) parametr command z wartością backup, na przykład:

curl 'http://localhost:8983/solr/replication?command=backup'

Spowoduje to utworzenie kopii bezpieczeństwa naszego indeksu. Tak wygląda katalog w którym znajduje się indeks po wykonaniu powyższego polecenia:

drwxrwxr-x 2 gr0 gr0 4096 2012-08-12 20:18 index
drwxrwxr-x 2 gr0 gr0 4096 2012-08-12 20:19 snapshot.20120812201917
drwxrwxr-x 2 gr0 gr0 4096 2012-08-12 20:16 spellchecker

Jak widać kopia zapasowa indeksu została utworzona w katalogu snapshot.20120812201917.

Automatyczna Kopia Bezpieczeństwa

Oprócz ręcznego tworzenia kopii bezpieczeństwa mamy także możliwość wykonania kopii indeksu po każdej operacji commit, bądź optimize. Jeżeli twój indeks zmienia się bardzo często sugerujemy nie korzystania z tej funkcjonalności, ewentualnie skorzystania z tworzenia kopii bezpieczeństwa po otrzymaniu komendy optimize.

Na początek, dodajemy następujący wpis do konfiguracji handler’a replikacji:

<str name="backupAfter">commit</str>

Zatem pełna konfiguracja serwera master mogłaby wyglądać następująco:

<requestHandler name="/replication" >
 <lst name="master">
  <str name="replicateAfter">commit</str>
  <str name="replicateAfter">startup</str>
  <str name="confFiles">schema.xml,stopwords.txt</str>
  <str name="backupAfter">commit</str>
 </lst>
</requestHandler>

Po wysłaniu dwóch poleceń commit katalog z indeksem wyglądał następująco:

drwxrwxr-x 2 gr0 gr0 4096 2012-08-12 21:12 index
drwxrwxr-x 2 gr0 gr0 4096 2012-08-12 21:12 snapshot.20120812211203
drwxrwxr-x 2 gr0 gr0 4096 2012-08-12 21:12 snapshot.20120812211216
drwxrwxr-x 2 gr0 gr0 4096 2012-08-12 20:16 spellchecker

Tutaj także można zobaczyć, że Solr wykonał to co chcieliśmy, czyli stworzył dwa katalogi z kopią indeksu.

Utrzymywanie porządku

Możliwa jest kontrola tego, jak dużo kopii bezpieczeństwa naszego indeksu będziemy przechowywać. W celu określenia tej ilości należy dodać następujący wpis do konfiguracji handler’a replikacji:

<str name="maxNumberOfBackups">10</str>

Powyższy wpis mówi Solr, aby nie przechowywał więcej, niż 10 kopi bezpieczeństwa. Oczywiście możliwe jest także ręczne usuwanie stworzonych przez Solr kopii, jeżeli nie są już nam potrzebne.

This post is also available in: angielski

This entry was posted on poniedziałek, Sierpień 13th, 2012 at 07:33 and is filed under Solr. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.