Replikacja SQL Server jest jedną z funkcji synchronizacji danych, która służy do kopiowania i dystrybucji obiektów i danych bazy danych SQL Server między bazami danych znajdujących się w tej samej instancji SQL Server lub w różnych instancjach oraz synchronizowania ich między tymi bazami danych w celu zachowania spójności stan.
Komponenty replikacji serwera SQL
Replikacja SQL Server składa się z następujących głównych komponentów:
- Artykuły :Tabela bazy danych, procedury składowane lub widoki, które są uważane za podstawową jednostkę replikacji SQL Server.
- Dystrybutor :instancja SQL Server zawierająca element Dystrybucja baza danych, która przechowuje metadane i historię replikacji. Weź pod uwagę, że Wydawca może być przypisany tylko do jednego Dystrybutora, ale Dystrybutor może obsługiwać wielu Wydawców.
- Wydawca :Instancja SQL Server, która zawiera źródłową bazę danych i udostępnia dane do dystrybucji do innych lokalizacji.
- Subskrybent :Instancja SQL Server, która odbiera dane replikacji SQL od Wydawcy(ów) i stosuje je do docelowej bazy danych oraz przekazuje zmiany danych z powrotem do Wydawcy w niektórych typach replikacji.
- Agent migawek replikacji :Ten agent jest odpowiedzialny za początkową synchronizację we wszystkich typach replikacji, która zapewnia subskrybentowi pełną kopię artykułów bazy danych wydawcy.
- Agent czytnika dzienników :Ten agent jest używany do ciągłej replikacji transakcji od wydawcy do subskrybenta w replikacji transakcyjnej, odczytując dziennik transakcji źródłowej bazy danych.
- Agent dystrybucyjny :Ten agent jest używany do zastosowania początkowej migawki do docelowej bazy danych oraz śledzenia i stosowania ciągłych zmian danych w docelowej bazie danych. Ten agent jest używany tylko z replikacjami transakcyjnymi i migawkowymi.
- Połącz agenta :Ten agent jest odpowiedzialny za kopiowanie zmian od subskrybenta do wydawcy, a następnie kopiowanie wszystkich zmian od wydawcy do subskrybenta w obie strony. Ten agent jest używany tylko z replikacją scalania.
Typy replikacji serwera SQL
SQL Server zapewnia nam różne typy replikacji, które można wykorzystać do dystrybucji danych, w zależności od wymagań dotyczących synchronizacji danych. Wszystkie typy replikacji SQL rozpoczynają początkową synchronizację między wydawcą a subskrybentem, kopiując migawkę wszystkich danych od wydawcy do subskrybenta. Te typy replikacji serwera SQL obejmują:
- Replikacja transakcyjna :W tym typie replikacji wszystkie zmiany wykonywane po stronie wydawcy będą dostarczane i stosowane bezpośrednio po stronie subskrybenta. Przykładem replikacji transakcyjnej jest scenariusz integracji danych między różnymi witrynami.
- Replikacja migawek :W tym typie replikacji migawka jest pobierana od wydawcy i stosowana do subskrybenta raz, bez rozpowszechniania ciągłych zmian po migawce, aż do następnej synchronizacji, w której nowa migawka zostanie skopiowana i ponownie zastosowana do subskrybenta.
- Replikacja scalająca :W tym typie replikacji zmiany mogą być wykonywane i synchronizowane zarówno po stronie wydawcy, jak i subskrybenta oraz synchronizowane, gdy subskrybent jest podłączony do sieci. Przykładem użycia replikacji scalającej jest wymiana danych między użytkownikami aplikacji punktu sprzedaży.
- Replikacja peer-to-peer :Specjalny typ replikacji transakcyjnej, w którym Wydawca dystrybuuje zmiany danych do wielu subskrybentów w tym samym czasie.
- Replikacja dwukierunkowa :Kolejny specjalny typ replikacji transakcyjnej, w którym oba serwery działają jako wydawca i subskrybent oraz wymieniają dane między sobą.
Wymagania dotyczące replikacji serwera SQL
Zanim ustawimy i skonfigurujemy witrynę replikacji SQL, musimy upewnić się, że zaznaczone są następujące punkty:
- Składnik SQL Server Replication jest instalowany na wszystkich uczestniczących serwerach, wydawcy, subskrybencie i dystrybutorze. Należy go zainstalować podczas instalacji instancji SQL Server lub dodać później do istniejącej instancji SQL za pomocą kreatora instalacji SQL Server, jak poniżej:
- Na serwerach jest wystarczająca ilość miejsca do utworzenia migawki, opublikowanych danych bazy danych subskrybenta i wzrostu dziennika transakcji bazy danych wydawcy.
- Agent SQL Server jest uruchomiony, aby agenci replikacji serwera SQL mogli tworzyć powiązane zadania agenta SQL i aby zadania działały bez żadnych problemów.
- Istnieje wystarczająca przepustowość sieci między uczestniczącymi instancjami SQL Server.
- Wystąpienia wydawcy, dystrybutora i subskrybenta mogą łączyć się ze sobą, a porty TCP, których te wystąpienia SQL nasłuchują, są otwierane w regułach zapory. Innymi słowy, jesteśmy w stanie połączyć się z każdą instancją SQL z innych instancji bez żadnych problemów z siecią lub łącznością.
- Artykuły bazy danych wydawców, które będą replikowane, powinny mieć wcześniej zdefiniowane ograniczenie klucza podstawowego, aby zachować niepowtarzalność danych.
- Konto, które będzie używane do tworzenia witryny replikacji i uruchamiania agentów replikacji, powinno być co najmniej członkiem stałej roli bazy danych db_owner w bazach danych wydawcy, dystrybutora i subskrybenta, oprócz uprawnienia do odczytu i zapisu w folder migawek.
Pierwsze kroki
W tym artykule pokażemy, jak używać typu replikacji transakcyjnej do replikacji tabel bazy danych AdventureWorks2017 między dwiema instancjami SQL Server; SQL1 instancja, która będzie działać jako dystrybutor i wydawca, oraz SQL2 wystąpienie, które będzie działać jako subskrybent.
Replikacja transakcyjna serwera SQL zostanie skonfigurowana w trzech krokach:
- Skonfiguruj dystrybutora.
- Skonfiguruj wydawcę.
- Skonfiguruj subskrybenta
Omówmy szczegółowo te kroki.
Skonfiguruj dystrybutora
Aby skonfigurować dystrybutora, połącz się z „SQL1 ” Instancja SQL Server, która będzie działać jako dystrybutor, która jest tą samą instancją Publisher w naszym przykładzie tutaj, przejrzyj węzeł Replikacja w Eksploratorze obiektów SSMS, kliknij prawym przyciskiem myszy Replikacja i wybierz Konfiguruj dystrybucję … opcja, jak pokazano poniżej:
Pierwsze okno, które zostanie wyświetlone w kreatorze konfiguracji dystrybucji, to kreator startowy, który podsumuje listę działań, które zostaną wykonane w tym kreatorze. Kliknij Dalej aby kontynuować:
W kolejnym oknie zostaniesz poproszony o wybranie, która instancja SQL Server będzie działać jako Dystrybutor. Daje możliwość wybrania bieżącej instancji SQL Server jako dystrybutora i utworzenia bazy danych systemu dystrybucji na tej instancji lub określenia innej instancji SQL Server, która ma być używana jako dystrybutor. W tym scenariuszu jako dystrybutora użyjemy bieżącej instancji SQL1. Wybierz opcję, która odpowiada Twojemu planowi projektu, a następnie kliknij Dalej aby kontynuować:
Ponieważ usługa SQL Server Agent odgrywa istotną rolę w procesie replikacji SQL Server, gdzie zadanie agenta SQL Server zostanie utworzone dla każdego agenta replikacji, zaleca się zmianę trybu uruchamiania, jeśli usługa SQL Server Agent z Ręczny (domyślnie ) na Automatyczne. Dzięki temu uruchomi się automatycznie po ponownym uruchomieniu SQL Server, bez ryzyka zapomnienia o ręcznym uruchomieniu. Ten kreator umożliwia automatyczną zmianę trybu uruchamiania usługi SQL Server Agent Service, biorąc pod uwagę, że konto usługi SQL Server ma uprawnienia administratora na tym serwerze do wykonania tej akcji. W naszym przypadku tę zmianę dokonamy ręcznie. Kliknij Dalej aby kontynuować:
Następnie kreator poprosi o określenie folderu, w którym zostanie utworzona początkowa migawka synchronizacji. Określ folder na dysku, który ma wystarczającą ilość miejsca, a następnie kliknij Dalej aby kontynuować:
W następnym oknie zostaniesz poproszony o podanie nazwy bazy danych dystrybucji oraz lokalizacji, w której będą przechowywane dane i pliki dziennika dla tej bazy danych. Określ swoją dostosowaną nazwę i lokalizację lub zachowaj ustawienia domyślne, a następnie kliknij Dalej aby kontynuować:
Następnie musisz wybrać listę instancji SQL Server, które będą działać jako wydawcy i przechowywać swoje metadane w tej bazie danych dystrybucji. Jeśli masz wstępnie zdefiniowaną topologię, dodaj wszystkich kandydatów na wydawców, a następnie kliknij Dalej aby kontynuować:
W następnym oknie wybierz akcje, które zostaną wykonane przez tego kreatora, czy chcesz skonfigurować dystrybucję bezpośrednio, wygenerować plik skryptu dla wspomnianych kroków konfiguracyjnych, czy też jedno i drugie. W naszym scenariuszu skonfigurujemy dystrybucję bezpośrednio. Kliknij Dalej aby kontynuować:
W oknie Ukończ kreatora przejrzyj wszystkie dokonane wcześniej wybory i upewnij się, że nie należy wprowadzać żadnych zmian w tych wyborach, a następnie kliknij Zakończ aby rozpocząć proces konfiguracji:
Gdy proces konfiguracji dystrybucji zakończy się pomyślnie, kreator powiadomi Cię zielonym znacznikiem obok każdej akcji. W przypadku napotkania jakiegokolwiek problemu zostanie wyświetlony znaczący komunikat o błędzie, aby go naprawić i powtórzyć konfigurację. Ponieważ wszystkie działania zostały pomyślnie zakończone, Zamknij kreator konfiguracji:
Jeśli rozwiniesz węzeł Systemowe bazy danych, w Eksploratorze obiektów SSMS zobaczysz, że tworzona jest nowa baza danych systemu dystrybucji, która będzie używana do przechowywania metadanych replikacji serwera SQL, jak pokazano poniżej:
Skonfiguruj wydawcę
Po skonfigurowaniu Dystrybutora następnym krokiem jest skonfigurowanie Wydawcy, który działa jako źródło danych dla innych witryn.
Aby skonfigurować Wydawcę, połącz się z instancją SQL Server zawierającą bazę danych do opublikowania, przejrzyj węzeł SQL Server Replication w Eksploratorze obiektów, a następnie kliknij prawym przyciskiem myszy węzeł Lokalne publikacje i wybierz Nowa publikacja… opcja, jak poniżej:
Pierwsze okno w Kreatorze nowej publikacji to strona początkowa, na której wyświetlana jest lista akcji, które zostaną wykonane w ramach tego kreatora. Po przeczytaniu, jak ten kreator pomoże Ci kliknąć Dalej aby kontynuować:
Na następnej stronie zostaniesz poproszony o wybranie bazy danych, która zostanie opublikowana dla subskrybentów, czyli bazy danych AdventureWorks2017 w naszym demo tutaj. Kliknij Dalej aby kontynuować:
Następnie zostaniesz poproszony o wybranie rodzaju publikacji, z której możesz korzystać. Omówiliśmy wcześniej w tym artykule listę typów replikacji programu SQL Server, które są dostępne w programie SQL Server. W tym pokazie użyjemy Publikacji transakcyjnej rodzaj. Kliknij Dalej aby kontynuować:
Na stronie Artykuły możesz wybrać listę obiektów bazy danych, które planujesz replikować do subskrybentów. Możesz wybrać wszystkie dostępne obiekty w ramach każdego typu lub rozwinąć typ obiektu i wybrać listę obiektów do replikacji. W tym demo zreplikujemy wszystkie tabele bazy danych do subskrybentów. Po sprawdzeniu wyboru obiektu kliknij Dalej aby kontynuować:
SQL Server umożliwia również dodawanie filtrów dla wybranych obiektów bazy danych i replikację tylko tych danych, które spełniają kryteria dodanych filtrów. Jeśli planujesz replikować całe wiersze tabeli, pomiń tę stronę, klikając przycisk Dalej przycisk:
Na stronie Agent migawki określ, czy planujesz natychmiast utworzyć początkową migawkę synchronizacji, zaplanuj jej uruchomienie później, czy uruchom ją ręcznie po zakończeniu konfiguracji replikacji. W tym demo stworzę migawkę po zakończeniu konfiguracji replikacji SQL Server. Kliknij Dalej aby kontynuować:
Następnie zostaniesz poproszony o skonfigurowanie konta, które będzie używane do uruchamiania agenta migawki i agentów czytnika dzienników. Ten użytkownik powinien mieć co najmniej uprawnienia db_owner w bazie danych wydawcy, dystrybutora i subskrybenta, oprócz uprawnień do odczytu i zapisu w folderze migawki. Możesz również użyć konta SQL Agent Service do uruchomienia tych agentów replikacji SQL Server, co nie jest zalecane ze względów bezpieczeństwa. Podaj autoryzowane konto i kliknij Dalej aby kontynuować:
Na stronie Akcje kreatora wybierz akcje, które zostaną wykonane po zakończeniu tego kreatora, w tym tworzenie publikacji i generowanie pliku skryptu w celu późniejszego utworzenia publikacji lub użycie tego skryptu jako szablonu dla innych serwerów. W tym pokazie wybierzemy utworzenie publikacji , a następnie kliknij Dalej aby kontynuować:
Ostatnia strona to Ukończ kreatora, w której musisz podać nazwę publikacji i przejrzeć swoje wybory w tym kreatorze, a następnie kliknąć Zakończ aby kontynuować tworzenie publikacji:
Po zakończeniu działania kreatora tworzenia publikacji zostanie wyświetlony wynik procesu tworzenia publikacji oraz informacja, czy proces zakończył się pomyślnie z zielonymi testami, czy nie powiódł się na określonym kroku z wyraźnym komunikatem o błędzie. W tym demo Publikacja została pomyślnie utworzona bez problemu, jak pokazano poniżej:
Aby sprawdzić, czy publikacja została utworzona pomyślnie, rozwiń węzeł Publikacje lokalne w węźle Replikacja programu SQL Server w Eksploratorze obiektów SSMS i sprawdź nowo utworzoną publikację. Możesz również przejrzeć i zmodyfikować ustawienia publikacji na tej stronie Właściwości publikacji. Publikacja będzie wyglądała następująco:
Skonfiguruj subskrybenta
Na razie mamy pomyślnie skonfigurowanych Wydawcę i Dystrybutora, nadszedł czas, aby skonfigurować Subskrybenta, który działa jako cel danych i odbiera dane od Subskrybenta.
Aby skonfigurować subskrybenta, z tego samego wystąpienia wydawcy, rozwiń węzeł replikacji serwera SQL w Eksploratorze obiektów SSMS, kliknij prawym przyciskiem myszy węzeł Subskrypcje lokalne i wybierz Nowe subskrypcje … opcja, jak pokazano poniżej:
Pierwszym oknem wyświetlanym w Kreatorze nowej subskrypcji jest strona startowa, która pokazuje, w jaki sposób ten kreator pomoże w konfiguracji subskrybenta. Kliknij Dalej aby kontynuować:
Pierwszym krokiem w konfiguracji Subskrybenta jest wybranie Wydawcy, dla którego Subskrybent zostanie utworzony, oraz bazy danych Publikacji, która będzie stanowić źródło danych dla tego Subskrybenta. Wybierz bazę danych publikacji z wymienionych baz danych, a następnie kliknij Dalej aby kontynuować:
Następnie zostaniesz poproszony o określenie, czy uruchomić wszystkich agentów po stronie Dystrybutora i przekazać zmiany do Subskrybenta, zapewniając scentralizowaną administrację procesem synchronizacji replikacji, czy uruchomić każdego agenta u własnego Subskrybenta, który pobierze zmiany od Wydawcy , zmniejszając obciążenie przetwarzania po stronie dystrybutora i umożliwiając oddzielne administrowanie każdą synchronizacją subskrybentów. W tym demo wybierzemy subskrypcję push i klikniemy Dalej aby kontynuować:
W następnym oknie musisz dodać instancję Subskrybenta SQL Server i docelową bazę danych Subskrypcji, z możliwością utworzenia tej bazy danych, jeśli nie istnieje, jak pokazano poniżej:
Na stronie Zabezpieczenia agenta dystrybucji określ konto, w ramach którego agent dystrybucji będzie uruchamiany w celu przeprowadzenia procesu synchronizacji, oraz konto, które będzie używane do łączenia się z wystąpieniami programu SQL Server dystrybutorem i subskrybentem. Zaleca się zapewnienie autoryzowanego konta domeny, które ma uprawnienia zarówno dystrybutora, jak i subskrybenta, z możliwością korzystania z konta SQL Agent Service do łączenia się z dystrybutorem i subskrybentem, co nie jest zalecane ze względów bezpieczeństwa. Po podaniu autoryzowanego konta bezpieczeństwa kliknij Dalej aby kontynuować:
Na następnej stronie kreatora nowej subskrypcji określ harmonogram synchronizacji dla każdego agenta. Zachowaj ustawienie domyślne, jeśli chcesz, aby synchronizacja działała w sposób ciągły, a następnie kliknij Dalej aby kontynuować:
Następnie możesz określić, czy zainicjować subskrypcje z migawką z publikacji i kiedy wykonać ten proces inicjowania. W tym demo decydujemy się zainicjować subskrypcję podczas pierwszej synchronizacji, jak pokazano poniżej:
W oknie Akcje kreatora możesz wybrać, jakie akcje mają zostać wykonane na końcu tego kreatora. Na przykład ten kreator zapewnia opcję utworzenia skonfigurowanej subskrypcji (subskrypcji) i wygenerowania pliku skryptu w celu utworzenia subskrypcji później lub w innej instancji SQL Server, w następujący sposób:
Następnie kreator wyświetli podsumowanie wszystkich konfiguracji, które zostały wybrane w tym kreatorze, aby je zweryfikować przed rozpoczęciem konfiguracji subskrypcji. Jeśli wszystkie wybory są w porządku, kliknij Zakończ aby rozpocząć proces konfiguracji:
Jeśli operacja tworzenia subskrypcji zakończyła się pomyślnie, kreator powiadomi nas zielonym znacznikiem dla każdej zakończonej akcji lub przekaże nam znaczący komunikat o błędzie w przypadku jakiegokolwiek niepowodzenia, jak pokazano poniżej:
Aby sprawdzić, czy subskrypcja została pomyślnie utworzona, w węźle Replikacja Eksploratora obiektów SSMS rozwiń poprzednio utworzoną publikację, a zobaczysz wszystkie subskrypcje połączone z tym wydawcą i otrzymasz od niej dane, jak pokazano poniżej:
Utwórz wstępną migawkę synchronizacji
Jeśli nie zdecydowałeś się utworzyć początkowej migawki synchronizacji podczas tworzenia programu Publisher, nadal możesz utworzyć migawkę po skonfigurowaniu komponentów replikacji.
Aby utworzyć początkową migawkę synchronizacji, kliknij prawym przyciskiem myszy utworzoną publikację i wybierz Wyświetl stan agenta migawki opcja. W otwartym oknie kliknij przycisk Start, aby uruchomić agenta migawki i utworzyć początkową migawkę synchronizacji. Możesz także monitorować postęp procesu tworzenia zrzutu do momentu pomyślnego utworzenia zrzutu wszystkich artykułów, jak poniżej:
Monitoruj synchronizację
Po utworzeniu migawki zreplikowanych artykułów proces synchronizacji z subskrybentem rozpocznie się automatycznie, zapisując wszystkie artykuły z tej migawki do subskrybenta. Aby monitorować proces synchronizacji, kliknij prawym przyciskiem myszy Subskrypcję pod Replikacją serwera SQL. węzła Eksploratora obiektów SSMS i wybierz Wyświetl stan synchronizacji opcja, gdzie pokaże Ci liczbę transakcji i poleceń wykonanych na Abonencie, jak pokazano poniżej:
Ponadto można monitorować stan wszystkich agentów replikacji i liczbę poleceń oczekujących po stronie dystrybutora i niestosowanych po stronie subskrybenta, klikając prawym przyciskiem myszy nazwę publikacji i wybierając okno Uruchom monitor replikacji, jak pokazano poniżej:
Aby sprawdzić, czy witryna replikacji działa prawidłowo, dodajmy nowy rekord do jednego z replikowanych artykułów, tabeli „Pracownik”, po stronie wydawcy, który nie jest dostępny po stronie subskrybenta, a następnie zobaczysz z monitora replikacji okno, w którym nowy rekord jest dostarczany od Wydawcy do Dystrybutora, a następnie do Abonenta. Następnie zobaczysz, że nowy rekord jest dostępny w tabeli Pracownik po stronie subskrybenta, jak pokazano poniżej:
Dzięki jasnym i łatwym krokom zbudowaliśmy kompletną witrynę replikacji transakcyjnej, która jest zsynchronizowana i działa dobrze. W następnym artykule zobaczymy, jak rozwiązywać problemy z istniejącą witryną replikacji SQL Server. Bądź na bieżąco.