<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>kopia &#8211; Solr.pl</title>
	<atom:link href="https://solr.pl/tag/kopia/feed/" rel="self" type="application/rss+xml" />
	<link>https://solr.pl</link>
	<description>All things to be found - Blog related to Apache Solr &#38; Lucene projects - https://solr.apache.org</description>
	<lastBuildDate>Fri, 13 Nov 2020 21:22:16 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>Solr 5.2 &#8211; szybkie spojrzenie na mechanizm kopii zapasowych</title>
		<link>https://solr.pl/2015/06/22/solr-5-2-szybkie-spojrzenie-na-mechanizm-kopii-zapasowych/</link>
					<comments>https://solr.pl/2015/06/22/solr-5-2-szybkie-spojrzenie-na-mechanizm-kopii-zapasowych/#respond</comments>
		
		<dc:creator><![CDATA[Rafał Kuć]]></dc:creator>
		<pubDate>Mon, 22 Jun 2015 20:21:51 +0000</pubDate>
				<category><![CDATA[Solr]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[kopia]]></category>
		<category><![CDATA[kopia zapasowa]]></category>
		<guid isPermaLink="false">http://sematext.solr.pl/?p=666</guid>

					<description><![CDATA[Wraz z niedawną premierą Solr w wersji 5.2 oraz 5.2.1 dostaliśmy możliwość skorzystania z mechanizmu wykonywania kopii zapasowych przy pomocy API. Ze względu na to, że była to funkcjonalność na którą część użytkowników czekała już dość długo postanowiliśmy się jej]]></description>
										<content:encoded><![CDATA[<p>Wraz z niedawną premierą Solr w wersji <a href="http://solr.pl/2015/06/07/lucene-i-solr-5-2/">5.2</a> oraz <a href="http://solr.pl/2015/06/15/lucene-i-solr-5-2-1/">5.2.1</a> dostaliśmy możliwość skorzystania z mechanizmu wykonywania kopii zapasowych przy pomocy API. Ze względu na to, że była to funkcjonalność na którą część użytkowników czekała już dość długo postanowiliśmy się jej przyjrzeć.</p>
<p><span id="more-666"></span></p>
<p>W celu przetestowania funkcjonalności przeprowadzimy bardzo prosty test:</p>
<ol>
<li>uruchomimy Solr w trybie rozproszonym,</li>
<li>zaindeksujemy kilka dokumentów,</li>
<li>zrobimy kopię zapasową,</li>
<li>ponownie zaindeksujemy kilka dokumentów,</li>
<li>postaramy się przywrócić kopię zapasową, którą wykonaliśmy w kroku 3</li>
</ol>
<p>Zacznijmy więc.</p>
<h3>Uruchomienie Solr</h3>
<p>Pierwsze krok to uruchomienie Solr. W tym celu wykorzystaliśmy skrypt <em>bin/solr</em> i następującą komendę:</p>
<pre class="brush:xml">bin/solr -e cloud
</pre>
<p>Potrzebujemy jednej instancji SolrCloud oraz pustej kolekcji (najlepiej&nbsp;<em>gettingstarted</em>). Do testów potrzebujemy pojedynczego shard&#8217;a.</p>
<p>Sama topologia stworzonego przez nas klastra wygląda następująco:</p>
<p><a href="http://solr.pl/wp-content/uploads/2015/06/Zrzut-ekranu-2015-06-21-o-11.13.31.png"><img decoding="async" class="aligncenter  wp-image-3617" src="http://solr.pl/wp-content/uploads/2015/06/Zrzut-ekranu-2015-06-21-o-11.13.31.png" alt="Zrzut ekranu 2015-06-21 o 11.13.31" width="683" height="36"></a></p>
<h3>Indeksowanie danych</h3>
<p>Zaindeksowanie danych jest równie proste. Ze względu na wykorzystanie przykładowej kolekcji <em>gettinstarted</em> możemy wysłać dane o dowolnej strukturze, a Solr postara się odpowiednio zmodyfikować <em>schema.xml</em>. Zaindeksowaliśmy całe dwa dokumenty korzystając z następującego polecenia:</p>
<pre class="brush:xml">curl 'localhost:8983/solr/gettingstarted/update?commit=true' -H 'Content-type:application/xml' --data-binary '
&lt;add&gt;
 &lt;doc&gt;
  &lt;field name="id"&gt;1&lt;/field&gt;
  &lt;field name="name"&gt;Test document 1&lt;/field&gt;
 &lt;/doc&gt;
 &lt;doc&gt;
  &lt;field name="id"&gt;2&lt;/field&gt;
  &lt;field name="name"&gt;Test document 2&lt;/field&gt;
 &lt;/doc&gt;
&lt;/add&gt;'
</pre>
<h3>Kopia zapasowa</h3>
<p>Wykonanie kopii zapasowej jest tak samo proste, jak czynności, które wykonywaliśmy do tej pory. Wystarczy, że uruchomimy następującą komendę:</p>
<pre class="brush:xml">curl 'http://localhost:8983/solr/gettingstarted/replication?command=backup&amp;name=test&amp;location=/Users/gro/backup/'
</pre>
<p>Powyższa komenda poinformowała Solr, że chcemy wykonać kopię zapasową, nazwać ją <em>snapshot.test</em> (Solr dodaje wartość parametru <em>name</em> do nazwy <em>snapshot.</em>)&nbsp; Sama kopia zapasowa, w przypadku braku określonej lokalizacji, zostanie stworzona w katalogu z danymi. Oczywiście możemy podać inny katalog za pomocą parametru <em>location</em> (tak jak w powyższym przykładzie), który może być zarówno ścieżką względną (do katalogu z danymi Solr), jak i bezwzględną.</p>
<p>Odpowiedź Solr będzie szybka i podobna do następującej:</p>
<pre class="brush:xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;response&gt;
 &lt;lst name="responseHeader"&gt;&lt;int name="status"&gt;0&lt;/int&gt;&lt;int name="QTime"&gt;2&lt;/int&gt;&lt;/lst&gt;&lt;str name="status"&gt;OK&lt;/str&gt;
&lt;/response&gt;
</pre>
<p>W przypadku, kiedy nasza kolekcja jest duża, czas tworzenia kopii zapasowej będzie oczywiście odpowiednio dłuższy. Jeżeli chcemy sprawdzać, jaki jest postęp wystarczy uruchomienie następującej komendy:</p>
<pre class="brush:xml">curl 'http://localhost:8983/solr/gettingstarted/replication?command=details'
</pre>
<h3>Ponowna indeksacja</h3>
<p>Kolejnym krokiem naszego, prostego testu jest indeksacja kolejnych dwóch dokumentów przy pomocy następującej komendy:</p>
<pre class="brush:xml">curl 'localhost:8983/solr/gettingstarted/update?commit=true' -H 'Content-type:application/xml' --data-binary '
&lt;add&gt;
 &lt;doc&gt;
  &lt;field name="id"&gt;3&lt;/field&gt;
  &lt;field name="name"&gt;Test document 3&lt;/field&gt;
 &lt;/doc&gt;
 &lt;doc&gt;
  &lt;field name="id"&gt;4&lt;/field&gt;
  &lt;field name="name"&gt;Test document 4&lt;/field&gt;
 &lt;/doc&gt;
&lt;/add&gt;'
</pre>
<p>Po tej operacji, jeżeli uruchomilibyśmy następującą komendę:</p>
<pre class="brush:xml">curl 'localhost:8983/solr/gettingstarted/select?q=*:*&amp;rows=0&amp;indent=true'
</pre>
<p>Solr poinformuje nas, że w naszej kolekcji są cztery dokumenty:</p>
<pre class="brush:xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;response&gt;
 &lt;lst name="responseHeader"&gt;
  &lt;int name="status"&gt;0&lt;/int&gt;
  &lt;int name="QTime"&gt;6&lt;/int&gt;
  &lt;lst name="params"&gt;
   &lt;str name="q"&gt;*:*&lt;/str&gt;
   &lt;str name="indent"&gt;true&lt;/str&gt;
   &lt;str name="rows"&gt;0&lt;/str&gt;
  &lt;/lst&gt;
 &lt;/lst&gt;
 &lt;result name="response" numFound="4" start="0" maxScore="1.0"&gt;
 &lt;/result&gt;
&lt;/response&gt;
</pre>
<h3>Przywrócenie kopii zapasowej</h3>
<p>Postarajmy się zatem przywrócić naszą kopię zapasową i zobaczmy ile dokumentów będzie widzieć Solr. W tym celu uruchamiamy następującą komendę:</p>
<pre class="brush:xml">curl 'http://localhost:8983/solr/gettingstarted/replication?command=restore&amp;name=test&amp;location=/Users/gro/backup/'
</pre>
<p>Solr zwrócił następującą odpowiedź:</p>
<pre class="brush:xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;response&gt;
 &lt;lst name="responseHeader"&gt;&lt;int name="status"&gt;0&lt;/int&gt;&lt;int name="QTime"&gt;2&lt;/int&gt;&lt;/lst&gt;&lt;str name="status"&gt;OK&lt;/str&gt;
&lt;/response&gt;
</pre>
<p>Zatem sprawdźmy co Solr zwróci na nasze proste zapytanie:</p>
<pre class="brush:xml">curl 'localhost:8983/solr/gettingstarted/select?q=*:*&amp;rows=0&amp;indent=true'
</pre>
<pre class="brush:xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;response&gt;
 &lt;lst name="responseHeader"&gt;
  &lt;int name="status"&gt;0&lt;/int&gt;
  &lt;int name="QTime"&gt;0&lt;/int&gt;
  &lt;lst name="params"&gt;
   &lt;str name="q"&gt;*:*&lt;/str&gt;
   &lt;str name="indent"&gt;true&lt;/str&gt;
   &lt;str name="rows"&gt;0&lt;/str&gt;
  &lt;/lst&gt;
 &lt;/lst&gt;
 &lt;result name="response" numFound="2" start="0"&gt;
 &lt;/result&gt;
&lt;/response&gt;
</pre>
<p>Jak widać Solr poprawnie przywrócił kopię zapasową i znów mamy dwa dokumenty w naszej kolekcji.</p>
<h3>Podsumowanie</h3>
<p>Jak widać mechanizm działa poprawnie, należy jednak pamiętać o kilku rzeczach. W przypadku instalacji kilku instancji Solr na tej samej maszynie, lepiej unikać wykonywania kopii zapasowych do katalogu bezwzględnego (można nadpisać sobie dane). Poza tym, fajnie jest móc mieć w pełni zabezpieczone dane <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://solr.pl/2015/06/22/solr-5-2-szybkie-spojrzenie-na-mechanizm-kopii-zapasowych/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
