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 připravit databázi pro skupinu dostupnosti AlwaysOn v SQL Serveru pomocí aplikace SQL Server Management Studio, Transact-SQL nebo PowerShellu. Příprava databáze vyžaduje dva kroky:
- Obnovení nedávné zálohy databáze primární databáze a následných záloh protokolů do každé instance serveru, která je hostitelem sekundární repliky, pomocí funkce RESTORE WITH NORECOVERY
- Připojte obnovenou databázi ke skupině dostupnosti.
Tip
Pokud máte existující konfiguraci přesouvání protokolů, možná budete moct převést primární databázi odesílání protokolů spolu s jednou nebo více sekundárními databázemi na primární repliku skupiny dostupnosti a jednu nebo více sekundárních replik. Další informace najdete v tématu Požadavky pro migraci z Log Shipping na Skupiny dostupnosti Always On (SQL Server).
Požadavky a omezení
Ujistěte se, že systém, do kterého plánujete umístit databázi, má diskovou jednotku s dostatečným místem pro sekundární databáze.
Název sekundární databáze musí být stejný jako název primární databáze.
Pro každou operaci obnovení použijte FUNKCI RESTORE WITH NORECOVERY.
Pokud se sekundární databáze musí nacházet v jiné cestě k souboru (včetně písmena jednotky) než primární databáze, musí příkaz restore také použít možnost WITH MOVE pro každý ze souborů databáze k jejich zadání do cesty sekundární databáze.
Pokud obnovíte skupinu souborů databáze podle skupiny souborů, nezapomeňte obnovit celou databázi.
Po obnovení databáze je nutné provést obnovu každé zálohy protokolu (příkazem WITH NORECOVERY) vytvořené od poslední obnovené zálohy dat.
Doporučení
U samostatných instancí SQL Serveru doporučujeme, aby cesta k souboru (včetně písmene jednotky) dané sekundární databáze byla, pokud je to možné, identická s cestou odpovídající primární databázi. Důvodem je to, že pokud přesunete soubory databáze při vytváření sekundární databáze, může pozdější operace s doplňky selhat v sekundární databázi a způsobit pozastavení sekundární databáze.
Před přípravou sekundárních databází důrazně doporučujeme pozastavit naplánované zálohování protokolů v databázích ve skupině dostupnosti, dokud se nedokončí inicializace sekundárních replik.
Zabezpečení
Při zálohování databáze je vlastnost databáze TRUSTWORTHY vypnuta. Proto je funkce TRUSTWORTHY vždy vypnutá u nově obnovené databáze.
Dovolení
Oprávnění ZÁLOHOVAT DATABÁZI a ZÁLOHOVAT PROTOKOL jsou ve výchozím nastavení udělena členům správce systému pevné serverové role a pevných databázových rolí db_owner a db_backupoperator. Další informace najdete v BACKUP (Transact-SQL).
Pokud obnovená databáze v instanci serveru neexistuje, příkaz RESTORE vyžaduje oprávnění CREATE DATABASE. Další informace naleznete v tématu RESTORE (Transact-SQL).
Použití aplikace SQL Server Management Studio
Poznámka
Pokud jsou cesty k souborům zálohování a obnovení stejné mezi instancí serveru, která je hostitelem primární repliky, a každou instancí, která je hostitelem sekundární repliky, měli byste být schopni vytvořit sekundární databáze replik pomocí průvodce Průvodce novou skupinou dostupnosti, Průvodce přidáním repliky do skupiny dostupnostinebo Průvodce přidáním databáze do skupiny dostupnosti.
Příprava sekundární databáze
Pokud ještě nemáte nedávnou zálohu databáze primární databáze, vytvořte novou úplnou nebo rozdílovou zálohu databáze. Osvědčeným postupem je umístit toto zálohování a případné následné zálohování protokolů do doporučené síťové sdílené složky.
Vytvořte aspoň jednu novou zálohu protokolu primární databáze.
Poznámka
Zálohování transakčního protokolu nemusí být vyžadováno, pokud záloha transakčního protokolu nebyla dříve zachycena v databázi v primární replice. Microsoft doporučuje provést zálohu transakčního protokolu pokaždé, když je nová databáze připojená ke skupině dostupnosti.
V instanci serveru, která je hostitelem sekundární repliky, obnovte úplnou zálohu databáze primární databáze (a volitelně rozdílové zálohování) následovanou následnými zálohami protokolů.
Na stránce MOŽNOSTI DATABÁZE RESTORE vyberte Ponechte databázi mimo provoz a nevracejte nepotvrzené transakce. Je možné obnovit další transakční protokoly. (OBNOVIT POMOCÍ NORECOVERY).
Pokud se cesty k souborům primární databáze a sekundární databáze liší, například pokud je primární databáze na jednotce F:, ale instance serveru, která je hostitelem sekundární repliky, nemá jednotku F:, zahrňte do klauzule WITH možnost MOVE.
Pokud chcete dokončit konfiguraci sekundární databáze, musíte sekundární databázi připojit ke skupině dostupnosti. Další informace Připojení sekundární databáze ke skupině dostupnosti (SQL Server).
Poznámka
Informace o provádění těchto operací zálohování a obnovení najdete v tématu Související úlohy zálohování a obnovení, dále v této části.
Související úlohy zálohování a obnovení
Vytvoření zálohy databáze
Vytvoření zálohy protokolu
Obnovení záloh
Použití Transact-SQL
Příprava sekundární databáze
Poznámka
Příklad tohoto postupu naleznete v části Příklad (Transact-SQL), dříve v tomto tématu.
Pokud nemáte nedávno úplnou zálohu primární databáze, připojte se k instanci serveru, která je hostitelem primární repliky, a vytvořte úplnou zálohu databáze. Osvědčeným postupem je umístit toto zálohování a případné následné zálohování protokolů do doporučené síťové sdílené složky.
V instanci serveru, která je hostitelem sekundární repliky, obnovte úplnou zálohu databáze primární databáze (a volitelně rozdílové zálohování) následované všemi následnými zálohami protokolů. Pro každou operaci obnovení použijte WITH NORECOVERY.
Pokud se cesty k souborům primární databáze a sekundární databáze liší, například pokud je primární databáze na jednotce F:, ale instance serveru, která je hostitelem sekundární repliky, nemá jednotku F:, zahrňte do klauzule WITH možnost MOVE.
Pokud byly v primární databázi pořízeny zálohy protokolů od požadovaného zálohování protokolů, musíte je také zkopírovat do instance serveru, která je hostitelem sekundární repliky, a použít každou z těchto záloh protokolů na sekundární databázi, počínaje nejstarší a vždy pomocí funkce RESTORE WITH NORECOVERY.
Poznámka
Zálohování protokolů by neexistovalo, pokud byla právě vytvořena primární databáze a ještě nebyla provedena žádná záloha protokolu nebo pokud se model obnovení právě změnil z jednoduché na úplný.
Pokud chcete dokončit konfiguraci sekundární databáze, musíte sekundární databázi připojit ke skupině dostupnosti. Další informace Připojení sekundární databáze ke skupině dostupnosti (SQL Server).
Poznámka
Informace o provádění těchto operací zálohování a obnovení naleznete v tématu Související úlohy zálohování a obnovení, dále v tomto tématu.
příklad Transact-SQL
Následující příklad připraví sekundární databázi. Tento příklad používá ukázkovou databázi AdventureWorks2025, která ve výchozím nastavení používá jednoduchý model obnovení.
Pokud chcete použít
AdventureWorks2025databázi, upravte ji tak, aby používala úplný model obnovení:USE master; GO ALTER DATABASE MyDB1 SET RECOVERY FULL; GOPo úpravě modelu obnovení databáze z FUNKCE SIMPLE na FULL vytvořte úplnou zálohu, kterou lze použít k vytvoření sekundární databáze. Vzhledem k tomu, že model obnovení byl právě změněn, je zadána možnost WITH FORMAT pro vytvoření nové sady médií. To je užitečné k oddělení záloh v rámci úplného modelu obnovení od všech předchozích záloh provedených v rámci jednoduchého modelu obnovení. Pro účely tohoto příkladu se záložní soubor (C:\
AdventureWorks2025.bak) vytvoří na stejné jednotce jako databáze.Poznámka
Pro produkční databázi byste měli vždy zálohovat do samostatného zařízení.
V instanci serveru, která je hostitelem primární repliky (
INSTANCE01), vytvořte úplnou zálohu primární databáze následujícím způsobem:BACKUP DATABASE MyDB1 TO DISK = 'C:\MyDB1.bak' WITH FORMAT GOZkopírujte úplnou zálohu do instance serveru, která je hostitelem sekundární repliky.
Obnovte úplnou zálohu pomocí funkce RESTORE WITH NORECOVERY na instanci serveru, která je hostitelem sekundární repliky. Příkaz pro obnovení závisí na tom, jestli jsou cesty primární a sekundární databáze identické.
Pokud jsou cesty stejné:
Na počítači, který je hostitelem sekundární repliky, obnovte úplnou zálohu následujícím způsobem:
RESTORE DATABASE MyDB1 FROM DISK = 'C:\MyDB1.bak' WITH NORECOVERY GOPokud se cesty liší:
Pokud se cesta ke sekundární databázi liší od cesty k primární databázi (například pokud se liší písmena disků), vytvoření sekundární databáze vyžaduje, aby operace obnovení zahrnovala klauzuli MOVE.
Důležitý
Pokud se názvy cest primární a sekundární databáze liší, nemůžete přidat soubor. Důvodem je to, že při přijetí protokolu pro operaci přidání souboru se instance serveru sekundární repliky pokusí umístit nový soubor do stejné cesty, jakou používá primární databáze.
Následující příkaz například obnoví zálohu primární databáze, která se nachází v datovém adresáři výchozí instance SQL Serveru, C:\Program Files\Microsoft SQL Server\MSSQL12. MSSQLSERVER\MSSQL\DATA. Operace obnovení databáze musí přesunout databázi do datového adresáře vzdálené instance SQL Serveru s názvem (AlwaysOn1), který je hostitelem sekundární repliky na jiném uzlu clusteru. Tam jsou data a soubory protokolu obnoveny do adresáře C:\Program Files\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA. Operace obnovení používá funkci WITH NORECOVERY k opuštění sekundární databáze v obnovovací databázi.
RESTORE DATABASE MyDB1 FROM DISK='C:\MyDB1.bak' WITH NORECOVERY, MOVE 'MyDB1_Data' TO 'C:\Program Files\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA\MyDB1_Data.mdf', MOVE 'MyDB1_Log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA\MyDB1_Data.ldf'; GO
Po obnovení úplné zálohy je nutné vytvořit zálohu protokolu v primární databázi. Například následující příkaz Transact-SQL zálohuje protokol do záložního souboru s názvem E:\MyDB1_log.trn:
BACKUP LOG MyDB1 TO DISK = 'E:\MyDB1_log.trn' GONež budete moct databázi připojit k sekundární replice, musíte použít požadovanou zálohu protokolů (a všechny následné zálohy protokolů).
Například následující příkaz Transact-SQL obnoví první protokol z C:\MyDB1.trn:
RESTORE LOG MyDB1 FROM DISK = 'E:\MyDB1_log.trn' WITH FILE=1, NORECOVERY GOPokud dojde k dalším zálohám protokolu před tím, než se databáze připojí k sekundární replice, musíte také obnovit všechny tyto zálohy protokolů postupně do instance serveru, která je hostitelem sekundární repliky pomocí funkce RESTORE WITH NORECOVERY.
Například následující příkaz Transact-SQL obnoví dva další protokoly z E:\MyDB1_log.trn:
RESTORE LOG MyDB1 FROM DISK = 'E:\MyDB1_log.trn' WITH FILE=2, NORECOVERY GO RESTORE LOG MyDB1 FROM DISK = 'E:\MyDB1_log.trn' WITH FILE=3, NORECOVERY GO
Použití PowerShellu
Příprava sekundární databáze
Pokud potřebujete vytvořit nedávnou zálohu primární databáze, změňte adresář (cd) na instanci serveru, která je hostitelem primární repliky.
K vytvoření všech záloh použijte rutinu Backup-SqlDatabase.
Změňte adresář (cd) na instanci serveru, která je hostitelem sekundární repliky.
Pokud chcete obnovit zálohy databáze a protokolů každé primární databáze, použijte rutinu restore-SqlDatabase a zadejte parametr obnovení NoRecovery. Pokud se cesty k souborům liší mezi počítači, které hostují primární repliku, a cílovou sekundární replikou, použijte také parametr obnovení Přemístitfile.
Poznámka
Pokud chcete zobrazit syntaxi rutiny, použijte rutinu Get-Help v prostředí SQL Server PowerShell. Další informace najdete v tématu Získání nápovědy k SQL Serveru PowerShell.
Pokud chcete dokončit konfiguraci sekundární databáze, musíte ji připojit ke skupině dostupnosti. Další informace Připojení sekundární databáze ke skupině dostupnosti (SQL Server).
Nastavení a použití poskytovatele SQL Serveru PowerShellu
Ukázkový skript a příkaz pro zálohování a obnovení
Následující příkazy PowerShellu zálohují úplné zálohování databáze a transakční protokol do sdílené síťové složky a obnovují tyto zálohy z této sdílené složky. V tomto příkladu se předpokládá, že cesta k souboru, do které je databáze obnovena, je stejná jako cesta k souboru, na kterém byla databáze zálohovaná.
# Create database backup
Backup-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.bak" -ServerInstance "SourceMachine\Instance"
# Create log backup
Backup-SqlDatabase -Database "MyDB1" -BackupAction "Log" -BackupFile "\\share\backups\MyDB1.trn" -ServerInstance "SourceMachine\Instance"
# Restore database backup
Restore-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.bak" -NoRecovery -ServerInstance "DestinationMachine\Instance"
# Restore log backup
Restore-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.trn" -RestoreAction "Log" -NoRecovery -ServerInstance "DestinationMachine\Instance"
Další kroky
Pokud chcete dokončit konfiguraci sekundární databáze, připojte nově obnovenou databázi ke skupině dostupnosti. Další informace najdete v tématu Připojení sekundární databáze ke skupině dostupnosti (SQL Server).
Viz také
přehled skupin dostupnosti AlwaysOn (SQL Server)
BACKUP (Transact-SQL)
Argumenty RESTORE (Transact-SQL)
OBNOVIT (Transact-SQL)
Řešení potíží s neúspěšnou operací Add-File (skupiny dostupnosti Always On)