Skonfiguruj zawsze dostępne grupy dostępności w programie SQL Server

W tym artykule przyjrzymy się instalacji krok po kroku i konfiguracji grup dostępności. Zawsze włączony w SQL Server w Windows Server 2019, weź pod uwagę scenariusze przełączania awaryjnego i szereg innych powiązanych problemów.

Grupy zawsze dostępne„Lub”Grupy zawsze dostępne„Jest technologią zapewniającą wysoką dostępność w SQL Server. Always On pojawił się w wersji Microsoft SQL Server 2012.

Treść

  • Funkcje grup zawsze włączonej dostępności w programie SQL Server
  • Skonfiguruj klaster pracy awaryjnej systemu Windows Server na Zawsze włączony
  • Konfiguracja Always On w MS SQL Server
  • Always On: kontrola wydajności, automatyczne przełączanie awaryjne

Funkcje grup zawsze włączonej dostępności w programie SQL Server

Do czego można używać grup dostępności programu SQL Server?

  • Wysoka dostępność MS SQL i automatyczne przełączanie awaryjne;
  • Równoważenie obciążenia - wybrane zapytania między węzłami (repliki wtórne mogą być czytelne);
  • Kopia zapasowa z wtórnych replik;
  • Nadmiarowość danych. Każda replika przechowuje kopie baz danych grup dostępności.

Always On działa na platformie Klaster pracy awaryjnej systemu Windows Server (WSFC). WSFC monitoruje węzły uczestniczące w grupie dostępności i może automatycznie zawieść poprzez głosowanie między węzłami. Począwszy od MS SQL Server 2017, możliwość korzystania z Always On bez WSFC, w tym na Linux systemy. Podczas budowania klastra Linux możesz użyć Pacemaker jako alternatywy dla WSFC.

Zawsze włączone jest dostępne pod adresem Standard edycja, ale z pewnymi ograniczeniami:

  • Limit na 2 repliki (pierwotną i wtórną);
  • Druga replika nie może być używana do dostępu do odczytu;
  • Druga replika nie może być używana do tworzenia kopii zapasowych MS SQL;
  • Obsługuje tylko 1 bazę danych na grupę dostępności.

W redaktorach Przedsiębiorstwo bez ograniczeń.

Funkcje licencjonowania MS SQL Server.

Rozumiemy terminologię:

  • Grupa dostępności zawsze włączona - Jest to zbiór replik i baz danych.
  • Replika - Jest to wystąpienie programu SQL Server w grupie dostępności. Replika może być główna (podstawowy) i wtórne (wtórne) Każda replika może zawierać jedną lub więcej baz danych.

Always On jest oparty na WSFC. Każdy węzeł grupy dostępności musi być członkiem klastra pracy awaryjnej systemu Windows. Każde wystąpienie programu SQL Server może mieć wiele grup dostępności. Każda grupa dostępności może mieć maksymalnie 8 replik wtórnych.

Jeśli replika się nie powiedzie, klaster będzie głosować na nową replikę podstawową, a Always On prześle jedną z replik dodatkowych do podstawowej. Ponieważ podczas pracy z Always On użytkownicy łączą się z detektorem klastra (lub Listener, czyli specjalnym adresem IP klastra i odpowiednią nazwą DNS), możliwość pełnego zapisywania żądań. Detektor jest również odpowiedzialny za równoważenie wybranych zapytań między replikami dodatkowymi..

Skonfiguruj klaster pracy awaryjnej systemu Windows Server na Zawsze włączony

Przede wszystkim musimy skonfigurować klaster pracy awaryjnej we wszystkich węzłach, które będą uczestniczyć w Always On.

Moja konfiguracja:

  • 2 maszyny wirtualne w Hyper-V z Windows Server 2019;
  • 2 wystąpienia wersji Enterprise Server SQL Server 2019;
  • Nazwa hosta węzłów to testnode1 i testnode2. Nazwa instancji node1 i node2.

W Menedżerze serwera dodaj rolę Klaster pracy awaryjnej, lub zainstaluj komponent za pomocą PowerShell:

Install-WindowsFeature -Name Failover-Clustering -IncludeManagementTools

Instalacja jest automatyczna, nie musisz jeszcze niczego konfigurować. Po zakończeniu instalacji uruchom przystawkę. Menedżer klastra pracy awaryjnej (FailoverClusters.SnapInHelper.msc).

Utwórz nowy klaster.

Dodaj nazwy serwerów, które będą uczestniczyć w klastrze.

Następnie kreator oferuje zdanie testów. Nie odmawiaj, wybierz pierwszy element.

Podaj nazwę klastra, wybierz sieć i adres IP klastra. Nazwa klastra pojawi się automatycznie w DNS, nie trzeba go specjalnie rejestrować. W moim przypadku nazwa klastra - ClusterAG.

Usuwamy czeboków ”Dodaj całą odpowiednią przestrzeń dyskową do klastra”, Ponieważ możemy dodać dyski później.

W klastrze są tylko 2 węzły, więc musisz skonfigurować Kworum klastra. Kworum gromady to „głos decydujący”. Na przykład jeśli jeden z węzłów klastra stanie się niedostępny, klaster musi ustalić, które węzły są faktycznie dostępne i mogą się widzieć. Kworum jest potrzebne do zachowania spójności klastra (Klaster -> Więcej działań -> Konfiguruj ustawienia kworum klastrów).

Wybierz typ świadka kworum.

Następnie wybierz typ świadka - folder sieciowy (świadek udostępniania plików).

Podaj ścieżkę UNC do folderu sieciowego. Musisz samodzielnie utworzyć ten katalog i musi on znajdować się na serwerze, który nie jest włączony w klaster..

Podczas konfigurowania klastra może pojawić się błąd:

Wystąpił błąd podczas konfigurowania monitora udziału plików. Nie można zapisać zmian właściwości Świadka udziału plików. System nie może znaleźć określonego pliku.

Najprawdopodobniej oznacza to, że użytkownik, z którego działa klaster, nie ma uprawnień do tego folderu sieciowego. Domyślnie klaster działa jako użytkownik lokalny. Możesz przyznać uprawnienia do tego folderu wszystkim komputerom w klastrze lub zmienić konto usługi klastrowej i przyznać do niej uprawnienia.

To kończy podstawową konfigurację klastra. Upewnij się, że DNS klastra jest zarejestrowany i podaje poprawny adres IP

Konfiguracja Always On w MS SQL Server

Po standardowej instalacji instancji programu SQL Server można włączyć i skonfigurować grupy zawsze włączone. Muszą być uwzględnione w SQL Server Menedżer konfiguracji w właściwościach instancji. Jak widać na zrzucie ekranu, SQL Server już ustalił, że jest członkiem klastra WSFC. Zaznacz pole wyboru „Włącz grupy dostępności zawsze włączone”I zrestartuj usługę instancji MSSQL. Wykonaj te same kroki w drugiej instancji.

Wskazówka.. Przed skonfigurowaniem Always On upewnij się, że usługi SQL Server nie działają na lokalnym koncie systemowym. Zaleca się korzystanie z kont usług zarządzanych przez grupę lub zwykłego konta domeny. W przeciwnym razie nie można ukończyć instalacji Always On..

W SQL Server Management Studio kliknij „Zawsze wysoka dostępność”I uruchom kreatora konfiguracji grupy dostępności (Kreator nowej grupy dostępności).

Podaj nazwę grupy Always On Availability Group i wybierz „Wykrywanie stanu zdrowia na poziomie bazy danych„ Dzięki tej opcji Always On będzie w stanie określić, kiedy baza danych jest w stanie niezdrowym..

Wybierz bazy danych SQL Server, które będą uczestniczyć w grupie Always On Availability Group..

Kliknij „Dodaj replikę ...” i połącz się z drugim serwerem SQL. W ten sposób możesz dodać do 8 serwerów.

  • Początkowa rola - Rola repliki w momencie tworzenia grupy. Może być pierwotny i wtórny;
  • Automatyczne przełączanie awaryjne - jeśli baza danych stanie się niedostępna, Always On przenosi podstawową rolę do innej repliki. Zaznacz pole wyboru;
  • Tryb dostępności - może wybrać Zatwierdzanie synchroniczne lub Zatwierdzanie asynchroniczne. Po wybraniu trybu synchronicznego transakcje przychodzące do repliki podstawowej zostaną wysłane do wszystkich innych replik wtórnych w trybie synchronicznym. Replika główna kończy transakcję dopiero po zapisaniu transakcji na dysku przez repliki. Eliminuje to możliwość utraty danych w przypadku awarii podstawowej repliki. W trybie asynchronicznym główna replika natychmiast rejestruje zmiany, nie czekając na odpowiedź z replik pomocniczych;
  • Czytelne wtórne - parametr określający możliwość wykonywania wybranych zapytań do replik wtórnych. Jeśli tak, klienci nawet z połączeniem bez ApplicationIntent = tylko do odczytu mogą uzyskać dostęp tylko do odczytu;
  • Wymagane do zsynchronizowania pomocniczych elementów pomocniczych - Liczba zsynchronizowanych wtórnych replik do zakończenia transakcji. Konieczne jest ustawienie w zależności od liczby replik, postawię 1. Należy pamiętać, że jeśli wtórne synchronizowane repliki staną się mniejsze niż określona liczba (na przykład podczas wypadku), bazy danych grup dostępności staną się niedostępne nawet do odczytu.

Punkty końcowe nie dotykają.

Tab Preferencje tworzenia kopii zapasowych Możesz wybrać, gdzie będą tworzone kopie zapasowe. Wszystko pozostawiamy jako domyślne - Wolę wtórne.

Podaj nazwę detektora grupy dostępu, port i adres IP.

Tab Routing tylko do odczytu pozostawić bez zmian.

Wybieramy sposób synchronizacji replik. Pozostawiam pierwszy punkt - automatyczna synchronizacja (Automatyczne wysiewanie).

Następnie twoje ustawienia powinny zostać zweryfikowane. Jeśli nie ma błędów, kliknij przycisk Zakończ, aby zastosować zmiany..

W moim przypadku wszystkie testy zakończyły się powodzeniem, ale po instalacji w kroku Wyniki kreator zgłosił błąd podczas tworzenia detektora grupy dostępności. Dzienniki klastra zawierały następujący błąd:

Nie można utworzyć powiązanego obiektu komputerowego w domenie z nazwą sieciową klastra.

Oznacza to, że klaster nie ma wystarczających uprawnień do utworzenia detektora. Dokumentacja mówi, że wystarczy zezwolić na tworzenie obiektów typu „komputer” na obiekcie klastra. Najłatwiej to zrobić, delegując uprawnienia do AD (lub szybką, ale złą opcją jest tymczasowe dodanie obiektu CLUSTERAG $ do grupy Domain Admins).

Podczas diagnozowania problemów z Always ON i niską wydajnością SQL w grupie dostępności, oprócz standardowych narzędzi diagnostycznych SQL Server, należy uważnie przyjrzeć się dziennikom klastra systemu Windows.

Ponieważ utworzyłem grupę ułatwień dostępu, ale odbiornik nie jest, dodałem ją ręcznie. Wzywamy menu kontekstowe w grupie dostępności i klikamy Dodaj słuchacza...

Podaj adres IP, port i nazwę DNS odbiornika.

Sprawdź, czy nasłuchiwanie pojawia się w sekcji Dostępne nasłuchiwania grupy Zawsze włączone.

To kończy podstawową konfigurację grupy Always On Availability Group..

Always On: kontrola wydajności, automatyczne przełączanie awaryjne

Spójrz na Dashboard Dashboard.

Wszystko jest w porządku, grupa dostępności jest utworzona i działa..

Spróbujmy przenieść główną rolę do wystąpienia node2 w trybie ręcznym. Kliknij prawym przyciskiem myszy grupę dostępności i wybierz Przełączanie awaryjne.

Warto zwrócić uwagę na przedmiot Gotowość do pracy awaryjnej. Wartość Bez utraty danych oznacza, że ​​utrata danych podczas przejścia jest wykluczona.

Łączenie z węzłem 2.

Kliknij przycisk Zakończ.

Sprawdź, czy node2 stał się podstawową repliką w grupie dostępności (wystąpienie podstawowe).

Upewnij się, że detektor działa poprawnie. W SSMS podaj nazwę DNS detektora i portu, oddzielając je przecinkami: ag1-listener-1,1445

Zróbmy proste wstawianie, wybieranie i aktualizowanie zapytań do naszej bazy danych SQL Server.

Teraz sprawdźmy automatyczne przełączanie awaryjne głównej repliki. Wystarczy zakończyć proces sqlservr.exe na TESTNODE2.

Sprawdzanie statusu grupy dostępności w pozostałym węźle - TESTNODE1 \ NODE1.

Klaster automatycznie przekazał status repliki testnode1 \ node1 do podstawowego, ponieważ testnode2 \ node2 stał się niedostępny.

Sprawdzimy stan detektora, ponieważ połączenia klientów do niego przejdą.

W moim przypadku udało mi się połączyć z detektorem, ale wystąpił błąd podczas uzyskiwania dostępu do bazy danych

Nie można uzyskać dostępu do bazy danych „TestDatabase”, ponieważ brakuje kworum węzłów dla wysokiej dostępności. Spróbuj ponownie wykonać operację później.

Ten błąd wystąpił z powodu „Wymagane do zsynchronizowania pomocniczych elementów pomocniczych„ Ponieważ podczas konfiguracji ustawiamy tę wartość na 1, Zawsze włączone uniemożliwia nam połączenie z bazą danych, ponieważ mamy tylko jedną replikę podstawową.

Ustaw tę wartość na 0 i spróbuj ponownie.

Włącz testnode2 i sprawdź status grupy.

Status podstawowej repliki pozostał z testnode1, a testnode2 stał się repliką wtórną. Dane, które zmieniliśmy na testnode1, gdy testnode2 został wyłączony, pomyślnie zsynchronizowano po włączeniu komputera.

To koniec testów. Zadbaliśmy o to, aby wszystko działało poprawnie, aw przypadku krytycznej awarii dane pozostaną dostępne do odczytu / zapisu.

Oprócz Always On, SQL Server ma kilka innych technologii wysokiej dostępności..

Grupy Always On Availability są dość łatwe do skonfigurowania. Jeśli staniesz przed zadaniem zbudowania odpornego na uszkodzenia rozwiązania opartego na SQL Server, grupy dostępności wykonają to zadanie doskonale.

Wraz z wydaniem SQL Server 2017 i SQL Server 2019 SQL Server Management Studio 18.x wprowadził ustawienia Always On, które wcześniej były dostępne tylko przez T-SQL, dlatego zaleca się korzystanie z najnowszej wersji SSMS.