Akademia SQL - Część 6: Atrybut FILESTREAM     Akademia SQL     Akademia SQL - Część 8: Mechanizm śledzenia zmian

Akademia SQL - Część 7: Replikacja Peer-to-Peer Udostępnij na: Facebook

Autor: Damian Widera

Opublikowano: 30 września 2008

Zawartość strony
 Replikacja Peer-to-Peer – informacje podstawowe   Replikacja Peer-to-Peer – informacje podstawowe
 Replikacja Peer-to-Peer – laboratorium   Replikacja Peer-to-Peer – laboratorium
 Replikacja Peer-to-Peer – referencje   Replikacja Peer-to-Peer – referencje

Replikacja Peer-to-Peer – informacje podstawowe

Replikacja Peer-to-Peer stanowi rozszerzenie transakcyjnej replikacji dwukierunkowej, która zaimplementowana była w serwerze SQL 2000. Replikacja Peer-to-Peer dostępna była w serwerze SQL 2005 w edycji Enterprise. Używając tej odmiany replikacji można zarządzać kopiami bazy danych, które są umieszczone na wielu instancjach, nazywanych węzłami. Jest to znacząca zmiana w stosunku do replikacji dwukierunkowej, która jak sugeruje jej nazwa, pozwalała zarządzać dwoma kopiami bazy danych. Główną zaletą replikacji Peer-to-Peer jest zdolność do przesyłania zmian do wszystkich węzłów praktycznie w czasie rzeczywistym. Istnieje oczywiście zabezpiecznie niepozwalające na wysłanie tej samej informacji do jednego węzła kilkakrotnie.

Replikacja Peer-to-Peer może występować w różnych konfiguracjach. Najprostsza z nich posiada dwa serwery, które replikują dane pomiędzy sobą. Schemat takiego rozwiązania został przedstawiony na rysunku 1, na którym obydwie bazy danych biorące udział w procesie replikacji otrzymują żądania z aplikacji klienckiej przez serwer aplikacyjny.

Rysunek 1: Schemat topologii replikacji Peer-to-Peer pomiędzy dwoma serwerami.

Przedstawione rozwiązanie może znaleźć rozwiązanie np. w aplikacjach internetowych i ma następujące zalety:

  1. Bardzo dobry odczyt danych, ponieważ proces odczytu jest rozłożony na obydwie bazy danych,
  2. Zapewniona jest dostępność danych nawet w przypadku awarii jednego węzła.

Na rysunku 1 pokazano, że odczyt danych wykonywany na obydwu bazach danych w zależności od obciążenia serwerów. Nieco inaczej wygląda sprawa w przypadku aktualizacji danych, poniewaz możliwe są dwa przypadki:

  1. Obydwie bazy danych są uaktualniane zmianami w aplikacji klienckiej. Jest to rozwiązanie dość skomplikowane, ponieważ jednym z założeń replikacji Peer-to-Peer jest, aby aktualizacja odbywała się tylko w jednym węźle w danej chwili. Aplikacja kliencka musiałaby mieć możliwość obsługi takiej sytuacji. Ten przypadek ilustruje lewa część rysunku 1.
  2. Jedna baza danych jest aktualizowana a nastepnie wszystkie zmiany są replikowane do drugiej bazy danych.W przypadku awarii lub wyłączenia (np. z powodu konserwacji serwera) drugi z serwerów jest w stanie przejąć obowiązki pierwszego serwera, ponieważ serwer aplikacji będzie przekierowywał wszystkie aktualizacje na ten serwer. Ten przypadek zaprezentowany został na prawej części rysunku 1.

Replikacja Peer-to-Peer pozwala korzystać z obydwu omówionych konfiguracji, ale druga z nich, zawierająca tylko jedną bazę danych aktualizowaną z serwera aplikacji, jest dużo bardziej rozpowszechniona.

Jedną z najważniejszych nowości, które dotyczą replikacji Peer-to-Peer w serwerze SQL 2008 jest możliwość wykrywania konfliktów, które mogłyby występować pomiędzy serwerami. Opcja ta zabezpiecza m.in. przed utratą uaktualnień wierszy wykonanych operacją UPDATE. Ma to swoje konsekwencje, ponieważ wykrycie konfliktu powoduje zatrzymanie agenta dystrybucji (ang. Distribution Agent) a sama topologia, czyli węzły biorące udział w replikacji i połaczenia występujące pomiędzy nimi, jest w stanie niespójnym do momentu ręcznego wprowadzenia poprawek w danych.

Kolejną istotną zmianą, która będzie obowiązywała w nowym systemie jest możliowść dodawania nowych serwerów — węzłów do istniejącej topologii bez konieczności zatrzymywania procesu replikacji. W poprzedniej wersji systemu można było dodać nowy węzeł oraz połączyć go z istniejącym. Wiązało się to jednak z koniecznością wstrzymania replikacji do czasu, aż wszystkie zmiany nie zostaną dostarczone do każdego węzła. W serwerze SQL 2008 można dodawać nowe serwery przy pomocy graficznego edytora topologii lub wskazując init from lsn dla parametru @sync\_type w procedurze składowanej sp_addsubscription.

Interesujące i ciekawe zmiany wprowadzono także do edytora topologii, który pozwala wykonać takie zadania konfiguracyjne jak:

  1. Budowanie topologii systemu,
  2. Dodawanie i łaczenie nowych węzłów do istniejącej struktury,
  3. Usuwanie i ukrywanie węzłów.

 Do początku strony Do początku strony

Replikacja Peer-to-Peer – laboratorium

Celem laboratorium będzie skonfigurowanie replikacji Peer-to-Peer na dwóch instancjach serwera SQL.

 

1. Uruchom konsolę SQL Server Management Studio (SSMS) i połącz się z serwerem EVALUATION używając uwierzytelnienia WINDOWS.

  2. W oknie eksploratora obiektów przejdź do sekcji Replication.
  3. Z menu kontekstowego wybierz opcję New a następnie Publication.
 

4. W oknie dialogowym na stronie Distributor zaznacz opcję, jak pokazano na poniższym rysunku. Spowoduje to utworzenie lokalnej bazy danych oraz dziennika dla dystrybutora.

Można również skorzystać z drugiej opcji i wskazać inny serwer jako dystrybutor w replikacji Peer-to-Peer, ale musi być on już skonfigurowany jako dystrybutor.

Naciśnij przycisk Next.

  5. Następne okno konfiguratora pozwala określić położenie migawki bazy danych przeznaczonej do replikacji. Pozostaw bez zmian ścieżkę zaproponowaną przez konfiguratora i naciśniej przycisk Next.
  6. W nastepnym oknie wskaż bazę danych AdventureWorks2008 jako bazę, która będzie replikowana i naciśnij przycisk Next.
  7. W oknie Publication Type wybierz z listy opcję Transactional publication i przejdź do następnego okna za pomoca przycisku Next.
 

8. W oknie Articles rozwiń węzeł Tables i zaznacz tablicę Employee w schemacie HumanResources oraz zaznacz pole Show onlychecked articlesin thelist. W oknie pozostały tylko wybrane obiekty to znaczy tablica HumanResources.Employee. Wygląd okna Articles po dokonanych modyfikacjach prezentuje poniższy rysunek.

 

9. Naciśnij na przycisk Article Properties i wybierz opcję Set Properties of Highlighted Table Article. Musisz upewnić się, że opcje publikacji w sekcji Statement Delivery dla wybranej tabeli będą poprawne. Prawidłową konfigurację tych opcji przestawiono poniżej.

Naciśnij przycisk Next.

  10. W oknie Filter Table Rows naciśnij przycisk Next ponieważ replikacja Peer-to-Peer nie obsługuje filtrowania wierszy w tabeli.
  11. W następnym oknie zaznacz opcję Create a snapshot immediately and keep the snapshot available to initialize subscription i naciśnij przycisk Next.
 

12. W oknie Agent Security musisz skonfigurowac opcje związane z bezpieczeństwem wykonania migawki potrzebnej do zainicjalizowania replikacji oraz podać infomacje agentowi odczytu dziennika transakcji (ang. Log Reader Agent) do rozsyłania informacji o zmianach do pozostałych serwerów biorących udział w replikacji.

Naciśnij na przycisk Security Settings obok pola agenta migawki (ang. Snapshot Agent).

Konfiguracje agenta migawki przedstawiono na rysunku poniżej.

Po skonfigurowaniu agenta migawki w podobny sposób skonfiguruj opcje dla agenta odczytu dziennika transkacji. Upewnij się, że została wyłączona opcja Use the security settings from the Snapshot Agent i w oknie Agent Security i nacisnij przycisk Next.

  13. W następnym oknie upewnij się, że jest zaznaczone pole Create the publication i naciśnij przycisk Next.
 

14. W ostatnim oknie w polu Publication name wpisz nazwę publikacji — PublikacjaAdwWorks2008 i naciśnij przycisk Finish. Serwer SQL 2008 przystąpi do skonfigurowania publikacji a o wynikach przygotowania informuje za pomocą okna postępu przedstawionego poniżej.

 

15. Po zakończeniu procesu tworzenia publikacji przejdź w oknie eksploratora obiektów do sekcji Replicationi odśwież zawartość sekcji Local Publications. Zobaczysz, że utworzona wcześniej publikacja znajduje się na liście, co prezentuje rysunek poniżej.

  16. Zaznacz utworzoną publikację i z menu kontekstowego wybierz opcję Properties.
 

17. W oknie własności publikacji przejdź na stronę Subscription Options. W sekcji Peer-to-Peer Replication zaznacz Allow Peer-to-Peer Replication na True. Zauważ, że możesz ustawić identyfikator Peer originator id dla publikatora replikacji Peer-to-Peer, któremu domyśnie serwer SQL przypisał wartość 1.

Okno własności publikacji:

Zatwierdź wprowadzone zmiany i zamknij okno własności publikacji.

 

18. Wykonaj kopię zapasową bazy danych AdventureWorks2008:

  • Zaznacz bazę danych AdventureWorks2008 i z menu kontekstowego wybierz opcję Tasks a natępnie Back Up,
  • W sekcji Destination podaj ścieżkę na dysku, w której zostanie wykonana kopia zapasowa,
  • Nie zmieniaj pozostałych ustawień na formularzu Back UpDatabase.
 

19. Połącz się do instancji EVALUATION\MIRROR i odzyskaj bazę danych AdventureWorks2008 z pliku kopii zapasowej:

  • Zaznacz sekcję Databases i z menu kontekstowego wybierz opcję Restore Database,
  • W oknie dialogowym Restore Database na zakładce General wprowadź następujące informacje:

    • AdventureWorks2008 w polu To database,
    • Zaznacz pole From device i naciśnij na przycisk (...), a następnie wskaż plik z kopią zapasową bazy danych,
    • W sekcji Select the backup sets to restorezaznacz pole Restore w pierwszym wierszu.

    Konfiguracja informacji na zakładce General w oknie Restore Database:

  • Przejdź na zakładkę Options,
  • W sekcji Restore the database files as wskaż miejsce na twardym dysku, gdzie zostaną zapisane pliki bazy danych AdventureWorks2008.

Konfiguracja informacji na zakładce Options w oknie Restore Database:

  20. Przed dodaniem instancji serwera MIRROR do procesu replikacji musisz skonfigurować agenta dystrybucji na tym serwerze. Przejdź do sekcji Replication i z menu kontekstowego wybierz opcję Configure Distribution.
  21. W oknie Distributor zaznacz opcję jak pokazano z punktu 4.
  22. Następne okno konfiguratora pozwala określić położenie migawki bazy danych publikatora. Naciśnij przycisk Next.
 

23. W oknie Distribution Database musisz skonfigurowac lokalną bazę danych dystrybutora. W tym celu wprowadź następujące informacje:

  • Nazwę bazy danych wpisz w pole Distributiondatabase name,
  • Ścieżkę do katalogu, w których przechowany będzie plik danych bazy danych dystrybutora. Tę informację wprowadź do pola Folder forthe distributiondatabase file,
  • Ścieżkę do katalogu, w których przechowany będzie plik dziennika transakcji bazy danych dystrybutora. Tę informację wprowadź do pola Folder forthe distributionlog file.

Konfigurację bazy danych dystrybutora pokazano poniżej.

  24. W oknie Publishers pozostaw zanaczoną domyślną opcję, która pozwala innym serwerom korzystać z tworzonego właśnie dystrybutora i nacisnij przycisk Next.
  25. W następnym oknie upewnij się, że jest zaznaczone pole Configure distribution i naciśnij przycisk Finish. System przygotuje agenta dystrybucji i po zakończeniu tego procesu możesz rozpocząć konfigurowanie topologii.
  26. Połącz się ponownie do serwera EVALUATION.
  27. Przejdź do sekcji Replication, rozwiń węzeł Local Publication i zaznacz publikację [AdventureWorks2008]: Publikacja AdwWorks2008. Z menu kontekstowego wybierz opcję Configure Peer-to-Peer Topology.
  28. W oknie Publication nalezy wybrać serwer, który jest publikatorem replikacji. Domyślnie wskazany jest lokalny serwer i opcji tej nie należy zmieniać. Naciśnij przycisk Next.
  29. W oknie Configure Topology pokazany został jeden serwer (publikator). Należy teraz dodać inny serwer, który będzie uczetniczył w replikacji Peer-to-Peer. Zaznacz prawym guzikiem myszy wolne miejsce pokazanego serwera i z menu kontekstowego wybierz opcję Add New Peer Node.
  30. W oknie połączenia do serwera wybierz instancję EVALUATION\MIRROR.
 

31. W oknie dialogowym Add a New Peer Nodewprowadź nastepujące informacje:

  • Wybierz z listy bazę danych AdventureWorks2008 w polu Select Database,
  • W polu Peer Originator ID wpisz identyfikator węzła — dowolny numer różny od numeru 1, który zarezerwowaliśmy dla publikatora,
  • zaznacz opcję Connect to ALL displayed nodes, co spowoduje połączenie wszystkich węzłów istniejących w topologii do nowego, który konfigurujesz.

Rysunek poniżej pokazuje konfigurację nowego węzła, który został dodany do topologii systemu.

 

32. Poniżej przedstawiono widok topologii systemu po dodaniu nowego węzła. Serwer będący publikatorem w replikacji Peer-to-Peer oznaczony jest zieloną strzałką. Naciśnij przycisk Next.

  33. W oknie Log Reader Agent Security nalezy skonfigurować opcje związane z połączeniem pomiędzy dystrybutorem a publikatorem replikacji.Nacisnij przycisk (...) i ustaw wszystkie opcje dostępne w oknie dialogowym, jak na rysunku z punktu 12.
 

34. W oknie Distributor Agent Security należy skonfigurować opcje związane z połączeniem pomiędzy dystrybutorem a subskrybentami replikacji. Nacisnij przycisk (...) i ustaw wszystkie opcje dostępne w oknie dialogowym, jak pokazano poniżej.

  35. W oknie New Peer Initialization zaznacz pierwszą opcję I created the peer database manually, or I restored a backup of the original publication database which has not been changed since the backup was taken. Aby kontynuować naciśnij przycisk Next.
  36. System przystąpi do zbudowania topologii Peer-to-Peer, który to proces może potrwać kilka minut w zależności od ilości dodanych nowych węzłów. Zamknij okno konfiguratora topologii.
  37. Połącz się ponownie do serwera, który jest publikatorem replikacji.
 

38. Przejdź do sekcji Replication i zmenu kontekstowego wybierz opcję Refresh. Rozwiń foldery Local Publications oraz Local Subscriptions. W folderze Local Publications znajduje się jeden element reprezentujący publikację utworzoną na początku ćwiczenia. W katalogu Local Subscriptionsznajdziesz element reprezentujacy subskrybenta replikacji Peer-to-Peer. Na rysunku poniżej pokazano wygląd sekcji Replication po zakończonej konfiguracji topologii systemu.

  39. Wykonaj zapytanie testowe w bazie danych AdvetureWorks2008 serwera będącego publikatorem:
SELECT [LoginID]

      ,[BirthDate]

FROM [AdventureWorks2008].[HumanResources].[Employee]

WHERE [EmployeeID]=275

----------------------------------------



LoginID                     BirthDate

---------------------------------------------------

adventure-works\michael9    1959-01-26 00:00:00.000



(1 row(s) affected)
  40. Zmień wartość w kolumnie BirthDate, jak pokazaliśmy poniżej:
UPDATE [AdventureWorks2008].[HumanResources].[Employee]

  SET BirthDate = '1976-01-01'

  WHERE [EmployeeID]=275
  41. Wykonaj zapytanie jak z punktu 39 na obydwu serwerach biorących udział w replikacji. Wynik powinien być nastepujący:
LoginID                          BirthDate

--------------------------------------------------------

adventure-works\michael9         1976-01-01 00:00:00.000



(1 row(s) affected)

 Do początku strony Do początku strony

Replikacja Peer-to-Peer – referencje

Dodatkowe informacje na temat replikacji Peer-to-Peer można znaleźć w Internecie:

[1] Co nowego w SQL Server 2008 - replikacja

[2] Wydajność i skalowalność SQL Server 2008

[3] Managing SQL Server 2005 Peer-to-Peer Replication

 


  Damian Widera, Project Manager & Team Lead (MCT, MCITP – DBA, MCSD.NET)
Od 8 lat zajmuje się projektowaniem, tworzeniem i wdrażaniem aplikacji wykorzystujących platformę .NET, SQL Server oraz Oracle. Obecnie pracuje jako project manager dla LGBS Polska. Pracował także jako trener, programista, administrator baz danych, twórca domumentacji oraz analityk biznesowy. Aktywnie współpracuje z polskim oddziałem Microsoft publikując atykuły, webcasty oraz porady z zakresu SQL Server na stronach TechNet. Jest współautorem książki „Serwer SQL 2008. Administracja i programowanie”.

Speaker na wielu konferencjach, m.in. Microsoft Heroes Happen Here, C2C, European PASS Conference, Microsoft Technology Summit, Energy Launch, TechED. Od 2004 r. posiada certyfikaty firmy Microsoft: MCT, MCITP–DBA oraz MCSD.NET. Jest współtwórcą oraz liderem jednej z najwiekszych grup pasjonatów SQL Server w Polsce – Śląskiej Regionalnej Grupy Microsoft (PLSSUG Katowice). Od listopada 2008 jest prezesem Polish SQL Server Users Group (PLSSUG) w Polsce. W styczniu 2009 nagrodzony tytułem MVP w kategorii SQL Server.
 Do początku strony Do początku strony

Akademia SQL - Część 6: Atrybut FILESTREAM     Akademia SQL     Akademia SQL - Część 8: Mechanizm śledzenia zmian