﻿<?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>tech-blog.IT &#187; sql 2005 mirror</title>
	<atom:link href="http://tech-blog.it/tag/sql-2005-mirror/feed/" rel="self" type="application/rss+xml" />
	<link>http://tech-blog.it</link>
	<description>Co tam Pani w Windowsach?</description>
	<lastBuildDate>Wed, 08 Sep 2010 07:42:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Wysoka dostępność baz MS SQL 2005 &#8211; Lustrzane bazy</title>
		<link>http://tech-blog.it/2009/11/sql2005mirroring/</link>
		<comments>http://tech-blog.it/2009/11/sql2005mirroring/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 12:51:44 +0000</pubDate>
		<dc:creator>monika</dc:creator>
				<category><![CDATA[SQL Server 2005]]></category>
		<category><![CDATA[sql 2005 mirror]]></category>

		<guid isPermaLink="false">http://tech-blog.it/?p=249</guid>
		<description><![CDATA[Artykuł ukazał się na łamach portalu WindowsHosting.pl. Podobnie jak w przypadku log shipping, transakcje w lustrzanych kopiach baz danych są przenoszone z serwera głównego (Principial Server) na serwer pomocniczy, nazywany tutaj serwerem lustrzanym (Mirror Server) z tą różnicą, że transakcje są zatwierdzanie w momencie, kiedy następują. Na serwerze głównym znajduje się główna baza danych, gdzie [...]]]></description>
			<content:encoded><![CDATA[<p><em>Artykuł ukazał się na łamach portalu <a href="http://windowshosting.pl/Lustrzane.kopie.baz.danych.czyli.zapewnianie.wysokiej.dostepnosci.w.bazach.danych.MS.SQL.2005">WindowsHosting.pl</a>.</em></p>
<p>Podobnie jak w przypadku log shipping, transakcje w lustrzanych kopiach baz danych są przenoszone z serwera głównego (<strong>Principial Server</strong>) na serwer pomocniczy, nazywany tutaj serwerem lustrzanym (<strong>Mirror Server</strong>) z tą różnicą, że transakcje są zatwierdzanie w momencie, kiedy następują.<br />
Na serwerze głównym znajduje się główna baza danych, gdzie przeprowadzane są transakcje. Serwer główny zapisuje zmiany w głównym dzienniku transakcji i automatycznie przenosi informacje na temat przeprowadzonych transakcji na serwer lustrzany, który dokonuje wpisu w swoim dzienniku transakcji. Następnie serwer lustrzany wysyła potwierdzenie do serwera głównego.<br />
W ten sposób serwer lustrzany zawiera pełną kopię bazy danych ze wszystkimi wykonanymi transakcjami. Należy jednak pamiętać, że nie można tworzyć lustrzanych baz danych z baz systemowych.<br />
W celu zapewnienia wysokiej dostępności możemy skonfigurować dodatkowy serwer zwany serwerem pomocniczym (<strong>Witness Server</strong>), który monitoruje serwery z główną i lustrzaną bazą danych.  W momencie, gdy następuje awaria i przestanie działać serwer główny, serwer nadzorujący wykonuje automatyczne przekierowanie i serwer lustrzany pełni funkcję serwera głównego. Aplikacje, które używają SNAC (SQL Native Client) lub .NET Data Provider są przełączane z serwera głównego na lustrzany transparentnie.</p>
<p style="text-align: center;"><strong>Jak skonfigurować lustrzaną bazę danych w SQL Management Studio?</strong></p>
<p style="text-align: left;">W SQL Management Studio klikamy prawym przyciskiem myszy na bazie danych i w jej właściwościach przechodzimy do strony Mirroring. Najpierw musimy skonfigurować zabezpieczenia serwera głównego i lustrzanego, a przy wyborze opcji z serwerem nadzorującym – także i jego. W tym celu przyciskamy <strong>Configure Security</strong>.<br />
Na pierwszej stronie kreatora określamy, czy chcemy używać serwera nadzorującego (<strong>Witness Server instance</strong>), który służy do automatycznego przywracania po awarii w trybie synchronicznym .</p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-250" title="mirror1" src="http://tech-blog.it/wp-content/uploads/2009/11/mirror1.png" alt="mirror1" width="372" height="336" /></p>
<p style="text-align: left;">Na kolejnym ekranie <strong>Choose Servers to Configure</strong> możemy zaznaczyć, które instancje chcemy skonfigurować.</p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-251" title="mirror2" src="http://tech-blog.it/wp-content/uploads/2009/11/mirror2.png" alt="mirror2" width="389" height="345" /></p>
<p style="text-align: left;">Na stronie <strong>Principal Server Instance</strong> określamy węzeł końcowy (<strong>Endpoint</strong>), poprzez który główny serwer będzie akceptował połączenia z serwera lustrzanego i serwera nadzorującego. W pozycji <strong>Listener port</strong> wpisujemy numer portu, którego chcemy używać. Należy pamiętać, że jeśli którykolwiek z instancji serwera: główny, lustrzany czy nadzorujący znajduje się na tym samym serwerze, numer portu musi się różnić.  Wpisujemy port i nadajemy węzłowi końcowemu nazwę oraz zaznaczamy czy chcemy szyfrować dane wysyłane przez ten endpoint <strong>(Enrypt data sent through this endpoint</strong>).</p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-252" title="mirror3" src="http://tech-blog.it/wp-content/uploads/2009/11/mirror3.png" alt="mirror3" width="435" height="391" /></p>
<p style="text-align: left;">Na kolejnej stronie konfigurujemy instancję serwera lustrzanego. Z rozwijanej listy <strong>Mirror server instance</strong> wybieramy żądaną instancję i serwer oraz wciskamy przycisk <strong>Connect</strong>. Poniżej, podobnie jak na ekranie powyżej konfigurujemy port oraz nazwę węzła końcowego.</p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-253" title="mirror4" src="http://tech-blog.it/wp-content/uploads/2009/11/mirror4.png" alt="mirror4" width="416" height="376" /></p>
<p style="text-align: left;">Jeśli wybraliśmy opcję z serwerem nadzorującym, wybieramy nazwę jego instancji w pozycji <strong>Witness server instance</strong>, wciskamy <strong>Connect</strong> i ponownie konfigurujemy numer portu i nazwę węzła.</p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-254" title="mirror5" src="http://tech-blog.it/wp-content/uploads/2009/11/mirror5.png" alt="mirror5" width="431" height="384" /></p>
<p style="text-align: left;">Jeśli instancje używają różnych kont w zaufanej domenie jako kont usług SQL, należy je wpisać w pozycje <strong>Principal, Witness i Mirror</strong>. Jeśli wszystkie instancje używają tego samego konta, klikamy przycisk <strong>Next</strong> bez wpisywania czegokolwiek.</p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-255" title="mirror6" src="http://tech-blog.it/wp-content/uploads/2009/11/mirror6.png" alt="mirror6" width="406" height="362" /></p>
<p style="text-align: left;">Na ostatniej stronie czytamy podsumowanie i wciskamy przycisk<strong> Finish</strong>.</p>
<p>Po zakończeniu zostanie stworzony mechanizm tworzenia lustrzanych baz danych.<br />
Przed włączeniem mechanizmu, należy wykonać pełną kopię zapasową głównej bazy danych i odtworzyć ją na serwerze lustrzanym z opcją <strong>RESTORE WITH NORECOVERY</strong>. Lustrzana baza danych będzie znajdowała się teraz w stanie<strong> In Recovery</strong>.</p>
<p>Po odtworzeniu bazy danych powracamy do kreatora lustrzanych baz danych i przed wciśnięciem przycisku <strong>Start Mirroring</strong> wybieramy tryb w sekcji <strong>Operating Mod</strong>e. Do wyboru mamy trzy tryby:</p>
<ul>
<li>Synchroniczny z automatycznym przywracaniem po awarii (<strong>Synchronous with automatic failover (high availability)</strong>), który gwarantuje wysoką dostępność. Do działania w tym trybie niezbędny jest uprzednio skonfigurowany serwer nadzorujący. Transakcja zostaje uważana za zakończoną na serwerze główny, gdy serwer lustrzany zapisze transakcję w swoim dzienniku i wyśle potwierdzenie do serwera głównego. Serwer nadzorujący kontroluje automatyczne przywrócenie po awarii na serwerze lustrzanym, gdy serwer główny jest niedostępny.</li>
<li>Asynchroniczny (<strong>Asynchronous (high performance)</strong>) – Zmiany zostają zatwierdzone na serwerze głównym a następnie transferowane są na serwer lustrzany. W tym trybie, serwer główny zatwierdza transakcje bez oczekiwania na potwierdzenie od serwera lustrzanego. Nie działa tu automatyczne przywracanie po awarii. Jeśli główny serwer przestaje działać, należy ręcznie  przekazać jego działania serwerowi lustrzanemu. Tryb ten jest szybszy w działaniu niż tryb synchroniczny, niestety istnieje możliwość, że część transakcji nie zostanie zapisanych na serwerze lustrzanym.</li>
<li>Synchroniczny (<strong>Synchronous (high protection)</strong>) zapewniający wysoką ochronę – Zatwierdzanie zmian odbywa się na obydwu serwerach. Nie zawiera serwera nadzorującego. Jeśli główny serwer przestaje działać, pełna kopia danych znajdująca się na serwerze lustrzanym zostaje ręcznie wypromowana do działania jako serwer główny. Jeśli natomiast serwer lustrzany przestaje działać, serwer główny przechodzi w tryb offline, a dane nie zostają utracone.</li>
</ul>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-256" title="mirror8" src="http://tech-blog.it/wp-content/uploads/2009/11/mirror8.png" alt="mirror8" width="507" height="454" /></p>
<p style="text-align: left;">Ten sam process można wykonać poprzez zapytanie T-SQL:</p>
<p><em>CREATE ENDPOINT [Mirroring]<br />
AS TCP (LISTENER_PORT = 5022)<br />
FOR DATA_MIRRORING (ROLE = PARTNER, ENCRYPTION = REQUIRED ALGORITHM RC4)<br />
ALTER ENDPOINT [Mirroring] STATE = STARTED</em></p>
<p><em>CREATE ENDPOINT [Mirroring]<br />
AS TCP (LISTENER_PORT = 5022)<br />
FOR DATA_MIRRORING (ROLE = PARTNER, ENCRYPTION = REQUIRED ALGORITHM RC4)<br />
ALTER ENDPOINT [Mirroring] STATE = STARTED</em></p>
<p><em>CREATE ENDPOINT [Mirroring]<br />
AS TCP (LISTENER_PORT = 5023)<br />
FOR DATA_MIRRORING (ROLE = WITNESS, ENCRYPTION = REQUIRED ALGORITHM RC4)<br />
ALTER ENDPOINT [Mirroring] STATE = STARTED</em></p>
<p><em>ALTER DATABASE [db] SET PARTNER = &#8216;TCP://serwer1.local:5022&#8242;<br />
ALTER DATABASE [db] SET PARTNER = &#8216;TCP://serwer2.local :5022&#8242;<br />
ALTER DATABASE [db] SET WITNESS = &#8216;TCP://witness.local:5023&#8242;</em></p>
]]></content:encoded>
			<wfw:commentRss>http://tech-blog.it/2009/11/sql2005mirroring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
