Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:Program SQL Server w systemie Linux
W tym samouczku pokazano, jak utworzyć i skonfigurować grupę dostępności dla programu SQL Server w systemie Linux. W przeciwieństwie do programu SQL Server 2016 (13.x) i starszych wersji działających na Windows, możesz włączyć grupę dostępności, najpierw tworząc lub nie tworząc bazowego klastra Pacemaker. Integracja z klastrem, w razie potrzeby, odbywa się później.
Samouczek obejmuje następujące zadania:
- Włącz grupy dostępności.
- Utwórz punkty końcowe grupy dostępności i certyfikaty.
- Użyj programu SQL Server Management Studio (SSMS) lub Transact-SQL, aby utworzyć grupę dostępności.
- Utwórz identyfikator logowania i uprawnienia programu SQL Server dla programu Pacemaker.
- Utwórz zasoby grupy dostępności w klastrze Pacemaker (tylko typ zewnętrzny).
Warunki wstępne
Wdróż klaster o wysokiej dostępności Pacemaker zgodnie z instrukcją w Wdrażanie klastra Pacemaker dla programu SQL Server w systemie Linux.
Włączanie funkcji grup dostępności
W przeciwieństwie do systemu Windows nie można używać programu PowerShell ani programu SQL Server Configuration Manager w celu włączenia funkcji grup dostępności. W systemie Linux można włączyć funkcję grup dostępności na dwa sposoby: użyć narzędzia mssql-conf lub ręcznie edytować mssql.conf plik.
Ważny
Należy włączyć funkcję AG dla replik konfiguracyjnych, nawet w przypadku programu SQL Server Express.
Korzystanie z narzędzia mssql-conf
W wierszu polecenia uruchom następujące polecenie:
sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
Edytowanie pliku mssql.conf
Możesz również zmodyfikować mssql.conf plik znajdujący się w folderze /var/opt/mssql . Dodaj następujące wiersze:
[hadr]
hadr.hadrenabled = 1
Uruchom ponownie program SQL Server
Po włączeniu grup dostępności należy ponownie uruchomić program SQL Server. Użyj następującego polecenia:
sudo systemctl restart mssql-server
Utwórz punkty końcowe i certyfikaty grupy dostępności
Grupa dostępności używa punktów końcowych TCP do komunikacji. W systemie Linux punkty końcowe grupy dostępności są obsługiwane tylko wtedy, gdy certyfikaty są używane do uwierzytelniania. Należy przywrócić certyfikat z jednego wystąpienia we wszystkich innych wystąpieniach, które uczestniczą jako repliki w tej samej grupie dostępności. Proces certyfikatu jest wymagany nawet w przypadku repliki tylko do konfiguracji.
Można tworzyć tylko punkty końcowe i przywracać certyfikaty przy użyciu języka Transact-SQL. Można również użyć certyfikatów niegenerowanych przez program SQL Server. Potrzebny jest również proces zarządzania i zastępowania wszystkich certyfikatów, które wygasają.
Ważny
Jeśli planujesz użyć kreatora SQL Server Management Studio do utworzenia AG, nadal musisz utworzyć i przywrócić certyfikaty, korzystając z Transact-SQL w systemie Linux.
Aby uzyskać pełną składnię dostępnych opcji dla różnych poleceń (w tym zabezpieczeń), zapoznaj się z tematem:
Notatka
Mimo że tworzysz grupę dostępności, typ punktu końcowego używa FOR DATABASE_MIRRORING, ponieważ niektóre podstawowe aspekty zostały kiedyś udostępnione tej przestarzałej funkcji.
W tym przykładzie są tworzone certyfikaty dla konfiguracji z trzema węzłami. Nazwy wystąpień to LinAGN1, LinAGN2i LinAGN3.
Wykonaj następujący skrypt na
LinAGN1, aby utworzyć klucz główny, certyfikat i punkt końcowy oraz utworzyć kopię zapasową certyfikatu. W tym przykładzie dla punktu końcowego jest używany typowy port TCP 5022.CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>'; GO CREATE CERTIFICATE LinAGN1_Cert WITH SUBJECT = 'LinAGN1 AG Certificate'; GO BACKUP CERTIFICATE LinAGN1_Cert TO FILE = '/var/opt/mssql/data/LinAGN1_Cert.cer'; GO CREATE ENDPOINT AGEP STATE = STARTED AS TCP ( LISTENER_PORT = 5022, LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE LinAGN1_Cert, ROLE = ALL ); GOWykonaj to samo w
LinAGN2:CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>'; GO CREATE CERTIFICATE LinAGN2_Cert WITH SUBJECT = 'LinAGN2 AG Certificate'; GO BACKUP CERTIFICATE LinAGN2_Cert TO FILE = '/var/opt/mssql/data/LinAGN2_Cert.cer'; GO CREATE ENDPOINT AGEP STATE = STARTED AS TCP ( LISTENER_PORT = 5022, LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE LinAGN2_Cert, ROLE = ALL ); GONa koniec wykonaj tę samą sekwencję na
LinAGN3:CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>'; GO CREATE CERTIFICATE LinAGN3_Cert WITH SUBJECT = 'LinAGN3 AG Certificate'; GO BACKUP CERTIFICATE LinAGN3_Cert TO FILE = '/var/opt/mssql/data/LinAGN3_Cert.cer'; GO CREATE ENDPOINT AGEP STATE = STARTED AS TCP ( LISTENER_PORT = 5022, LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE LinAGN3_Cert, ROLE = ALL ); GOZa pomocą
scplub innego narzędzia skopiuj kopie zapasowe certyfikatu do każdego węzła, który będzie częścią grupy dostępności.W tym przykładzie:
- Skopiuj
LinAGN1_Cert.cerdoLinAGN2iLinAGN3. - Skopiuj
LinAGN2_Cert.cerdoLinAGN1iLinAGN3. - Skopiuj
LinAGN3_Cert.cerdoLinAGN1iLinAGN2.
- Skopiuj
Zmień własność i grupę użytkowników skojarzoną z plikami certyfikatów, które zostały skopiowane, na
mssql.sudo chown mssql:mssql <CertFileName>Utwórz loginy na poziomie wystąpienia oraz użytkowników powiązanych z
LinAGN2iLinAGN3naLinAGN1.CREATE LOGIN LinAGN2_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN2_User FOR LOGIN LinAGN2_Login; GO CREATE LOGIN LinAGN3_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN3_User FOR LOGIN LinAGN3_Login; GOOstrożność
Hasło powinno być zgodne z domyślnymi zasadami haseł programu SQL Server. Domyślnie hasło musi mieć długość co najmniej ośmiu znaków i zawierać znaki z trzech z następujących czterech zestawów: wielkie litery, małe litery, cyfry podstawowe-10 i symbole. Hasła mogą mieć długość maksymalnie 128 znaków. Używaj haseł, które są tak długie i złożone, jak to możliwe.
Przywróć
LinAGN2_CertiLinAGN3_CertwLinAGN1. Posiadanie certyfikatów innych replik jest ważnym aspektem komunikacji i zabezpieczeń grupy dostępności (AG).CREATE CERTIFICATE LinAGN2_Cert AUTHORIZATION LinAGN2_User FROM FILE = '/var/opt/mssql/data/LinAGN2_Cert.cer'; GO CREATE CERTIFICATE LinAGN3_Cert AUTHORIZATION LinAGN3_User FROM FILE = '/var/opt/mssql/data/LinAGN3_Cert.cer'; GOUdziel logowaniom skojarzonym z
LinAGN2iLinAGN3uprawnienia do połączenia z punktem końcowym naLinAGN1.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN2_Login; GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login;Utwórz loginy na poziomie wystąpienia oraz użytkowników powiązanych z
LinAGN1iLinAGN3naLinAGN2.CREATE LOGIN LinAGN1_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN1_User FOR LOGIN LinAGN1_Login; GO CREATE LOGIN LinAGN3_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN3_User FOR LOGIN LinAGN3_Login; GOPrzywróć
LinAGN1_CertiLinAGN3_CertwLinAGN2.CREATE CERTIFICATE LinAGN1_Cert AUTHORIZATION LinAGN1_User FROM FILE = '/var/opt/mssql/data/LinAGN1_Cert.cer'; GO CREATE CERTIFICATE LinAGN3_Cert AUTHORIZATION LinAGN3_User FROM FILE = '/var/opt/mssql/data/LinAGN3_Cert.cer'; GOUdziel logowaniom skojarzonym z
LinAGN1iLinAGN3uprawnienia do połączenia z punktem końcowym naLinAGN2.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN1_Login; GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login; GOUtwórz loginy na poziomie wystąpienia oraz użytkowników powiązanych z
LinAGN1iLinAGN2naLinAGN3.CREATE LOGIN LinAGN1_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN1_User FOR LOGIN LinAGN1_Login; GO CREATE LOGIN LinAGN2_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN2_User FOR LOGIN LinAGN2_Login; GOPrzywróć
LinAGN1_CertiLinAGN2_CertwLinAGN3.CREATE CERTIFICATE LinAGN1_Cert AUTHORIZATION LinAGN1_User FROM FILE = '/var/opt/mssql/data/LinAGN1_Cert.cer'; GO CREATE CERTIFICATE LinAGN2_Cert AUTHORIZATION LinAGN2_User FROM FILE = '/var/opt/mssql/data/LinAGN2_Cert.cer'; GOUdziel logowaniom skojarzonym z
LinAG1iLinAGN2uprawnienia do połączenia z punktem końcowym naLinAGN3.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN1_Login; GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN2_Login; GO
Tworzenie grupy dostępności
W tej sekcji pokazano, jak używać programu SQL Server Management Studio (SSMS) lub Transact-SQL do utworzenia grupy dostępności dla SQL Server.
Korzystanie z programu SQL Server Management Studio
W tej sekcji opisano sposób tworzenia Grupy Dostępności (AG) z klastrem typu zewnętrznego przy użyciu SSMS i Kreatora nowej grupy dostępności.
W programie SSMS rozwiń Always On High Availability, kliknij prawym przyciskiem myszy Grupy dostępności, i wybierz Kreator Nowej Grupy Dostępności.
W oknie dialogowym Wprowadzenie wybierz pozycję Dalej.
W oknie dialogowym Określanie opcji grupy dostępności wprowadź nazwę grupy dostępności i wybierz typ klastra
EXTERNALlubNONEna liście rozwijanej. UżyjEXTERNALpodczas wdrażania programu Pacemaker.NONEsłuży do wyspecjalizowanych zastosowań, takich jak skalowanie poziome odczytu. Wybranie opcji wykrywania kondycji na poziomie bazy danych jest opcjonalne. Aby uzyskać więcej informacji na temat tej opcji, zobacz opcję wykrywania kondycji zdrowotnej na poziomie bazy danych grupy dostępności. Wybierz pozycję Dalej.W oknie dialogowym Wybieranie baz danych wybierz bazy danych, które będą uczestniczyć w ag. Każda baza danych musi mieć pełną kopię zapasową, zanim będzie można dodać ją do grupy dostępności. Wybierz pozycję Dalej.
W oknie dialogowym Określanie replik wybierz pozycję Dodaj replikę.
W oknie dialogowym Łączenie z serwerem wprowadź nazwę wystąpienia SQL Server na systemie Linux, które będzie repliką pomocniczą, oraz poświadczenia niezbędne do połączenia. Wybierz Połącz.
Powtórz dwa poprzednie kroki dla wystąpienia, które będzie zawierać replikę tylko konfiguracyjną lub inną replikę pomocniczą.
Wszystkie trzy wystąpienia są wyświetlane w oknie dialogowym Określanie replik. Jeśli używasz typu klastra Zewnętrzny, w przypadku repliki pomocniczej będącej prawdziwym sekundarnym, upewnij się, że tryb dostępności jest zgodny z repliką podstawową i tryb failover jest ustawiony na Zewnętrzny. W przypadku repliki tylko do konfiguracji wybierz tryb dostępności: tylko Konfiguracja.
W poniższym przykładzie przedstawiono grupę dostępności z dwiema replikami, typ klastra: External, oraz replikę przeznaczoną wyłącznie do konfiguracji.
W poniższym przykładzie przedstawiono AG z dwiema replikami, typem klastra 'None' i repliką przeznaczoną wyłącznie do konfiguracji.
Jeśli chcesz zmienić preferencje tworzenia kopii zapasowej, wybierz kartę Preferencje kopii zapasowej. Aby uzyskać więcej informacji na temat preferencji tworzenia kopii zapasowych w grupach dostępności, zobacz Konfigurowanie kopii zapasowych na replikach pomocniczych grupy dostępności Always On.
Jeśli używasz czytelnych replik lub utworzysz grupę dostępności z typem klastra Brak na potrzeby skalowania odczytu, możesz utworzyć użytkownika, wybierając kartę Użytkownik. Możesz również dodać użytkownika później. Aby utworzyć odbiornik, wybierz opcję Utwórz odbiornik grupy dostępności i wprowadź nazwę, port TCP/IP i określ, czy używać statycznego, czy automatycznie przypisanego adresu IP DHCP. W przypadku grupy dostępności z typem klastra None adres IP powinien być statyczny i ustawiony na adres IP podstawowego.
Jeśli tworzysz odbiornik dla scenariuszy z możliwością odczytu, program SSMS umożliwia tworzenie routingu tylko do odczytu w kreatorze. Możesz również dodać go później za pomocą programu SSMS lub języka Transact-SQL. Aby dodać teraz routing tylko do odczytu:
Wybierz kartę Read-Only Routing.
Wprowadź adresy URL replik tylko do odczytu. Te adresy URL są podobne do punktów końcowych, z wyjątkiem używania portu wystąpienia, a nie punktu końcowego.
Wybierz każdy adres URL i u dołu wybierz repliki z możliwością odczytu. Aby wybrać wiele opcji, przytrzymaj naciśnięty SHIFT lub przeciągnij.
Wybierz pozycję Dalej.
Wybierz sposób inicjowania replik pomocniczych. Wartością domyślną jest użycie automatycznego rozmieszczania, co wymaga tej samej ścieżki na wszystkich serwerach uczestniczących w ag. Możesz również skorzystać z kreatora, aby utworzyć kopię zapasową, skopiować i przywrócić (druga opcja); użyć go, jeśli ręcznie utworzono kopię zapasową, skopiowano i przywrócono bazę danych na replikach (trzecia opcja); lub dodać bazę danych później (ostatnia opcja). Podobnie jak w przypadku certyfikatów, jeśli ręcznie tworzysz kopie zapasowe i kopiujesz je, ustaw uprawnienia do plików kopii zapasowych w innych replikach. Wybierz pozycję Dalej.
W oknie dialogowym Walidacja, jeśli wszystko nie wróci jako Powodzenie, zbadaj. Niektóre ostrzeżenia są dopuszczalne i niefatalne, na przykład jeśli nie utworzysz odbiornika. Wybierz pozycję Dalej.
W oknie dialogowym Podsumowanie wybierz pozycję Zakończ. Rozpoczyna się proces tworzenia AG.
Po zakończeniu tworzenia grupy dostępności wybierz opcję Zamknij w sekcji Wyniki. Grupa dostępności (AG) jest teraz widoczna w replikach w dynamicznych widokach zarządzania oraz w folderze Always On High Availability w programie SSMS (SQL Server Management Studio).
Użyj Transact-SQL
W tej sekcji przedstawiono przykłady tworzenia grupy dostępności przy użyciu języka Transact-SQL. Odbiornik i routing tylko do odczytu można skonfigurować po utworzeniu grupy dostępności. AG można zmodyfikować przy użyciu polecenia ALTER AVAILABILITY GROUP, ale nie można zmienić typu klastra w programie SQL Server 2017 (14.x). Jeśli nie miałeś na myśli utworzenia grupy dostępności z typem klastra Zewnętrzne, musisz ją usunąć i ponownie utworzyć z typem klastra Brak. Aby uzyskać więcej informacji i innych opcji, zobacz następujące linki:
- UTWÓRZ GRUPĘ DOSTĘPNOŚCI (Transact-SQL)
- ZMIEŃ GRUPĘ DOSTĘPNOŚCI (Transact-SQL)
- Konfigurowanie routingu tylko do odczytu dla zawsze włączonej grupy dostępności
- Konfigurowanie odbiornika dla zawsze włączonej grupy dostępności
Przykład A: Dwie repliki z repliką przeznaczoną wyłącznie do konfiguracji (typ zewnętrznego klastra)
W tym przykładzie pokazano, jak utworzyć grupę dostępności z dwiema replikami, używającą repliki wyłącznie konfiguracyjnej.
Wykonaj następującą instrukcję w węźle, który będzie działać jako replika podstawowa i zawiera pełną kopię odczytu/zapisu baz danych. W tym przykładzie użyto automatycznego rozmieszczania.
CREATE AVAILABILITY GROUP [<AGName>] WITH (CLUSTER_TYPE = EXTERNAL) FOR DATABASE <DBName> REPLICA ON N'LinAGN1' WITH ( ENDPOINT_URL = N' TCP://LinAGN1.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT ), N'LinAGN2' WITH ( ENDPOINT_URL = N'TCP://LinAGN2.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, SEEDING_MODE = AUTOMATIC ), N'LinAGN3' WITH ( ENDPOINT_URL = N'TCP://LinAGN3.FullyQualified.Name:5022', AVAILABILITY_MODE = CONFIGURATION_ONLY ); GOW oknie zapytania połączonym z drugą repliką wykonaj następujące polecenie, aby dołączyć replikę do grupy dostępności i zainicjować proces inicjowania replikacji z repliki głównej do repliki podrzędnej.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE; GOW oknie zapytania połączonym z repliką służącą tylko do konfiguracji uruchom następującą instrukcję, aby przyłączyć ją do grupy dostępności (AG).
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO
Przykład B: trzy repliki z routingiem tylko do odczytu (typ klastra zewnętrznego)
W tym przykładzie przedstawiono trzy pełne repliki i sposób konfigurowania routingu z ograniczeniem do odczytu jako część początkowej konfiguracji grupy dostępności.
Wykonaj następującą instrukcję w węźle, który będzie działać jako replika podstawowa i zawiera pełną kopię odczytu/zapisu baz danych. W tym przykładzie użyto automatycznego rozmieszczania.
CREATE AVAILABILITY GROUP [<AGName>] WITH (CLUSTER_TYPE = EXTERNAL) FOR DATABASE < DBName > REPLICA ON N'LinAGN1' WITH ( ENDPOINT_URL = N'TCP://LinAGN1.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = ( ( 'LinAGN2.FullyQualified.Name', 'LinAGN3.FullyQualified.Name' ) )), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN1.FullyQualified.Name:1433') ), N'LinAGN2' WITH ( ENDPOINT_URL = N'TCP://LinAGN2.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, SEEDING_MODE = AUTOMATIC, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = ( ( 'LinAGN1.FullyQualified.Name', 'LinAGN3.FullyQualified.Name' ) )), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN2.FullyQualified.Name:1433') ), N'LinAGN3' WITH ( ENDPOINT_URL = N'TCP://LinAGN3.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, SEEDING_MODE = AUTOMATIC, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = ( ( 'LinAGN1.FullyQualified.Name', 'LinAGN2.FullyQualified.Name' ) )), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN3.FullyQualified.Name:1433') ) LISTENER '<ListenerName>' ( WITH IP = ('<IPAddress>', '<SubnetMask>'), Port = 1433 ); GOKilka rzeczy, na które należy zwrócić uwagę w tej konfiguracji
-
AGNamejest nazwą grupy dostępności. -
DBNameto nazwa bazy danych używanej z grupą dostępności. Może to być również lista nazw rozdzielonych przecinkami. -
ListenerNameto nazwa, która różni się od dowolnego z serwerów lub węzłów bazowych. Jest on zarejestrowany w systemie DNS wraz zIPAddress. -
IPAddressto adres IP skojarzony z elementemListenerName. Jest on również unikatowy, a nie taki sam jak którykolwiek z serwerów lub węzłów. Aplikacje i użytkownicy końcowi używająListenerNamelubIPAddressdo łączenia się z AG.-
SubnetMaskjest maską podsieciIPAddress. W programie SQL Server 2019 (15.x) i poprzednich wersjach ta wartość to255.255.255.255. W programie SQL Server 2022 (16.x) i nowszych wersjach ta wartość to0.0.0.0.
-
-
W oknie zapytania połączonym z drugą repliką wykonaj następującą instrukcję, aby dodać replikę do AG i zainicjować proces seedingu z repliki głównej do repliki podrzędnej.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE; GOPowtórz krok 2 dla trzeciej repliki.
Przykład C: dwie repliki z routingiem tylko do odczytu (brak typu klastra)
W tym przykładzie pokazano tworzenie konfiguracji z dwiema replikami przy użyciu typu klastra None. Użyj tej konfiguracji dla scenariusza skalowania odczytu, w którym nie oczekuje się przełączenia awaryjnego. Ten krok tworzy nasłuchiwacz, który faktycznie jest podstawową repliką, oraz routing tylko do odczytu przy użyciu funkcji round-robin.
Wykonaj następującą instrukcję w węźle, który będzie działać jako replika podstawowa i zawiera pełną kopię odczytu/zapisu baz danych. W tym przykładzie użyto automatycznego rozmieszczania.
CREATE AVAILABILITY GROUP [<AGName>] WITH (CLUSTER_TYPE = NONE) FOR DATABASE <DBName> REPLICA ON N'LinAGN1' WITH ( ENDPOINT_URL = N'TCP://LinAGN1.FullyQualified.Name: <PortOfEndpoint>', FAILOVER_MODE = MANUAL, AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, PRIMARY_ROLE( ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = (('LinAGN1.FullyQualified.Name'.'LinAGN2.FullyQualified.Name')) ), SECONDARY_ROLE( ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN1.FullyQualified.Name:<PortOfInstance>' ) ), N'LinAGN2' WITH ( ENDPOINT_URL = N'TCP://LinAGN2.FullyQualified.Name:<PortOfEndpoint>', FAILOVER_MODE = MANUAL, SEEDING_MODE = AUTOMATIC, AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = ( ('LinAGN1.FullyQualified.Name', 'LinAGN2.FullyQualified.Name') )), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN2.FullyQualified.Name:<PortOfInstance>') ), LISTENER '<ListenerName>' (WITH IP = ( '<PrimaryReplicaIPAddress>', '<SubnetMask>'), Port = <PortOfListener> ); GOW tym przykładzie:
-
AGNamejest nazwą grupy dostępności. -
DBNameto nazwa bazy danych używanej z grupą dostępności. Może to być również lista nazw rozdzielonych przecinkami. -
PortOfEndpointto numer portu używany przez utworzony punkt końcowy.-
PortOfInstanceto numer portu używany przez wystąpienie programu SQL Server.
-
-
ListenerNameto nazwa, która różni się od którejkolwiek z bazowych replik, ale nie jest w rzeczywistości używana. -
PrimaryReplicaIPAddressjest adresem IP repliki podstawowej.-
SubnetMaskjest maską podsieciIPAddress. W programie SQL Server 2019 (15.x) i poprzednich wersjach ta wartość to255.255.255.255. W programie SQL Server 2022 (16.x) i nowszych wersjach ta wartość to0.0.0.0.
-
-
Dołącz replikę pomocniczą do grupy dostępności (AG) i zainicjuj automatyczne wypełnianie.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = NONE); GO ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE; GO
Tworzenie identyfikatora logowania i uprawnień programu SQL Server dla programu Pacemaker
Klaster o wysokiej dostępności Pacemaker korzystający z SQL Server na systemie Linux musi mieć dostęp do instancji SQL Server i uprawnienia do samej grupy dostępności. Te kroki umożliwiają utworzenie logowania i skojarzonych uprawnień oraz pliku, który informuje Pacemaker, jak zalogować się do SQL Server.
W oknie zapytania połączonym z pierwszą repliką wykonaj następujący skrypt:
CREATE LOGIN PMLogin WITH PASSWORD ='<password>'; GO GRANT VIEW SERVER STATE TO PMLogin; GO GRANT ALTER, CONTROL, VIEW DEFINITION ON AVAILABILITY GROUP::<AGThatWasCreated> TO PMLogin; GOW węźle 1 wprowadź polecenie:
sudo emacs /var/opt/mssql/secrets/passwdTo polecenie otwiera edytor Emacs.
Wprowadź następujące dwa wiersze w edytorze:
PMLogin <password>Przytrzymaj wciśnięty
Ctrl, a następnie naciśnijX, a następnieC, aby zamknąć i zapisać plik.Wykonaj polecenie:
sudo chmod 400 /var/opt/mssql/secrets/passwdaby zablokować plik.
Powtórz kroki 1–5 na innych serwerach, które służą jako repliki.
Tworzenie zasobów grupy dostępności w klastrze Pacemaker (tylko zewnętrzne)
Po utworzeniu grupy dostępności w programie SQL Server należy utworzyć odpowiednie zasoby w programie Pacemaker podczas określania typu klastra Zewnętrzne. Dwie zasoby są skojarzone z grupą dostępności: samą grupą dostępności i adresem IP. Skonfigurowanie zasobu adresu IP jest opcjonalne, jeśli nie używasz funkcji odbiornika, ale jest zalecane.
Utworzony zasób AG jest rodzajem zasobu nazywanego klonem. Zasób grupy dostępności AG ma kopie w każdym węźle i jeden zasób sterujący nazywany masterem. Mistrz jest powiązany z serwerem obsługującym replikę podstawową. Inne zasoby hostują repliki pomocnicze (zwykłe lub tylko konfiguracyjne) i mogą być awansowane do rangi głównego w procesie przełączania awaryjnego.
- Red Hat Enterprise Linux (RHEL) i Ubuntu
- SUSE Linux Enterprise Server (SLES)
Utwórz zasób AG przy użyciu następującej składni:
sudo pcs resource create <NameForAGResource> ocf:mssql:ag ag_name=<AGName> meta failure-timeout=30s promotable notify=trueW tym przykładzie
NameForAGResourcejest unikatową nazwą nadaną temu zasobowi klastra dla grupy dostępności (AG), aAGNamejest nazwą grupy dostępności, którą utworzyłeś.Utwórz zasób adresu IP dla grupy dostępności skojarzonej z funkcją odbiornika.
sudo pcs resource create <NameForIPResource> ocf:heartbeat:IPaddr2 ip=<IPAddress> cidr_netmask=<Netmask>W tym przykładzie
NameForIPResourcejest unikatową nazwą zasobu IP iIPAddressjest statycznym adresem IP przypisywanym do zasobu.Aby upewnić się, że adres IP i zasób AG działają w tym samym węźle, skonfiguruj ograniczenie kolokacji.
sudo pcs constraint colocation add <NameForIPResource> with promoted <NameForAGResource>-clone INFINITYW tym przykładzie
NameForIPResourcejest nazwą zasobu IP iNameForAGResourcenazwą zasobu grupy dostępności.Utwórz ograniczenie porządkowania, aby upewnić się, że zasób AG jest uruchomiony przed adresem IP. Chociaż ograniczenie kolokacji oznacza ograniczenie kolejności, ten krok wprowadza je w życie.
sudo pcs constraint order promote <NameForAGResource>-clone then start <NameForIPResource>W tym przykładzie
NameForIPResourcejest nazwą zasobu IP, aNameForAGResourceto nazwa zasobu AG (grupy dostępności).
Następny krok
W tym samouczku przedstawiono sposób tworzenia i konfigurowania grupy dostępności dla programu SQL Server w systemie Linux. Wiesz już, jak wykonać następujące działania:
- Włącz grupy dostępności.
- Tworzenie punktów końcowych i certyfikatów AG.
- Użyj programu SQL Server Management Studio (SSMS) lub Transact-SQL, aby utworzyć grupę dostępności (AG).
- Utwórz identyfikator logowania i uprawnienia programu SQL Server dla programu Pacemaker.
- Utwórz zasoby AG w klastrze Pacemaker.
W przypadku większości zadań administracyjnych dotyczących grupy dostępności (AG), w tym aktualizacji i przełączeń awaryjnych, zobacz: