Co to jest zawarta grupa dostępności?
Dotyczy: SQL Server 2022 (16.x)
Zawarta grupa dostępności to grupa dostępności Always On, która obsługuje:
zarządzanie obiektami metadanych (użytkownicy, loginy, uprawnienia, zadania agenta SQL itp.) na poziomie grupy dostępności oprócz poziomu instancji.
wyspecjalizowane zamknięte systemowe bazy danych w ramach AG.
W tym artykule szczegółowo opisano podobieństwa, różnice i funkcje zawartych AGs.
Przegląd
Grupy Zabezpieczeń zazwyczaj składają się z co najmniej jednej bazy danych użytkowników przeznaczonej do działania jako skoordynowana grupa i które są replikowane w niektórych węzłach w klastrze. W przypadku awarii w węźle lub w kondycji programu SQL Server w węźle, który hostuje kopię podstawową, grupa baz danych jest przenoszona jako jednostka do innego węzła repliki w grupie dostępności. Wszystkie bazy danych użytkowników są synchronizowane we wszystkich replikach grupy dostępności (AG), zarówno w trybie synchronicznym, jak i asynchronicznym.
Działa to dobrze w przypadku aplikacji, które współdziałają tylko z tym zestawem baz danych użytkowników, ale istnieją wyzwania, gdy aplikacje bazują również na obiektach, takich jak użytkownicy, identyfikatory logowania, uprawnienia, zadania agenta itp., które są przechowywane w jednej z systemowych baz danych (master
lub msdb
). Aby aplikacje działały gładko i przewidywalnie, administrator musi ręcznie upewnić się, że wszelkie zmiany w tych obiektach są zduplikowane we wszystkich instancjach replik w AG. Jeśli nowe wystąpienie zostanie dodane do grupy dostępności, bazy danych mogą być automatycznie lub ręcznie rozmieszczane w procesie prostym i przejrzystym, ale wszystkie dostosowania baz danych systemowych muszą zostać ponownie skonfigurowane w nowym wystąpieniu, aby pasowały do innych replik.
Zawarte grupy AG rozszerzają koncepcję grupy replikowanych baz danych, aby uwzględnić odpowiednie części baz danych master
i msdb
. Traktuj to jako kontekst wykonywania aplikacji wykorzystujących zawartą grupę dostępności. Chodzi o to, że zawarte środowisko AG obejmuje ustawienia, które miałyby wpływ na aplikację uzależnioną od nich. W związku z tym środowisko grupy dostępności odnosi się do wszystkich baz danych, z którymi współpracuje aplikacja, używanego przez nią uwierzytelniania (loginy, użytkownicy, uprawnienia), wszelkich zaplanowanych zadań, które mają być uruchomione, oraz innych ustawień konfiguracji, które wpływają na aplikację.
Różni się to od zawartych baz danych, które używają innego mechanizmu dla kont użytkowników, przechowując informacje o użytkowniku w samej bazie danych. Zawarte bazy danych replikują tylko identyfikatory logowania i użytkowników, a zakres replikowanego logowania lub użytkownika jest ograniczony do tej pojedynczej bazy danych (i jej replik).
W przeciwieństwie do zawartej grupy dostępności można tworzyć użytkowników, identyfikatory logowania, uprawnienia itd. na poziomie grupy dostępności i są one automatycznie automatycznie spójne między replikami grupy dostępności, a także spójne w bazach danych w ramach zawartej grupy dostępności. Umożliwia to administratorowi uniknięcie konieczności ręcznego wprowadzania tych zmian.
Różnice
Istnieją pewne praktyczne różnice, które należy wziąć pod uwagę podczas pracy z zawartymi AG, takie jak tworzenie zawartych baz danych systemowych i wymuszanie połączenia na poziomie zawartej AG, zamiast nawiązywania połączenia na poziomie wystąpienia.
Zawarte systemowe bazy danych
Każda oddzielna grupa dostępności ma własne systemowe bazy danych master
i msdb
, nazwane zgodnie z nazwą grupy dostępności. Na przykład w ograniczonej grupie dostępności MyContainedAG
masz bazy danych o nazwach MyContainedAG_master
i MyContainedAG_msdb
. Te systemowe bazy danych są automatycznie rozmieszczane w nowych replikach i aktualizacje są replikowane do tych baz danych tak samo jak każda inna baza danych w grupie dostępności. Oznacza to, że po dodaniu obiektu, takiego jak login czy zadanie agenta, podczas połączenia z zawartą AG, gdy zawarta AG przełącza się do innej instancji, po ponownym połączeniu z tą AG nadal widzisz zadania agenta i możesz się uwierzytelnić, używając loginu utworzonego w zawartej AG.
Ważny
Zawarte grupy dostępności to mechanizm utrzymywania spójnych konfiguracji środowiska wykonania w replikach grupy dostępności. Nie reprezentują granicę zabezpieczeń. Nie ma granicy, która uniemożliwiałaby połączeniu z grupą dostępności dostęp do baz danych znajdujących się poza tą grupą.
Systemowe bazy danych w nowo utworzonej zawartej AG nie są kopiami z instancji, w której jest uruchamiane polecenie CREATE AVAILABILITY GROUP
. Początkowo są puste szablony bez żadnych danych. Natychmiast po utworzeniu konta administratora w wystąpieniu tworzącym zawartą grupę dostępności są kopiowane do zawartej grupy dostępności master
. Dzięki temu administrator może zalogować się do zawartej grupy dostępności i skonfigurować pozostałą część konfiguracji.
Jeśli tworzysz użytkowników lokalnych lub konfiguracje w twoim wystąpieniu, nie są one automatycznie wyświetlane podczas tworzenia zamkniętych systemowych baz danych i nie są widoczne podczas łączenia się z zamkniętą grupą dostępności. Gdy baza danych użytkowników zostanie przyłączona do zawartej grupy dostępności, natychmiast stanie się niedostępna dla tych użytkowników. Należy ręcznie utworzyć je ponownie w zawartych systemowych bazach danych w kontekście zawartej grupy dostępności, łącząc się bezpośrednio z bazą danych lub przy użyciu punktu końcowego odbiornika. Wyjątkiem jest to, że wszystkie loginy w roli sysadmin w wystąpieniu nadrzędnym są kopiowane do nowej bazy danych master
specyficznej dla grupy dostępności AG.
Notatka
Ponieważ baza danych master
jest oddzielna dla każdej zawartej grupy dostępności, działania zakresu serwera wykonywane w kontekście zawartej grupy dostępności są utrwalane tylko w zawartej bazie danych systemu. Obejmuje to inspekcję. Jeśli przeprowadzasz audyt aktywności na poziomie serwera za pomocą audytu SQL Server, musisz utworzyć te same audyty serwera w ramach każdej zawartej AG.
Przywracanie zawartej systemowej bazy danych
Możesz przywrócić zawartą systemową bazę danych przy użyciu jednego z dwóch różnych sposobów.
Przywracanie zawartej bazy danych przy użyciu repliki pomocniczej:
Przywróć bazy danych
master
orazmsdb
na wystąpieniu serwera hostującym replikę pomocniczą, używającRESTORE WITH NORECOVERY
podczas każdej operacji przywracania. Aby uzyskać więcej informacji, zobacz Przygotowanie pomocniczej bazy danych dla grupy dostępności Always On.Dołącz każdą zawartą bazę danych do grupy dostępności. Aby uzyskać więcej informacji, zobacz Join a secondary database to an Always On availability group (Dołączanie pomocniczej bazy danych do zawsze włączonej grupy dostępności).
Przywracanie zawartej bazy danych przez usunięcie zawartej grupy dostępności:
Upuść zawartą AG.
Przywróć zawarte bazy danych
master
imsdb
w każdym z wystąpień uczestniczących w zawartej grupie dostępności.Odtwórz zawarty AG przy użyciu oryginalnych węzłów i nazwy, używając składni
WITH (CONTAINED, REUSE_SYSTEM_DATABASES)
.
Łączenie (zamknięte środowisko)
Ważne jest, aby odróżnić różnicę między nawiązywaniem połączenia z wystąpieniem i nawiązywaniem połączenia z zawartą grupą dostępności. Jedynym sposobem uzyskania dostępu do środowiska ograniczonej grupy dostępności jest nawiązanie połączenia z ograniczonym nasłuchiwaczem grupy dostępności lub nawiązanie połączenia z bazą danych znajdującą się w ograniczonej grupie dostępności.
"Persist Security Info=False;
User ID=MyUser;Password=*****;
Initial Catalog=MyContainedDatabase;
Server=MyServer;"
Gdzie MyContainedDatabase
to baza danych w ramach zawartej grupy dostępności, z którą chcesz korzystać.
Oznacza to, że należy utworzyć odbiornik dla zawartej grupy dostępności, aby efektywnie korzystać z zawartej grupy dostępności. Jeśli łączysz się z jednym z wystąpień obsługujących zawartą AG, a nie bezpośrednio z zawartą AG za pośrednictwem odbiorcy, jesteś w środowisku wystąpienia, a nie zawartej AG.
Jeśli na przykład grupa dostępności MyContainedAG
znajduje się na serwerze SERVER\MSSQLSERVER
, a zamiast łączyć się ze słuchaczem MyContainedAG_Listener
, połączysz się z instancją poprzez SERVER\MSSQLSERVER
, znajdujesz się w środowisku wystąpienia, a nie w środowisku MyContainedAG
. Oznacza to, że podlegasz zawartości (użytkownikom, uprawnieniam, zadaniam itp.), które znajdują się w systemowych bazach danych wystąpienia. Aby uzyskać dostęp do zawartości znajdującej się w samodzielnych systemowych bazach danych grupy dostępności, połącz się z odbiornikiem samodzielnej grupy dostępności (na przykładMyContainedAG_Listener
). Po nawiązaniu połączenia z wystąpieniem za pośrednictwem zawartego odbiornika grupy dostępności podczas interakcji z master
nastąpi przekierowanie do zawartej bazy danych master
(na przykład MyContainedAG_master
).
Routowanie tylko do odczytu i zamknięte grupy dostępności
Jeśli skonfigurujesz routing tylko do odczytu w celu przekierowania połączeń z intencją odczytu do repliki pomocniczej (zobacz Konfigurowanie routingu tylko do odczytu dla zawsze włączonej grupy dostępności) i chcesz nawiązać połączenie przy użyciu identyfikatora logowania utworzonego tylko w zawartej grupie dostępności, istnieją pewne dodatkowe zagadnienia:
- Należy określić bazę danych, która jest częścią zawartej AG w parametrach połączenia
- Użytkownik określony w parametrach połączenia musi mieć uprawnienia dostępu do baz danych w zawartej grupie dostępności.
Na przykład w poniższym ciągu połączenia, gdzie AdventureWorks
jest bazą danych w zawartej grupie dostępności, która ma MyContainedListener
, i gdzie MyUser
jest użytkownikiem zdefiniowanym w tej grupie dostępności i w żadnym z uczestniczących wystąpień:
"Persist Security Info=False;
User ID=MyUser;Password=*****;
Initial Catalog=AdventureWorks;
Server=MyContainedListener;
ApplicationIntent=ReadOnly"
Te parametry połączenia umożliwią połączenie z możliwą do odczytu pomocniczą repliką, która jest częścią konfiguracji routingu ReadOnly, i znajdziesz się w kontekście zdefiniowanej grupy dostępności.
Różnice między połączeniem z instancją a połączeniem z grupą dostępności
- Po nawiązaniu połączenia z zawartą grupą dostępności użytkownicy widzą tylko bazy danych w zawartej grupie dostępności oraz
tempdb
. - Na poziomie wystąpienia zawarte w nim nazwy grup dostępności AG
master
imsdb
to[contained AG]_master
i[contained AG]_msdb
. Wewnątrz zamkniętej AG, ich nazwy tomaster
imsdb
. - Identyfikator bazy danych dla zawartej grupy dostępności
master
to1
wewnątrz tej grupy, ale inna wartość, gdy jest połączony z wystąpieniem. - Chociaż użytkownicy nie widzą baz danych spoza zamkniętej grupy dostępności w
sys.databases
po nawiązaniu połączenia z zamkniętą grupą dostępności, mogą uzyskiwać dostęp do tych baz danych za pomocą nazwy składającej się z trzech części lub poleceniaUSE
. - Konfiguracja serwera za pośrednictwem
sp_configure
może być odczytywana z zawartego połączenia AG, ale może być zapisywana tylko z poziomu instancji serwera. - Dzięki połączeniom w grupie dostępności, administrator systemu może wykonywać operacje na poziomie instancji, takie jak zamykanie SQL Servera.
- Większość operacji na poziomie bazy danych, poziomie punktu końcowego lub poziomie grupy dostępności może być wykonywana tylko z połączeń wystąpień, a nie z ograniczonych połączeń grupy dostępności.
Interakcje z innymi funkcjami
Istnieją dodatkowe zagadnienia dotyczące korzystania z niektórych funkcji z ograniczonymi grupami dostępności, a pewne funkcje są obecnie nieobsługiwane.
Nieobsługiwane
Obecnie następujące funkcje programu SQL Server nie są obsługiwane w przypadku zamkniętej grupy dostępności:
- Replikacja SQL Server dowolnego typu (transakcyjna, scalona, migawkowa itd.).
- Rozproszone grupy dostępności.
- Wysyłka dziennika, w której znajduje się docelowa baza danych w zawartej grupy dostępności. Obsługiwana jest wysyłka dziennika ze źródłową bazą danych w zawartej grupie dostępności.
Przechwytywanie zmian danych
Przechwytywanie zmian danych (CDC) jest implementowane jako zadania agenta SQL, dlatego agent SQL musi być uruchomiony na wszystkich instancjach z replikami w rozszerzonej grupie dostępności.
Aby użyć mechanizmu przechwytywania zmian danych (CDC) z zawartą grupą dostępności, połącz się z listenerem AG podczas konfigurowania CDC, aby metadane CDC były skonfigurowane przy użyciu zawartych systemowych baz danych.
Przesyłanie dzienników zdarzeń
Wysyłanie dziennika można skonfigurować, jeśli źródłowa baza danych znajduje się w zawartej grupie dostępności. Jednak docelowy serwer synchronizacji dziennika nie jest obsługiwany w ramach samodzielnej grupy dostępności. Ponadto istnieje dodatkowy krok, aby zmodyfikować zadanie wysyłania dziennika po skonfigurowaniu usługi CDC.
Aby skonfigurować wysyłanie dzienników za pomocą zawartej grupy dostępności, wykonaj następujące kroki:
- Połącz się z odbiornikiem zawartym w grupie dostępności.
- Skonfiguruj przesyłanie dzienników tak jak zwykle.
- Po skonfigurowaniu zadania wysyłania dziennika zmień zadanie, aby nawiązać połączenie z zawartym odbiornikiem grupy dostępności przed utworzeniem kopii zapasowej.
Transparent Data Encryption (TDE)
Aby używać funkcji Transparent Data Encryption (TDE) z bazami danych w zawartej grupy dostępności, ręcznie zainstaluj klucz główny bazy danych (DMK) do zawartej bazy danych master
w ramach zawartej grupy dostępności.
Bazy danych używające funkcji TDE korzystają z certyfikatów w bazie danych master
do odszyfrowania klucza szyfrowania bazy danych (DEK). Bez tego certyfikatu program SQL Server nie może odszyfrować baz danych zaszyfrowanych za pomocą funkcji TDE ani przenieść ich do trybu online. W przypadku grupy dostępności SQL Server sprawdza zarówno bazę danych master
dla klucza głównego bazy danych (DMK), bazę danych master
wystąpienia, jak i zawartą bazę danych master
w grupie dostępności w celu odszyfrowania. Jeśli nie można odnaleźć certyfikatu w żadnej z lokalizacji, program SQL Server nie może przełączyć bazy danych w tryb online.
Aby przenieść klucz DMK z bazy danych master
wystąpienia do zawartej bazy danych master
, zobacz Move a TDE protected database to another SQL Server, zwracając szczególną uwagę na części poświęcone transferowi klucza DMK ze starego serwera na nowy.
Plany konserwacji pakietów SSIS &
Korzystanie z pakietów SSIS, w tym planów konserwacji, nie jest obsługiwane w przypadku wewnętrznych grup dostępności.
Zmiany DDL
Jedynymi zmianami DDL są zmiany w przepływie pracy CREATE AVAILABILITY GROUP
. Istnieją dwie nowe klauzule WITH
:
<with_option_spec> ::=
CONTAINED |
REUSE_SYSTEM_DATABASES
ZAWARTE
Określa to, że tworzona grupa dostępności powinna być ograniczoną grupą dostępności.
PONOWNE_WYKORZYSTANIE_BAZ_DANYCH_SYSTEMOWYCH
Ta opcja jest prawidłowa tylko dla osadzonych grup dostępności i wskazuje, że nowo utworzona grupa dostępności ma ponownie wykorzystywać istniejące osadzone bazy danych systemowych dla wcześniejszej osadzonej grupy dostępności o tej samej nazwie. Jeśli na przykład masz zamkniętą AG o nazwie MyContainedAG
i chcesz ją usunąć i odtworzyć, możesz użyć tej opcji, aby ponownie wykorzystać zawartość oryginalnych zamkniętych baz danych systemowych.
Zmiany w wydziale komunikacji
Istnieją dwa dodatki do dynamicznych widoków zarządzania powiązanymi z zawartymi grupami zabezpieczeń:
-
sys.dm_exec_sessions
DMV ma dodaną kolumnę:contained_availability_group_id
- Widok wykazu
sys.availability_groups
ma dodaną kolumnę:is_contained