Co je omezená skupina dostupnosti?
platí pro: SQL Server 2022 (16.x)
Obsažená skupina dostupnosti je skupina dostupnosti AlwaysOn (AG), která podporuje:
správa objektů metadat (uživatelé, přihlášení, oprávnění, úlohy agenta SQL atd.) v rámci úrovně AG kromě úrovně instance.
specializované databáze odděleného systému v rámci skupiny dostupnosti AG.
Tento článek podrobně popisuje podobnosti, rozdíly a funkce obsažených skupin AG.
Přehled
Skupiny AG se obvykle skládají z jedné nebo více uživatelských databází, které mají fungovat jako koordinovaná skupina a které se replikují na některém počtu uzlů v clusteru. Pokud dojde k selhání v uzlu nebo ve stavu SQL Serveru na uzlu, který je hostitelem primární kopie, se skupina databází přesune jako jednotka do jiného uzlu repliky ve skupině dostupnosti. Všechny uživatelské databáze jsou udržovány synchronizované ve všech replikách skupin dostupnosti (AG) v synchronním nebo asynchronním režimu.
To funguje dobře pro aplikace, které pracují pouze s touto sadou uživatelských databází, ale existují problémy, když aplikace také spoléhají na objekty, jako jsou uživatelé, přihlášení, oprávnění, úlohy agenta atd., které jsou uložené v jedné ze systémových databází (master
nebo msdb
). Aby aplikace fungovaly hladce a předvídatelně, musí správce ručně zajistit, aby všechny změny těchto objektů byly duplikovány napříč všemi instancemi replik ve skupině dostupnosti. Pokud se nová instance přenese do AG, databáze mohou být automaticky nebo ručně nasazeny jednoduchým způsobem, ale všechna upravená nastavení systémové databáze musí být v nové instanci znovu nastavena, aby odpovídala ostatním replikám.
Obsažené skupiny AG rozšiřují koncept skupiny databází, které se replikují, aby zahrnovaly relevantní části master
a msdb
databází. Představte si to jako kontext provádění pro aplikace používající obsaženou AG. Myšlenka je, že obsažené AG prostředí obsahuje nastavení, která ovlivní aplikaci, jež na nich závisí. Obsažené prostředí skupiny dostupnosti se týká všech databází, se kterými aplikace komunikuje, ověřování, které používá (přihlášení, uživatelé, oprávnění), všechny naplánované úlohy, které očekává spuštění, a další nastavení konfigurace, která ovlivňují aplikaci.
Liší se od databází s omezením, které používají jiný mechanismus pro uživatelské účty a ukládají informace o uživatelích v samotné databázi. Omezené databáze replikují pouze přihlášení a uživatele, a rozsah replikovaného přihlášení nebo uživatele je omezen na tuto konkrétní databázi (a její repliky).
Naproti tomu v obsažené skupině dostupnosti můžete vytvářet uživatele, přihlášení, oprávnění atd. Na úrovni skupiny dostupnosti jsou automaticky konzistentní mezi replikami ve skupině dostupnosti a také konzistentní mezi databázemi v rámci této skupiny dostupnosti. Tím se správce nemusí ručně zabývat těmito změnami.
Rozdíly
Při práci s obsaženými skupinami dostupnosti (Availability Groups, AG) je potřeba vzít v úvahu některé praktické rozdíly, jako je vytvoření obsažených systémových databází a vynucení připojení na úrovni skupiny obsažené dostupnosti, a nikoli při připojování na úrovni instance.
Systémové databáze v uzavřeném systému
Každá skupina dostupnosti obsahuje vlastní systémové databáze master
a msdb
, které jsou pojmenované podle názvu skupiny dostupnosti. Například v obsahovaném AG MyContainedAG
máte databáze MyContainedAG_master
a MyContainedAG_msdb
. Tyto systémové databáze se automaticky zasadí do nových replik a aktualizace se do těchto databází replikují stejně jako všechny ostatní databáze ve skupině dostupnosti. To znamená, že když přidáte objekt, jako je přihlášení nebo úloha agenta, když jste připojeni k obsažené skupině dostupnosti, při selhání obsažené skupiny dostupnosti dojde k převzetí služeb jinou instancí, stále uvidíte úlohy agenta a budete schopni se ověřit pomocí přihlášení vytvořeného v obsažené skupině dostupnosti.
Důležitý
Obsahované skupiny dostupnosti jsou mechanismem pro udržení konzistentní konfigurace prostředí provádění napříč replikami této skupiny dostupnosti. nepředstavují hranici zabezpečení. Neexistuje žádná hranice, která by například neomezovala připojení z uzavřené skupiny dostupnosti k databázím mimo tuto skupinu dostupnosti.
Systémové databáze v nově vytvořené skupině dostupnosti AG nejsou kopiemi z instance, kde je spuštěn příkaz CREATE AVAILABILITY GROUP
. Zpočátku jsou prázdné šablony bez jakýchkoli dat. Okamžitě po vytvoření se účty správců na instanci, která vytváří obsaženou AG, zkopírují do obsažené AG master
. Tímto způsobem se správce může přihlásit do obsažené skupiny dostupnosti (AG) a nastavit zbytek konfigurace.
Pokud ve vaší instanci vytváříte místní uživatele nebo konfigurace, nezobrazí se automaticky při vytváření obsažených systémových databází a nejsou viditelné při připojení k obsažené skupině dostupnosti. Jakmile je uživatelská databáze připojená k obsažené skupině dostupnosti, stane se okamžitě nepřístupná těmto uživatelům. Musíte je ručně znovu vytvořit v systémových databázích obsažených v rámci obsahované skupiny dostupnosti, a to buď přímým připojením k databázi, nebo použitím koncového bodu posluchače. Výjimkou je, že všechna přihlášení v roli správce systému v nadřazené instanci se zkopírují do nové databáze specifické pro ag master
.
Poznámka
Vzhledem k tomu, že databáze master
je oddělená pro každou obsaženou skupinu dostupnosti, aktivity na úrovni serveru prováděné v kontextu obsažené skupiny dostupnosti přetrvávají pouze v obsažené systémové databázi. To zahrnuje auditování. Pokud auditujete aktivitu na úrovni serveru pomocí auditování SQL Serveru, musíte v rámci každé skupiny dostupnosti vytvořit stejné audity serverů.
Obnovení uzavřené systémové databáze
Systémovou databázi s omezením můžete obnovit jedním ze dvou různých způsobů.
Obnovení obsažené databáze pomocí sekundární repliky:
Obnovte obsažené
master
amsdb
databázi na instanci serveru, která je hostitelem sekundární repliky, pomocíRESTORE WITH NORECOVERY
pro každou operaci obnovení. Další informace najdete v tématu Příprava sekundární databáze pro skupinu dostupnosti AlwaysOn.Připojte každou obsaženou databázi ke skupině dostupnosti. Další informace najdete v tématu Připojení sekundární databáze ke skupině dostupnosti AlwaysOn.
Obnovení obsažené databáze odstraněním obsažené skupiny dostupnosti:
Zahoďte obsaženou ag.
Obnovte databáze
master
amsdb
v každé instanci, která se účastní skupiny dostupnosti.Znovu vytvořte obsažené AG s použitím původních uzlů a názvu pomocí syntaxe
WITH (CONTAINED, REUSE_SYSTEM_DATABASES)
.
Připojení (uzavřené prostředí)
Je důležité rozlišovat mezi připojením k instanci a připojením ke skupině dostupnosti (AG). Jediným způsobem, jak získat přístup k prostředí obsažené skupiny dostupnosti (AG), je připojit se k naslouchacímu procesu pro obsaženou skupinu dostupnosti nebo se připojit k databázi, která je v obsažené skupině dostupnosti.
"Persist Security Info=False;
User ID=MyUser;Password=*****;
Initial Catalog=MyContainedDatabase;
Server=MyServer;"
Kde MyContainedDatabase
je databáze v rámci obsažené skupiny dostupnosti, se kterou chcete pracovat.
To znamená, že musíte vytvořit naslouchací proces pro obsažené skupiny dostupnosti, aby se efektivně používala obsažená skupina dostupnosti. Pokud se připojíte k jedné z instancí hostování obsažené skupiny dostupnosti, nikoli přímo k obsažené skupině dostupnosti prostřednictvím naslouchacího procesu, jste v prostředí instance a ne v obsažené skupině dostupnosti.
Pokud je například vaše skupina dostupnosti MyContainedAG
hostovaná na serveru SERVER\MSSQLSERVER
a místo připojení k naslouchacímu procesu MyContainedAG_Listener
se připojíte k instanci pomocí SERVER\MSSQLSERVER
, nacházíte se v prostředí instance a ne v prostředí MyContainedAG
. To znamená, že podléháte obsahu (uživatelům, oprávněním, úlohám atd.), které se nacházejí v systémových databázích instance. Pokud chcete získat přístup k obsahu nalezenému v obsažených systémových databázích obsažené skupiny dostupnosti, připojte se místo toho k naslouchacímu procesu skupiny dostupnosti (napříkladMyContainedAG_Listener
). Když jste připojeni k instanci prostřednictvím naslouchacího procesu obsažené skupiny dostupnosti, při interakci s master
jste skutečně přesměrováni do databáze master
(například MyContainedAG_master
).
Směrování pouze pro čtení a uzavřené skupiny dostupnosti
Pokud nakonfigurujete směrování jen pro čtení pro přesměrování připojení se záměrem čtení na sekundární repliku (viz Konfigurace směrování jen pro čtení pro skupinu dostupnosti AlwaysOn) a chcete se připojit pomocí přihlášení vytvořeného pouze v obsažené skupině dostupnosti, je potřeba vzít v úvahu některé další aspekty:
- Je nutné zadat databázi, která je součástí obsažené skupiny dostupnosti v připojovacím řetězci.
- Uživatel zadaný v připojovacím řetězci musí mít oprávnění pro přístup k databázím v obsažené skupině dostupnosti.
Například v následujícím připojovacím řetězci, kde AdventureWorks
je databáze v rámci obsažené skupiny dostupnosti, která má MyContainedListener
a kde MyUser
je uživatel definovaný v obsažené skupině dostupnosti a žádná z zúčastněných instancí:
"Persist Security Info=False;
User ID=MyUser;Password=*****;
Initial Catalog=AdventureWorks;
Server=MyContainedListener;
ApplicationIntent=ReadOnly"
Tento připojovací řetězec vás připojí ke čitelné sekundární části konfigurace směrování ReadOnly a budete v kontextu obsažené skupiny dostupnosti.
Rozdíly mezi připojením k instanci a připojením k obsažené skupině dostupnosti
- Při připojení k obsažené skupině dostupnosti uživatelé uvidí pouze databáze v obsažené skupině dostupnosti a
tempdb
. - Na úrovni instance jsou jména obsažených AG
master
amsdb
[contained AG]_master
a[contained AG]_msdb
. Uvnitř obsažené skupiny dostupnosti jsou jejich názvymaster
amsdb
. - ID databáze pro obsaženou AG
master
je uvnitř obsažené AG1
, ale při připojení k instanci je to něco jiného. - I když uživatelé nevidí databáze mimo uzavřenou AG v
sys.databases
při připojení k uzavřené AG, můžou k těmto databázím přistupovat pomocí třídílného názvu nebo příkazuUSE
. - Konfiguraci serveru prostřednictvím
sp_configure
lze číst z obsaženého připojení AG, ale lze ji zapisovat pouze z úrovně instance. - Z uzavřených připojení skupiny dostupnosti může správce systému provádět operace na úrovni instance, jako je vypnutí SQL Serveru.
- Většinu operací na úrovni databáze, koncového bodu nebo skupiny dostupnosti je možné provádět pouze z připojení instancí, nikoli z připojení skupiny dostupnosti.
Interakce s dalšími funkcemi
Při používání určitých funkcí s obsaženými skupinami AG je potřeba vzít v úvahu další aspekty a některé funkce se v současné době nepodporují.
Nepodporováno
V současné době nejsou u obsažené skupiny dostupnosti podporované následující funkce SQL Serveru:
- Replikace SQL Serveru libovolného typu (transakční, slučovací, snímek atd.)
- Distribuované skupiny dostupnosti
- Přeprava protokolů, kde je cílová databáze v obsažené AG. Přenos protokolů se zdrojovou databází v obsažené skupině dostupnosti je podporováno.
Změna zachytávání dat
Zachytávání změn dat (CDC) se implementuje jako úlohy agenta SQL, takže agent SQL musí být spuštěn na všech instancích s replikami v uzavřené skupině dostupnosti.
Pokud chcete použít zachytávání dat změn s obsaženou skupinou dostupnosti, připojte se při konfiguraci CDC k naslouchacímu procesu skupiny dostupnosti, aby metadata CDC byla nakonfigurována s využitím obsažených systémových databází.
Přenášení protokolů
Odesílání protokolů je možné nakonfigurovat, pokud je zdrojová databáze v obsažené skupině dostupnosti. Cílový server pro odesílání protokolu ale není podporován v rámci obsažené skupiny dostupnosti. Kromě toho existuje další krok pro úpravu úlohy odeslání protokolu po nakonfigurování CDC.
Pokud chcete nakonfigurovat přepravu protokolů s obsaženou skupinou dostupnosti, postupujte takto:
- Připojte se k naslouchacímu procesu posluchače skupiny dostupnosti (AG).
- Nakonfigurujte expediční protokolu stejně jako obvykle.
- Po nakonfigurování úlohy odesílání protokolu upravte úlohu tak, aby se před vytvořením zálohy připojila k naslouchací službě AG.
Transparentní šifrování dat (TDE)
Pokud chcete použít transparentní šifrování dat (TDE) s databázemi v obsažené skupině dostupnosti, ručně nainstalujte hlavní klíč databáze (DMK) do obsažené master
databáze v rámci obsažené skupiny dostupnosti.
Databáze, které používají TDE (transparentní šifrování dat), spoléhají na certifikáty v databázi master
k dešifrování šifrovacího klíče databáze (DEK). Bez takového certifikátu nemůže SQL Server dešifrovat databáze šifrované transparentním šifrováním dat ani je přenést do režimu online. Ve skupině obsažené dostupnosti SQL Server zkontroluje obě dvě databáze master
pro DMK, databázi instance master
a obsaženou databázi master
v rámci skupiny obsažené dostupnosti pro dešifrování databáze. Pokud certifikát nemůže najít v jiném umístění, sql Server nemůže databázi přenést do režimu online.
Pokud chcete přenést DMK z databáze master
instance do obsažené databáze master
, přečtěte si téma Přesunutí databáze chráněné Transparentním šifrováním dat (TDE) do jiného SQL Serveru, zejména části zaměřené na přenos DMK ze starého serveru na nový.
Balíčky SSIS & plány údržby
Používání balíčků SSIS, včetně údržbových plánů, není podporováno u obsahovaných skupin dostupnosti.
Změny DDL
Jediné změny DDL se týkají workflow CREATE AVAILABILITY GROUP
. Existují dvě nové klauzule WITH
:
<with_option_spec> ::=
CONTAINED |
REUSE_SYSTEM_DATABASES
OBSAH
Určuje, že vytvořená skupina dostupnosti by měla být obsažená skupina dostupnosti.
REUSE_SYSTEM_DATABASES
Tato možnost je platná pouze pro uzavřené skupiny dostupnosti a určuje, že nově vytvořená skupina dostupnosti by měla znovu použít existující uzavřené systémové databáze pro předchozí uzavřenou skupinu dostupnosti se stejným názvem. Pokud jste například měli obsaženou AG s názvem MyContainedAG
a chtěli ji odstranit a znovu vytvořit, můžete tuto možnost použít k využití obsahu původních systémových databází obsaženého systému.
Změny na úřadě pro motorová vozidla
Existují dva doplňky k dynamickým spravovacím zobrazením souvisejícím s obsaženými skupinami dostupnosti (AGs):
- DMV
sys.dm_exec_sessions
má přidaný sloupec:contained_availability_group_id
- Zobrazení katalogu
sys.availability_groups
obsahuje přidaný sloupec:is_contained