Narzędzia wysokiej dostępności w MS SQL Server

W tym artykule przyjrzymy się wszystkim technologiom SQL Server, które mogą zapewnić wysoką dostępność danych i odporność na awarie dla SQL Server..

Kopie zapasowe są dobre, ale kiedy rachunek przechodzi przez minuty, a czasem sekundy, pomoże tylko nadmiarowość danych i przejrzysty plan przełączania awaryjnego. SQL Server zapewnia różne sposoby implementacji redundancji danych i wysokiej dostępności.

Treść

  • Dublowanie bazy danych w SQL Server
  • Zaloguj wysyłkę w SQL Server
  • Replikacja w Microsoft SQL Server: Przegląd metod
  • Grupy Always On Availability w SQL Server

Dublowanie bazy danych w SQL Server

  • Dostępne w edycjach: Standard (tylko tryb synchroniczny), Enterprise, Web / express - tylko tryb Witness
  • Działa na poziomie: Bazy danych
  • Wersja SQL Server: SQL Server 2005, SQL Server 2008
Uwaga. Dublowanie bazy danych jest w trybie konserwacji i może zostać usunięty w przyszłych wersjach SQL Server, dlatego nie zaleca się używania tej technologii w wersjach wyższych niż SQL Server 2008.

Mirroring działa na poziomie bazy danych (może nadal znajdować się na poziomie obiektu) i zapewnia automatyczne / ręczne przejście między serwerami w przypadku awarii. Baza rezerwowa w dowolnym trybie pracy kopii lustrzanej będzie w stanie ciągłego przywracania, dlatego nie będzie działać.

Kopia lustrzana ma 2 tryby działania: synchroniczny i asynchroniczny..

Synchroniczny tryb oznacza, że ​​główny serwer i kopia zapasowa są w pełni zsynchronizowane. Synchronizacja jest osiągana dzięki temu, że dane przychodzące na główny serwer są natychmiast wysyłane na serwer zapasowy. Serwer zapasowy zapisuje dane w dzienniku transakcji na dysk tak szybko, jak to możliwe. Gdy tylko serwer zapasowy zakończy zapisywanie danych, wysyła sygnał do głównego serwera, po czym główny serwer zapisuje dane na dysku. W tym trybie czas transakcji wydłuża się z powodu faktu, że główny serwer musi czekać, aż dane zostaną zapisane na dysku na serwerze kopii zapasowej, ale przy takim podejściu prawdopodobieństwo utraty danych jest minimalne.

W trybie synchronicznym można korzystać z serwera Witness. Serwer w trybie obserwacyjnym monitoruje wydajność serwerów kopii lustrzanych i może zainicjować przełączenie awaryjne, tzn. Serwer rezerwowy przechodzi w stan aktywny.

Należy pamiętać, że wąskie gardła na serwerze kopii zapasowych wpłyną na główny.

Asynchroniczny lub tryb wysokiej wydajności - Działa również, z tym wyjątkiem, że główny serwer po wysłaniu dziennika transakcji nie czeka na odpowiedź z kopii zapasowej dotyczącą pomyślnego zapisu na dysk.

W tym trybie transakcje są szybsze, a wydajność serwera zapasowego nie wpływa na podstawowy, ale jeśli serwer zapasowy zostanie przywrócony jako podstawowy, istnieje ryzyko utraty danych, ponieważ dane na serwerach nie są synchronizowane.

Mirroring powinien być używany tylko wtedy, gdy masz dopasowanie do wszystkich warunków

  • SQL Server 2008 lub SQL Server 2005
  • Niskie opóźnienie sieci między serwerem podstawowym a trybem gotowości
  • Utrata choćby jednej transakcji jest dla Ciebie bardzo ważna

Jeśli twoja obudowa nie spełnia wszystkich warunków, rozważ inne opcje..

Zaloguj wysyłkę w SQL Server

  • Dostępne w edycjach: Standardowy, internetowy, korporacyjny
  • Działa na poziomie: Bazy danych
  • Wersja SQL Server: SQL Server 2005 i nowsze wersje

Technologia wysyłania dzienników umożliwia automatyczne wysyłanie kopii zapasowych dzienników transakcji ze źródłowej bazy danych do jednej lub większej liczby baz danych odbiorców, a następnie przywraca je do baz danych odbiorców. Opcjonalnie może istnieć trzeci serwer, który będzie pełnił rolę usługi monitorowania - do monitorowania wykonywania dzienników kopii zapasowych i przywracania.

Monitorowanie i diagnostyka programu SQL Server omówione w osobnym artykule.

Po skonfigurowaniu wysyłania dziennika są tworzone zadania. Zasada działania jest następująca:

  1. Pierwsze zadanie jest odpowiedzialne za wykonanie kopii zapasowej dziennika transakcji na serwerze podstawowym
  2. Drugie zadanie odpowiada za dystrybucję kopii zapasowej do wszystkich serwerów odbiorców
  3. Trzecie zadanie przywraca dzienniki do wszystkich baz danych odbiorców. Odzyskiwanie jest dostępne w trybie bez odzyskiwania lub w trybie gotowości.

Jest to prostsza technologia, jeśli chodzi o tworzenie kopii lustrzanych i Always On. Przesyłkę kłód należy stosować, gdy:

  • Różnica danych między serwerem podstawowym a serwerami docelowymi jest dopuszczalna. Standardowy harmonogram wykonywania zadań wynosi co 15 minut. Możesz umieścić mniej, ale musisz wziąć pod uwagę szybkość transmisji danych w sieci i czas na przywrócenie dzienników.
  • Chcesz uzyskać dostęp do baz danych odbiorców w celu dostępu do odczytu. Jest to możliwe, gdy tryb odzyskiwania jest ustawiony na tryb gotowości. Pamiętaj jednak, że możesz uzyskać dostęp do bazy danych tylko między przywracaniem dziennika.

Replikacja w Microsoft SQL Server: Przegląd metod

  • Dostępne w edycjach: Standard i Internet - Ograniczone, Enterprise
  • Działa na poziomie: Obiekt bazy danych
  • Wersja SQL Server: SQL Server 2000 i nowsze wersje
Zobacz przegląd wersji SQL Server i funkcji licencjonowania..

Istnieją różne typy replikacji:

  • Replikacja transakcyjna
  • Replikacja transakcyjna peer-to-peer
  • Replikacja migawki
  • Scal replikację

Istnieją jeszcze 2 topologie oparte na replikacji transakcyjnej:

  • Dwukierunkowa replikacja transakcyjna
  • Odnawialne subskrypcje dla replikacji transakcyjnej (funkcja obsługiwana w wersjach SQL Server od 2012 do 2016)

Replikacja może być używana do różnych celów, ale jest używana głównie do odciążania serwerów OLTP za pomocą wybranych zapytań i do wysokiej dostępności. Chociaż Microsoft nie pozycjonuje replikacji jako sposobu na osiągnięcie wysokiej dostępności, może równie dobrze spełniać tę rolę..

Uwaga: Istnieją 3 typy serwerów w modelu replikacji SQL Server:

  • Wydawca (wydawca) - serwer, który publikuje artykuły
  • Dystrybutor (dystrybutor) - serwer, który dystrybuuje artykuły do ​​serwerów subskrybujących
  • Subskrybent (subskrybent) - serwer, który odbiera dystrybuowane artykuły

Zmiany, które mają miejsce w wybranych obiektach u wydawcy, są najpierw wysyłane do dystrybutora, a następnie dystrybutor wysyła te zmiany do subskrybentów.

Rozważ 4 podstawowe typy replikacji

Transakcyjna replikacja

Ten typ replikacji służy do replikacji danych „w czasie zbliżonym do rzeczywistego”, tzn. Dane dotyczące subskrybentów pojawiają się niemal natychmiast, biorąc pod uwagę czas kopiowania danych przez sieć.

Transakcje od wydawcy są wysyłane do dystrybutora, dystrybutor wysyła te transakcje do subskrybentów. Dystrybutor może wysłać dane do subskrybentów natychmiast lub zgodnie z określonym harmonogramem. Podmioty subskrybujące, które uczestniczą w replikacji, powinny być wykorzystywane wyłącznie do dostępu tylko do odczytu, w przeciwnym razie dane staną się niespójne i nastąpi konflikt.

Replikacja transakcyjna peer-to-peer

Replikacja transakcyjna peer-to-peer lub peer-to-peer jest podobna do normalnej replikacji transakcyjnej, ale może współpracować z wieloma serwerami jednocześnie.

Replikacja peer-to-peer może być nazywana replikacją master-master (w przypadku normalnej replikacji transakcyjnej byłaby to master-slave). Rozważ diagram z dokumentacji Microsoft

Każde wystąpienie SQL Server, które uczestniczy w replikacji peer-to-peer, może obsługiwać operacje odczytu i zapisu. Również w tego typu replikacji zapewniony jest mechanizm rozwiązywania konfliktów, gdy ta sama operacja pojawia się na kilku serwerach jednocześnie, na przykład żądanie aktualizacji. Ale nawet mając na uwadze ten mechanizm, nie zaleca się zapisywania danych w wielu instancjach jednocześnie..

Tego typu replikacji można użyć do równoważenia obciążenia, w tym operacji aktualizacji / wstawiania / usuwania..

Replikacja migawki

Jest to specjalny rodzaj replikacji, która nie śledzi zmian danych u wydawcy, ale zgodnie z określonym harmonogramem tworzy migawkę i wysyła ją do subskrybentów (za pośrednictwem dystrybutora).

Replikacja migawki nie stosuje wszystkich transakcji sekwencyjnie, jak ma to miejsce w przypadku dostarczania dziennika i replikacji transakcyjnej, ale kopiuje dane przez BCP.

Tego typu replikacji warto używać, gdy:

  • Dane rzadko się zmieniają
  • Dozwolona różnica danych między wydawcą a subskrybentem
  • Duża ilość zmian w krótkim czasie

Scal replikację

Mechanizm jest podobny do replikacji transakcyjnej peer-to-peer, ale istnieje kilka ważnych różnic:

  • Replikacja scalająca może mieć tylko jednego wydawcę i kilku subskrybentów, gdy, podobnie jak w przypadku replikacji peer-to-peer, wszystkie instancje są sobie równe (są jednocześnie wydawcami i subskrybentami
  • W replikacji scalającej subskrybenci mogą odbierać różne dane, gdy wszystkie serwery mają te same dane w replikacji peer-to-peer
  • Replikacja scalająca może rozwiązać konflikty, peer-to-peer - nie
  • Replikacja peer-to-peer jest dostępna tylko w wersji Enterprise

Replikacja scalająca powinna być używana, gdy trzeba skonsolidować dane..

Dwukierunkowa replikacja transakcyjna i ulepszone subskrypcje replikacji transakcyjnej

Dwukierunkowa transakcyjna jest topologią, w której normalna replikacja transakcyjna jest skonfigurowana do replikacji tych samych danych. Parametr @loopback_detection w sp_addsubscription musi być ustawiony na PRAWDA

Odnawialne subskrypcje replikacji transakcyjnej są podobne do replikacji scalającej. Technologia ta dość szybko stała się przestarzała, ponieważ praktycznie nie była używana i jest zastępowana przez inne typy replikacji.

Grupy Always On Availability w SQL Server

  • Dostępne w edycjach: Standard (z ograniczeniami), Enterprise (
  • Działa na poziomie: Bazy danych
  • Wersja SQL Server: SQL Server 2012 i nowsze wersje

Grupy Always On Availability pojawiły się w wydaniu SQL Server 2012. Jest to alternatywa (choć raczej rozwój) technologii dublowania baz danych..

Grupy Always On Availability oparte są na Klaster pracy awaryjnej systemu Windows Server, ale od wersji 2017 stało się możliwe użycie Zawsze włączony bez WSFC. Zawsze włączone jest podobne do kopii lustrzanej bazy danych (tryby synchroniczne i asynchroniczne), ale może istnieć do 8 wtórnych replik. Always On obsługuje automatyczne przełączanie awaryjne (tzn. Gdy awaria podstawowej instancji klastra ulega awarii, WSCF wybiera nową replikę podstawową i przekierowuje do niej żądania zapisu).

Każde wystąpienie w grupie dostępności może być albo podstawowy (główna) lub wtórne (wtórne). Wtórne repliki mogą być w tylko do odczytu, albo w Bez odzyskiwania. Każde wystąpienie w grupie dostępności zawiera kopie baz danych grupy dostępności. Należy pamiętać, że w trybie synchronicznym szybkość transakcji będzie zależeć od „najwolniejszego” członka grupy dostępności.

W podstawowej konfiguracji Always On jest prosta, po zainstalowaniu programu SQL Server wszystko można skonfigurować za pomocą kreatora (WSFC przez przystawkę w systemie Windows, a grupy dostępu same przez kreatora w SSMS). Ale przy dużej liczbie serwerów i złożonej infrastrukturze będziesz musiał dobrze przestudiować dokumentację.

Zaleca się używanie opcji Zawsze włączone w tych samych sytuacjach podczas tworzenia kopii lustrzanej lub w przypadku potrzeby równoważenia obciążenia wybranych zapytań. Zaleca się również tworzenie kopii zapasowych z replik wtórnych, jest to kolejna aplikacja grup dostępności.

Aby uzyskać więcej informacji o grupach dostępności zawsze w programie SQL Server, zobacz.

SQL Server zapewnia szeroką gamę rozwiązań w zakresie dostępności danych. Jeśli masz wersję Enterprise i SQL Server 2012 (i nowsze wersje), lepiej jest używać Always On. Replikacja może być wykorzystana do odciążenia systemów OLTP wybranymi zapytaniami i do częściowej redundancji (chociaż replikacja peer-to-peer jest pozycjonowana jako kompletny środek redundancji danych). Wysyłanie dziennika transakcji i dublowanie bazy danych mogą być używane w starszych wersjach programu SQL Server lub jeśli warunki zmuszają do korzystania z tych technologii..

Należy pamiętać, że wszystkie powyższe technologie wysokiej dostępności w SQL Server nie zastępują kopii zapasowych..