Zawsze lubię wizualizować rozwiązania wysokiej dostępności:
SQL Server Failover Cluster Instance (FCI)
Co jest wysoce dostępne? Cała instancja. Obejmuje to wszystkie obiekty serwera (loginy, zadania agenta SQL Server itp.). Dotyczy to również baz danych i ich zawierających jednostek. Jest to świetne rozwiązanie dla wysoce dostępnych instancji SQL Server, ponieważ będzie to poziom zabezpieczenia przed tym danym rozwiązaniem.
Co z raportowaniem? Brak, NULL, nieistniejący. Instancja klastra pracy awaryjnej ma aktywny węzeł dostarczający grupę klastrów zawierającą instancję, VNN itp., A wszystkie inne węzły są pasywne, siedzą bezczynnie (w odniesieniu do bieżącej grupy klastrów) i czekają na przełączenie awaryjne.
Co się stanie, gdy nastąpi przełączenie awaryjne? Przestój dla FCI będzie zależał od czasu, jaki węzeł pasywny potrzebuje, aby pobrać zasób klastra i doprowadzić instancję programu SQL Server do działania. Zazwyczaj jest to minimalny czas.
Jakaś abstrakcja klienta? Tak, będzie to wewnętrznie wbudowane w nazwę sieci wirtualnej dla instancji klastra pracy awaryjnej. To zawsze będzie wskazywać na aktywny węzeł, który obecnie dostarcza zasób klastra SQL Server.
Grupy dostępności AlwaysOn
Co jest wysoce dostępne? Grupa dostępności będzie tutaj logicznym zabezpieczeniem wysokiej dostępności, podczas gdy grupa dostępności składa się z wielu baz danych i nazwy sieci wirtualnej (detektor, opcjonalny zasób klastra). Warto zauważyć, że obiekty serwera, takie jak loginy i zadania agenta SQL Server, nie będą częścią rozwiązania wysokiej dostępności i należy zwrócić szczególną uwagę, aby zapewnić ich prawidłowe wdrożenie z grupą dostępności. Nie jest to zbyt obciążający wymóg, ale należy się nim zająć.
Co z raportowaniem? To świetne rozwiązanie do raportowania, chociaż prawdopodobnie nie użyłbym repliki synchronicznej jako mojej instancji raportowania. Istnieją dwie zależności zatwierdzania, synchroniczna i asynchroniczna. Moim zdaniem i z tego, co widziałem w praktyce, jest to, że twoja synchroniczna replika wtórna czeka na katastrofę. Pomyśl o tym jako o replice, która jest gotowa na przełączenie awaryjne bez utraty danych w razie problemu. Są też repliki asynchroniczne, które mogą obsłużyć to obciążenie raportowaniem. Nie używasz tej repliki jako wyżej wspomnianego rozwiązania, ale możesz zrobić coś takiego jak raportowanie. Obciążenia raportowania można skierować do tej repliki (bezpośrednio lub pośrednio poprzez routing tylko do odczytu za pośrednictwem nasłuchiwania).
Co się stanie, gdy nastąpi przełączenie awaryjne? W przypadku repliki wtórnej synchronicznego zatwierdzania sparowanej z automatycznym przełączaniem awaryjnym będzie to zmiana stanu roli repliki z SECONDARY_NORMAL na PRIMARY_NORMAL. Aby możliwe było automatyczne przełączanie awaryjne, musisz mieć synchroniczną replikę pomocniczą, która jest obecnie zsynchronizowana, a zaimplementowane są elastyczne zasady przełączania awaryjnego w celu ustalenia, kiedy faktycznie powinno nastąpić przełączenie awaryjne. Ta polityka jest rzeczywiście konfigurowalna.
Jakaś abstrakcja klienta? Tak, możesz opcjonalnie skonfigurować odbiornik AlwaysOn Availability Group. Jest to po prostu nazwa sieci wirtualnej (może być postrzegana przez WSFC jako zasób klastra w grupie klastrów AG), która wskazuje na bieżącą replikę podstawową. Jest to kluczowa część przesunięcia obciążenia raportowaniem, a także skonfigurowania listy routingu tylko do odczytu na wszystkich serwerach, które mają przekierowywać ruch ReadOnly (jest to ustawiane za pomocą ciągu połączenia za pomocą .NET Framework Provider for SQL Serwer, będzie to parametr Cel aplikacji , ustawiony na Tylko do odczytu ). Konieczne będzie również ustawienie adresu URL routingu tylko do odczytu dla każdej repliki, która ma otrzymać to obciążenie raportowaniem podczas pełnienia roli dodatkowej repliki.
Transakcyjna replikacja
Co jest wysoce dostępne? To jest dyskusyjne, ale nie powiem nic . Nie uważam replikacji za rozwiązanie wysokiej dostępności. Tak, zmiany danych są przekazywane subskrybentom, ale mówimy na poziomie publikacji / artykułu. Będzie to podzbiór danych (może obejmować wszystkie dane, ale nie zostanie to wymuszone. Tj. Utworzysz nową tabelę w bazie danych wydawcy, która nie zostanie automatycznie przekazana subskrybentom). Jeśli chodzi o HA, jest to dno lufy i nie będę go tam grupować z solidnym roztworem HA.
Co z raportowaniem? Świetne rozwiązanie do raportowania podzbioru danych, nie ma co do tego wątpliwości. Jeśli masz bazę danych o wielkości 1 TB, która jest wysoce transakcyjna i chcesz utrzymać obciążenie raportowaniem poza bazą danych OLTP, replikacja transakcyjna to świetny sposób na przekazanie podzbioru danych subskrybentowi (lub subskrybentom) w celu obciążenia raportowaniem. Co się stanie, jeśli z 1 TB danych obciążenie raportowaniem wynosi tylko około 50 GB? To inteligentne rozwiązanie i stosunkowo konfigurowalne w celu spełnienia potrzeb biznesowych.
Podsumowanie
Sprowadza się do kilku pytań, na które należy odpowiedzieć (częściowo przez biznes):
- Co musi być wysoce dostępne ?
- Co dyktuje SLA dla HA / DR?
- Jakiego rodzaju raportowanie będzie miało miejsce i jakie opóźnienia są dopuszczalne?
- Co musimy poradzić sobie z rozproszonym geograficznie HA? (replikacja magazynu jest kosztowna, ale musi być wymagana w przypadku FCI. AG nie wymagają pamięci współdzielonej z niezależnych instancji, a można użyć świadka udostępniania plików do kworum potencjalnie eliminującego potrzebę współdzielonego przechowywania)