Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Toto téma popisuje, jak pomocí Transact-SQL vytvořit a nakonfigurovat skupinu dostupnosti na instancích SQL Serveru, na kterých je povolená funkce Skupiny dostupnosti AlwaysOn. Skupina dostupnosti definuje sadu uživatelských databází, které se při selhání přepnou jako jedna jednotka, a sadu partnerů pro převzetí služeb při selhání, označovaných jako repliky dostupnosti , které podporují toto přepnutí.
Poznámka:
Úvod do skupin dostupnosti najdete v tématu Přehled skupin dostupnosti AlwaysOn (SQL Server).
Poznámka:
Jako alternativu k použití jazyka Transact-SQL můžete použít průvodce vytvořením skupiny dostupnosti nebo cmdlety SQL Server PowerShell. Další informace najdete v tématu Použití Průvodce skupinou dostupnosti (SQL Server Management Studio),Použití dialogového okna Nová skupina dostupnosti (SQL Server Management Studio) nebo Vytvoření skupiny dostupnosti (SQL Server PowerShell).
Požadavky, omezení a doporučení
- Před vytvořením skupiny dostupnosti ověřte, že instance SQL Serveru, které hostují repliky dostupnosti, se nacházejí na různých uzlech Windows Server Failover Clustering (WSFC) ve stejném WSFC clusteru s podporou převzetí služeb při selhání. Ověřte také, že každá instance serveru splňuje všechny ostatní požadavky skupin dostupnosti AlwaysOn. Důrazně doporučujeme přečíst si pro další informace požadavky, omezení a doporučení pro skupiny dostupnosti Always On (SQL Server).
Povolení
Vyžaduje členství v pevné roli serveru správce systému a buď oprávnění k vytvoření SKUPINY DOSTUPNOSTI, oprávnění ke změně jakékoli SKUPINY DOSTUPNOSTI nebo oprávnění ke správě SERVERU.
Vytvoření a konfigurace skupiny dostupnosti pomocí Transact-SQL
Souhrn úkolů a odpovídajících výroků Transact-SQL
Následující tabulka uvádí základní úlohy, které jsou součástí vytváření a konfigurace skupiny dostupnosti, a uvádí, které Transact-SQL příkazy, které se mají pro tyto úlohy použít. Úlohy skupin dostupnosti AlwaysOn musí být provedeny v pořadí, ve kterém jsou uvedeny v tabulce.
| Úkol | Transact-SQL – prohlášení | Kde provést úlohu***** |
|---|---|---|
| Vytvoření koncového bodu zrcadlení databáze (jednou na instanci SQL Serveru) | VYTVOŘIT KONCOVÝ BODendpointName ... PRO DATABASE_MIRRORING | Spusťte na každé instanci serveru, která postrádá koncový bod zrcadlení databáze. |
| Vytvoření skupiny dostupnosti | VYTVOŘENÍ SKUPINY DOSTUPNOSTI | Spusťte na instanci serveru, která je hostitelem počáteční primární repliky. |
| Připojení sekundární repliky ke skupině dostupnosti | ALTER AVAILABILITY GROUPgroup_name JOIN | Spusťte na každé instanci serveru, která je hostitelem sekundární repliky. |
| Příprava sekundární databáze | ZÁLOHOVÁNÍ a OBNOVENÍ. | Vytvořte zálohy v instanci serveru, která je hostitelem primární repliky. Obnovte zálohy na každé instanci serveru, která je hostitelem sekundární repliky, pomocí funkce RESTORE WITH NORECOVERY. |
| Spuštění synchronizace dat připojením každé sekundární databáze ke skupině dostupnosti | ALTER DATABASEdatabase_name SET HADR AVAILABILITY GROUP = group_name | Spusťte na každé instanci serveru, která je hostitelem sekundární repliky. |
*Chcete-li provést danou úlohu, připojte se k určené instanci serveru nebo instancím.
Použití Transact-SQL
Poznámka:
Ukázkový postup konfigurace obsahující příklady kódu pro každý z těchto příkazů Transact-SQL najdete v tématu Příklad: Konfigurace skupiny dostupnosti, která používá ověřování systému Windows.
Připojte se k instanci serveru, která je hostitelem primární repliky.
Vytvořte skupinu dostupnosti pomocí příkazu CREATE AVAILABILITY GROUPTransact-SQL.
Připojte novou sekundární repliku ke skupině dostupnosti. Další informace najdete v tématu Připojení sekundární repliky ke skupině dostupnosti (SQL Server).
Pro každou databázi ve skupině dostupnosti vytvořte sekundární databázi obnovením nedávných záloh primární databáze pomocí FUNKCE RESTORE WITH NORECOVERY. Další informace najdete v tématu Příklad: Nastavení skupiny dostupnosti pomocí ověřování systému Windows (Transact-SQL), počínaje krokem, který obnoví zálohu databáze.
Připojte každou novou sekundární databázi ke skupině dostupnosti. Další informace najdete v tématu Připojení sekundární repliky ke skupině dostupnosti (SQL Server).
Příklad: Konfigurace skupiny dostupnosti, která používá ověřování systému Windows
Tento příklad vytvoří ukázkový postup konfigurace skupin dostupnosti AlwaysOn, který používá Transact-SQL k nastavení koncových bodů zrcadlení databáze, které používají ověřování systému Windows, a k vytvoření a konfiguraci skupiny dostupnosti a jejích sekundárních databází.
Tento příklad obsahuje následující části:
Požadavky pro použití ukázkové konfigurační procedury
Tento ukázkový postup má následující požadavky:
Instance serveru musí podporovat skupiny dostupnosti AlwaysOn. Další informace najdete v tématu Požadavky, omezení a doporučení pro skupiny dostupnosti AlwaysOn (SQL Server).
V instanci serveru, která bude hostovat primární repliku, musí existovat dvě ukázkové databáze MyDb1 a MyDb2. Následující příklady kódu vytvoří a nakonfigurují tyto dvě databáze a vytvoří úplnou zálohu každé databáze. Tyto příklady kódu spusťte v instanci serveru, ve které chcete vytvořit ukázkovou skupinu dostupnosti. Tato instance serveru bude hostit počáteční primární repliku vzorové skupiny dostupnosti.
Následující Transact-SQL příklad vytvoří tyto databáze a změní je tak, aby používaly úplný model obnovení:
-- Create sample databases: CREATE DATABASE MyDb1; GO ALTER DATABASE MyDb1 SET RECOVERY FULL; GO CREATE DATABASE MyDb2; GO ALTER DATABASE MyDb2 SET RECOVERY FULL; GONásledující příklad kódu vytvoří úplnou zálohu databáze MyDb1 a MyDb2. Tento příklad kódu používá fiktivní sdílenou složku zálohování \\FILESERVER\SQLbackups.
-- Backup sample databases: BACKUP DATABASE MyDb1 TO DISK = N'\\FILESERVER\SQLbackups\MyDb1.bak' WITH FORMAT; GO BACKUP DATABASE MyDb2 TO DISK = N'\\FILESERVER\SQLbackups\MyDb2.bak' WITH FORMAT; GO
Ukázkový postup konfigurace
V této ukázkové konfiguraci se replika dostupnosti vytvoří na dvou samostatných instancích serveru, jejichž účty služeb běží v různých, ale důvěryhodných doménách (DOMAIN1 a DOMAIN2).
Následující tabulka shrnuje hodnoty použité v této ukázkové konfiguraci.
| Počáteční role | Systém | Hostování instance SQL Serveru |
|---|---|---|
| Primární | COMPUTER01 |
AgHostInstance |
| Sekundární | COMPUTER02 |
Výchozí instance. |
Vytvořte koncový bod zrcadlení databáze s názvem dbm_endpoint na instanci serveru, na které plánujete vytvořit skupinu dostupnosti (jde o instanci s názvem
AgHostInstancenaCOMPUTER01). Tento koncový bod používá port 7022. Všimněte si, že instance serveru, na které vytvoříte skupinu dostupnosti, bude hostitelem primární repliky.-- Create endpoint on server instance that hosts the primary replica: CREATE ENDPOINT dbm_endpoint STATE=STARTED AS TCP (LISTENER_PORT=7022) FOR DATABASE_MIRRORING (ROLE=ALL); GOVytvořte koncový bod dbm_endpoint v instanci serveru, která bude hostitelem sekundární repliky (jedná se o výchozí instanci serveru).
COMPUTER02Tento koncový bod používá port 5022.-- Create endpoint on server instance that hosts the secondary replica: CREATE ENDPOINT dbm_endpoint STATE=STARTED AS TCP (LISTENER_PORT=5022) FOR DATABASE_MIRRORING (ROLE=ALL); GO-
Poznámka:
Pokud účty služeb instancí serveru, které mají hostovat repliky dostupnosti, běží pod stejným účtem domény, tento krok není nutný. Přeskočte ho a přejděte přímo k dalšímu kroku.
Pokud účty služeb instancí serveru běží pod různými uživateli domény, vytvořte na každé instanci serveru přihlašovací jméno pro druhou instanci serveru a udělte tomuto přihlašovacímu oprávnění pro přístup k místnímu koncovému bodu zrcadlení databáze.
Následující příklad kódu ukazuje příkazy Transact-SQL pro vytvoření přihlášení a udělení oprávnění ke koncovému bodu. Účet domény instance vzdáleného serveru je zde reprezentován jako domain_name\user_name.
-- If necessary, create a login for the service account, domain_name\user_name -- of the server instance that will host the other replica: USE master; GO CREATE LOGIN [domain_name\user_name] FROM WINDOWS; GO -- And Grant this login connect permissions on the endpoint: GRANT CONNECT ON ENDPOINT::dbm_endpoint TO [domain_name\user_name]; GO V instanci serveru, ve které se nacházejí uživatelské databáze, vytvořte skupinu dostupnosti.
Následující příklad kódu vytvoří skupinu dostupnosti MyAG na instanci serveru, ve které byly vytvořeny ukázkové databáze MyDb1 a MyDb2. Nejprve je zadána instance
AgHostInstancemístního serveru v COMPUTER01 . Tato instance bude hostovat počáteční primární repliku. Pro hostování sekundární repliky je zadaná instance vzdáleného serveru, výchozí instance serveru na COMPUTER02. Obě repliky dostupnosti jsou nakonfigurované tak, aby používaly režim asynchronního potvrzení s ručním převzetím služeb při selhání (pro repliky asynchronního potvrzení ruční převzetí služeb při selhání znamená vynucené převzetí služeb při selhání s možnou ztrátou dat).-- Create the availability group, MyAG: CREATE AVAILABILITY GROUP MyAG FOR DATABASE MyDB1, MyDB2 REPLICA ON 'COMPUTER01\AgHostInstance' WITH ( ENDPOINT_URL = 'TCP://COMPUTER01.Adventure-Works.com:7022', AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, FAILOVER_MODE = MANUAL ), 'COMPUTER02' WITH ( ENDPOINT_URL = 'TCP://COMPUTER02.Adventure-Works.com:5022', AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, FAILOVER_MODE = MANUAL ); GODalší Transact-SQL příklady kódu pro vytvoření skupiny dostupnosti najdete v tématu CREATE AVAILABILITY GROUP (Transact-SQL).
V instanci serveru, která je hostitelem sekundární repliky, připojte sekundární repliku ke skupině dostupnosti.
Následující příklad kódu připojuje sekundární repliku na
COMPUTER02ke skupině dostupnostiMyAG.-- On the server instance that hosts the secondary replica, -- join the secondary replica to the availability group: ALTER AVAILABILITY GROUP MyAG JOIN; GOV instanci serveru, která je hostitelem sekundární repliky, vytvořte sekundární databáze.
Následující příklad kódu vytvoří sekundární databáze MyDb1 a MyDb2 obnovením záloh databáze pomocí RESTORE WITH NORECOVERY.
-- On the server instance that hosts the secondary replica, -- Restore database backups using the WITH NORECOVERY option: RESTORE DATABASE MyDb1 FROM DISK = N'\\FILESERVER\SQLbackups\MyDb1.bak' WITH NORECOVERY; GO RESTORE DATABASE MyDb2 FROM DISK = N'\\FILESERVER\SQLbackups\MyDb2.bak' WITH NORECOVERY; GOV instanci serveru, která je hostitelem primární repliky, zálohujte transakční protokol pro každou z primárních databází.
Důležité
Při konfiguraci skutečné skupiny dostupnosti doporučujeme před provedením tohoto zálohování protokolů pozastavit úlohy zálohování protokolů pro primární databáze, dokud nepřipojíte odpovídající sekundární databáze ke skupině dostupnosti.
Následující příklad kódu vytvoří zálohu transakčního protokolu na MyDb1 a myDb2.
-- On the server instance that hosts the primary replica, -- Backup the transaction log on each primary database: BACKUP LOG MyDb1 TO DISK = N'\\FILESERVER\SQLbackups\MyDb1.bak' WITH NOFORMAT; GO BACKUP LOG MyDb2 TO DISK = N'\\FILESERVER\SQLbackups\MyDb2.bak' WITH NOFORMAT; GONávod
Záloha logů se obvykle musí provést pro každou primární databázi a potom obnovit odpovídající sekundární databázi s možností NORECOVERY. Toto zálohování protokolů však může být zbytečné, pokud byla databáze právě vytvořena a ještě nebyla provedena žádná záloha protokolu nebo se model obnovení právě změnil z SIMPLE na FULL.
V instanci serveru, která je hostitelem sekundární repliky, použijte zálohy protokolů na sekundární databáze.
Následující příklad kódu aplikuje zálohy na sekundární databáze MyDb1 a MyDb2 obnovením záloh databáze pomocí RESTORE WITH NORECOVERY.
Důležité
Při přípravě skutečné sekundární databáze musíte použít každou zálohu protokolu vytvořenou od zálohy databáze, ze které jste vytvořili sekundární databázi, počínaje nejstarším a vždy pomocí funkce RESTORE WITH NORECOVERY. Samozřejmě, pokud obnovíte úplné i rozdílové zálohy databáze, budete muset použít pouze zálohy protokolů vytvořené po rozdílovém zálohování.
-- Restore the transaction log on each secondary database, -- using the WITH NORECOVERY option: RESTORE LOG MyDb1 FROM DISK = N'\\FILESERVER\SQLbackups\MyDb1.bak' WITH FILE=1, NORECOVERY; GO RESTORE LOG MyDb2 FROM DISK = N'\\FILESERVER\SQLbackups\MyDb2.bak' WITH FILE=1, NORECOVERY; GOV instanci serveru, která je hostitelem sekundární repliky, připojte nové sekundární databáze ke skupině dostupnosti.
Následující příklad kódu připojí sekundární databázi MyDb1 a potom sekundární databáze MyDb2 ke skupině dostupnosti MyAG .
-- On the server instance that hosts the secondary replica, -- join each secondary database to the availability group: ALTER DATABASE MyDb1 SET HADR AVAILABILITY GROUP = MyAG; GO ALTER DATABASE MyDb2 SET HADR AVAILABILITY GROUP = MyAG; GO
Kompletní příklad kódu pro ukázkovou konfigurační proceduru
Následující příklad sloučí příklady kódu ze všech kroků ukázkové konfigurační procedury. Následující tabulka shrnuje zástupné hodnoty použité v tomto příkladu kódu. Další informace o krocích v tomto příkladu kódu naleznete v tématu Předpoklady pro použití ukázkové konfigurační procedury a ukázkové konfigurační procedury výše v tomto tématu.
| Zástupný text | Popis |
|---|---|
| \\ SOUBOROVÝ SERVER\SQLbackups | Fiktivní záložní sdílení. |
| \\ SOUBOROVÝ SERVER\SQLbackups\MyDb1.bak | Záložní soubor pro MyDb1. |
| \\ SOUBOROVÝ SERVER\SQLbackups\MyDb2.bak | Záložní soubor pro MyDb2. |
| 7022 | Číslo portu přiřazené každému koncovému bodu databázového zrcadlení |
| COMPUTER01\AgHostInstance | Instance serveru, která je hostitelem počáteční primární repliky. |
| COMPUTER02 | Instance serveru, která je hostitelem počáteční sekundární repliky. Toto je výchozí instance serveru na .COMPUTER02 |
| dbm_endpoint | Název zadaný pro každý koncový bod databázového zrcadlení. |
| MyAG | Název ukázkové skupiny dostupnosti |
| MyDb1 | Název první ukázkové databáze |
| MyDb2 | Název druhé ukázkové databáze |
| DOMAIN1\user1 | Účet služby instance serveru, která je hostitelem počáteční primární repliky. |
| DOMAIN2\user2 | Účet služby instance serveru, která je hostitelem počáteční sekundární repliky. |
| TCP:// COMPUTER01.Adventure-Works.com:7022 | Adresa URL koncového bodu instance AgHostInstance SQL Serveru na COMPUTER01 |
| TCP:// COMPUTER02.Adventure-Works.com:5022 | Adresa URL koncového bodu výchozí instance SQL Serveru na COMPUTER02 |
Poznámka:
Další Transact-SQL příklady kódu pro vytvoření skupiny dostupnosti najdete v tématu CREATE AVAILABILITY GROUP (Transact-SQL).
-- on the server instance that will host the primary replica,
-- create sample databases:
CREATE DATABASE MyDb1;
GO
ALTER DATABASE MyDb1 SET RECOVERY FULL;
GO
CREATE DATABASE MyDb2;
GO
ALTER DATABASE MyDb2 SET RECOVERY FULL;
GO
-- Backup sample databases:
BACKUP DATABASE MyDb1
TO DISK = N'\\FILESERVER\SQLbackups\MyDb1.bak'
WITH FORMAT;
GO
BACKUP DATABASE MyDb2
TO DISK = N'\\FILESERVER\SQLbackups\MyDb2.bak'
WITH FORMAT;
GO
-- Create the endpoint on the server instance that will host the primary replica:
CREATE ENDPOINT dbm_endpoint
STATE=STARTED
AS TCP (LISTENER_PORT=7022)
FOR DATABASE_MIRRORING (ROLE=ALL);
GO
-- Create the endpoint on the server instance that will host the secondary replica:
CREATE ENDPOINT dbm_endpoint
STATE=STARTED
AS TCP (LISTENER_PORT=7022)
FOR DATABASE_MIRRORING (ROLE=ALL);
GO
-- If both service accounts run under the same domain account, skip this step. Otherwise,
-- On the server instance that will host the primary replica,
-- create a login for the service account
-- of the server instance that will host the secondary replica, DOMAIN2\user2,
-- and grant this login connect permissions on the endpoint:
USE master;
GO
CREATE LOGIN [DOMAIN2\user2] FROM WINDOWS;
GO
GRANT CONNECT ON ENDPOINT::dbm_endpoint
TO [DOMAIN2\user2];
GO
-- If both service accounts run under the same domain account, skip this step. Otherwise,
-- On the server instance that will host the secondary replica,
-- create a login for the service account
-- of the server instance that will host the primary replica, DOMAIN1\user1,
-- and grant this login connect permissions on the endpoint:
USE master;
GO
CREATE LOGIN [DOMAIN1\user1] FROM WINDOWS;
GO
GRANT CONNECT ON ENDPOINT::dbm_endpoint
TO [DOMAIN1\user1];
GO
-- On the server instance that will host the primary replica,
-- create the availability group, MyAG:
CREATE AVAILABILITY GROUP MyAG
FOR
DATABASE MyDB1, MyDB2
REPLICA ON
'COMPUTER01\AgHostInstance' WITH
(
ENDPOINT_URL = 'TCP://COMPUTER01.Adventure-Works.com:7022',
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
FAILOVER_MODE = AUTOMATIC
),
'COMPUTER02' WITH
(
ENDPOINT_URL = 'TCP://COMPUTER02.Adventure-Works.com:7022',
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
FAILOVER_MODE = AUTOMATIC
);
GO
-- On the server instance that hosts the secondary replica,
-- join the secondary replica to the availability group:
ALTER AVAILABILITY GROUP MyAG JOIN;
GO
-- Restore database backups onto this server instance, using RESTORE WITH NORECOVERY:
RESTORE DATABASE MyDb1
FROM DISK = N'\\FILESERVER\SQLbackups\MyDb1.bak'
WITH NORECOVERY;
GO
RESTORE DATABASE MyDb2
FROM DISK = N'\\FILESERVER\SQLbackups\MyDb2.bak'
WITH NORECOVERY;
GO
-- Back up the transaction log on each primary database:
BACKUP LOG MyDb1
TO DISK = N'\\FILESERVER\SQLbackups\MyDb1.bak'
WITH NOFORMAT;
GO
BACKUP LOG MyDb2
TO DISK = N'\\FILESERVER\SQLbackups\MyDb2.bak'
WITH NOFORMAT
GO
-- Restore the transaction log on each secondary database,
-- using the WITH NORECOVERY option:
RESTORE LOG MyDb1
FROM DISK = N'\\FILESERVER\SQLbackups\MyDb1.bak'
WITH FILE=1, NORECOVERY;
GO
RESTORE LOG MyDb2
FROM DISK = N'\\FILESERVER\SQLbackups\MyDb2.bak'
WITH FILE=1, NORECOVERY;
GO
-- On the server instance that hosts the secondary replica,
-- join each secondary database to the availability group:
ALTER DATABASE MyDb1 SET HADR AVAILABILITY GROUP = MyAG;
GO
ALTER DATABASE MyDb2 SET HADR AVAILABILITY GROUP = MyAG;
GO
Související úkoly
Chcete-li konfigurovat vlastnosti skupiny dostupnosti a repliky
Vytvoření nebo konfigurace naslouchacího zařízení skupiny dostupnosti (SQL Server)
Zadání adresy URL koncového bodu při přidávání nebo úpravě repliky dostupnosti (SQL Server)
Konfigurace zálohování na dostupnostních replikách (SQL Server)
Konfigurace přístupu Read-Only k replikám dostupnosti (SQL Server)
Nakonfigurujte Read-Only směrování pro skupinu dostupnosti (SQL Server)
Změnit dobu trvání Session-Timeout repliky dostupnosti (SQL Server)
Dokončení konfigurace skupiny dostupnosti
Připojte sekundární repliku do skupiny dostupnosti (SQL Server)
Ruční Příprava Sekundární Databáze pro Dostupnostní Skupinu (SQL Server)
připojení sekundární databáze ke skupině dostupnosti (SQL Server)
Vytvoření nebo konfigurace naslouchacího zařízení skupiny dostupnosti (SQL Server)
alternativní způsoby vytvoření skupiny dostupnosti
Použití Průvodce skupin dostupnosti (SQL Server Management Studio)
Použijte dialogové okno Nová skupina dostupnosti (SQL Server Management Studio)
Povolte skupiny dostupnosti Always On
Nakonfigurovat koncový bod pro zrcadlení databáze
Vytvoření koncového bodu zrcadlení databáze pro ověřování systému Windows (Transact-SQL)
Použití certifikátů pro koncový bod zrcadlení databáze (Transact-SQL)
Zadání adresy URL koncového bodu při přidávání nebo úpravě repliky dostupnosti (SQL Server)
Jak na řešení potíží s konfigurací skupin dostupnosti Always On
řešení potíží s konfigurací skupin dostupnosti AlwaysOn (SQL Server)
Řešení potíží s neúspěšnou operací Add-File (skupiny dostupnosti Always On)
Související obsah
blogy:
AlwaysOn – řada HADRON Learning: Využití fondu pracovních procesů pro databáze s podporou HADRON
Týmové blogy SQL Serveru Always On: Oficiální blog týmu Always On pro SQL Server
Odborné dokumenty:
Viz také
Koncový bod zrcadlení databáze (SQL Server)
přehled skupin dostupnosti AlwaysOn (SQL Server)
Naslouchací služby Skupiny dostupnosti, Připojení klientů a Přepnutí služeb při selhání aplikací (SQL Server)
Požadavky, omezení a doporučení pro skupiny dostupnosti Always On (SQL Server)