J. Karwowska
Replikacja bazy danych polega na kopiowaniu i przesyłaniu danych lub obiektów bazodanowych między serwerami oraz na zsynchronizowaniu tych danych w celu utrzymania ich spójności. Dane kopiowane nazywamy danymi źródłowymi, dane docelowe repliką. Replikacja jest najczęściej wykorzystywana w systemach rozproszonych baz danych, gdzie dane z jednego zdalnego węzła (serwera) są kopiowane do innych zdalnych węzłów.
Celem replikacji jest skrócenie czasu dostępu do danych oraz uniezależnienie się od czasowej niedostępności serwerów i awarii sieci. Wadą replikacji jest konieczność aktualizowania repliki w przypadku zmian danych źródłowych. Proces uaktualniania nazywamy synchronizacją (ang. synchronization) lub odświeżaniem (ang. refreshing). Dzięki replikacji możemy poprawić niezawodność i wydajność systemu bazodanowego.
umożliwiamy lokalny dostęp do danych użytkownikom z oddalonych miejsc, pozwalamy na częściową niezależność serwerów bazodanowych, możemy podzielić dane w sposób odpowiadający wymaganej strukturze, możemy fizycznie rozdzielić serwery bazodanowe realizując różne zadania oparte na tych samych danych.
Model replikacji serwera SQL definiuje trzy role, które mogą zostać przypisane serwerom bazodanowym. Serwer może zostać skonfigurowany jako dystrybutor (ang. distributor), wydawca (ang. publisher) oraz subskrybent (ang. subscriber).
Wydawca to serwer baz danych, który przesyła dane do innego serwera lub do innej bazy danych. Jego zadaniami są: utrzymanie wzorowej bazy danych, udostępnienie tej bazy innym serwerom (wysyłanie danych do subskrybenta), monitorowanie zmian w replikowanych danych i przesyłanie informacji o tych zmianach do serwera pełniącego funkcję dystrybutora.
Dystrybutor to serwer baz danych, który zarządza przepływem danych między wydawcą a subskrybentami. Serwer ma bazę dystrybucyjną (ang. distribution), która jest automatycznie tworzona podczas przypisywania serwerowi roli dystrybutora. Dystrybutor zarządza informacjami związanymi z replikacją danych, takimi jak: historia zmian danych, transakcje przeprowadzone na serwerach, konfiguracja serwerów biorących udział w replikacji.
Subskrybent to serwer (lub baza danych), która otrzymuje replikowane dane od innego serwera (lub od innej bazy danych) i przechowuje ich lokalną kopię. Dane przechowywane przez subskrybenta mogą zostać udostępnione użytkownikom tylko do odczytu lub do odczytu i modyfikacji.
Dane (publikacje) mogą być dostarczane automatycznie (ang. push) przez wydawcę lub mogą być pobierane okresowo (ang. pull) przez subskrybenta, który w celu ich pobrania łączy się z bazą dystrybucyjną. Replikacja typu push zalecana jest w przypadku synchronizowania poufnych danych pomiędzy małą liczbą serwerów i wymaga wydajnego serwera pełniącego funkcję dystrybutora. Replikacja typu pull zalecana jest w przypadku synchronizowania danych pomiędzy dużą liczbą serwerów.
W serwerze SQL Server występują trzy typy replikacji: Replikacja migawkowa (ang. Snapshot replication), Replikacja transakcyjna (ang. Transactional replication), Replikacja łączeniowa (ang. Merge replication).
Replikacja migawkowa (ang. Snapshot replication) polega na systematycznym przesyłaniu danych z określonych momentów od wydawcy do subskrybentów. Ten typ replikacji stosowany jest dla danych, które nie są często modyfikowane.
Replikacja transakcyjna (ang. Transactional replication) wszystkie zmiany w danych źródłowych są na bieżąco przesyłane do replik w kolejności, w jakiej zostały wprowadzone. Ponieważ zmiany zapisywane są na bieżąco, nie występują konflikty. Ten typ replikacji wymaga szybkiego i niezawodnego połączenia wszystkich serwerów i dlatego w praktyce jest stosowany głównie w sieciach lokalnych.
Replikacja łączeniowa (ang. Merge replication) zmodyfikowane dane są przechowywane i w określonym czasie przesyłane do dystrybutora, który rozwiązuje konflikty i wysyła dane do subskrybentów.
Każdy typ replikacji może zostać zaimplementowany w jednym z fizycznych modeli replikacji. Najczęściej spotykane modele to: model centralnego wydawcy, model centralnego subskrybenta, model równorzędny.
W tym modelu jeden serwer pełni funkcje wydawcy oraz dystrybutora, który replikuje dane do dowolnej liczby subskrybentów. Często role wydawcy i subskrybenta są przypisywane temu samemu serwerowi. Jest to najczęściej spotykana konfiguracja.
W tym modelu zakłada się, że dowolna liczba wydawców przesyła dane do jednego subskrybenta, gdzie są analizowane.
W tym modelu zakłada się, że w replikacji bierze udział dowolna liczba wydawców oraz dowolna liczba subskrybentów.
Za replikacje danych odpowiadają usługi replikacji zwane agentami, są to: Agent migawki (ang. Snapshot Agent), Agent transakcji (ang. Log Reader Agent), Agent scalania (ang. Merge Agent), Agent dystrybucji (ang. Distribution Agent), Agent kolejkowania (ang. Queue Reader Agent).
Dziękuję za uwagę! Praca domowa Proszę zrobić w zeszycie notatkę z lekcji!