14 maja 2011

Replikacja transakcyjna - Dystrybutor, Część II

Dystrybutor - od tego należy zacząć


Dystrybutor jest kluczowym komponentem replikacji transakcyjnej. Pełni on rolę repozytorium wszystkich transakcji które zostały zreplikowane lub będą dopiero dystrybuowane do subskrybentów. Przy replikacji transakcyjnej dystrybutor może być mocno obciążony, gdyz zarówno Log Reader Agent jak i Distribution Agent komunikują się z nim intensywnie.

Wystarczy pomyśleć, że jeżeli w jednym aktykule publikacji (np. tabeli LogHistory) usuniemy 10k wierszy to Log Reader będzie musiał przesłać każde usunięcie rekordu w postaci oddzielnego polecenia (Command). Później Distribution Agent na każdym subskrybencie pobierze 10k poleceń (załóżmy, że mamy 10 subskrybentów). Zatem dystrybutor dla tego jednego polecenia DELETE będzie musiał obsłużyć (zapisać lub umożliwić odczyt 110k poleceń). Z tych i innych powodów Microsoft często zaleca skonfigurowanie dystrybutora na odzielnym serwerze, aby uniknąć problemów wydajnościowych. Poniżej przedstawiam krótki opis podstawowej konfiguracji dystrybutora przy użyciu SQL Server Management Studio (SSMS).

W pierwszym kroku w SSMS należy wybrać Replication i dalej Configure Distribution. 



Pojawia się dialog, w którym można wybrać czy chcemy skonfigurować inną instancję SQL Server'a jako dystrybutor czy wybrać lokalny serwer.


Snapshot folder


Kolejnym krokiem jest wybranie folderu, w którym będzie generowany Snapshot. Jest on o tyle istotny, że jeżeli chcemy aby przyszłe subskrypcje działały w trybie Pull to musimy umożliwić pobranie Snapshota publikacji z folderu sieciowego (tzw. share'a) do inicializacji subskrypcji. Inicializacja subskrypcji polega na zaimportowaniu danych, które są już częścią publikacji, sama replikacja transakcyjna publikuje tylko zmiany zachodzące na publikacyjnej bazie danych. 


Jeżeli wybierzemy folder lokalny dla Snapshota będziemy mogli skonfigurować subskrypcję typu Push.

Distribution database


W kolejnym kroku wybieramy nazwę dystrybucyjnej bazy danych i miejsce składowania pliku danych i logu transakcyjnego tej bazy. Baza dystrybucyjna (Distribution database) jest o tyle specyficzna, że w pewnych wypadkach może rosnąć bardzo intensywnie. Wszystkie polecenia do czasu rozpropagowania lub wygaśnięcia (maximum retension period) są przechowywane w bazie dystrybucyjnej. W przypadku problemów z komunikacją z subskrybentami, baza moża przyrastać znacząco. Trzeba to wziąć pod uwagę przy projektowaniu architektury rozwiązania z użyciem replikacji.


Następnie tworzymy powiązanie pomiędzy dystrybutorem a publikacjami na lokalnym SQL Serverze.



Następnie możemy wybrać opcję do wygenerowania skryptów do konfiguracji dystrybutora i jednocześnie skonfigurować dystrybutor. Powiniśmy po wciśnięciu przycisku 'Finish' otrzymać następujący dialog.



Dystrybutor jest skonfigurowany, teraz można już publikować dane. Jeżeli pojawiłyby się trudności z lokalizacją bazy dystrybucyjnej,  znajduje się ona w katalogu 'System Databases'.


Kopia zapasowa - o tym też trzeba pomyśleć


Jedną z ważnych kwesti, które warto rozważyć przy konfigurowaniu dystrybutora, jest plan odtworzenia bazy dystrybucyjnej z backup'u. Można wykorzystać obcję 'sync with backup', która w pewnym sensie blokuje truncate logu transakcyjengo publikacyjnej bazy danych do momentu wykonania backup'u dystrybucyjnej bazy danych. Umożliwi to ponowne odczytanie transakcji z logu publikacyjnej bazy danych w razie odtwarzania dystrybucyjnej bazy danych z ostatniego backup'u.

Dokładnie strategie kopii zapasowych dla replikacji transakcyjnej opisane są w artykule 'Strategies for Backing Up and Restoring Snapshot and Transactional Replication'.

Opis konfiguracji dystrybutora jest uproszczony, ale ideą tego posta jest umożliwienie czytelnikowi zapoznania się z jednym z najważniejszych elementów replikacji transakcyjnej.

Brak komentarzy:

Prześlij komentarz

Uwaga: tylko uczestnik tego bloga może przesyłać komentarze.