Sdílet prostřednictvím


Příprava sekundární databáze pro skupinu dostupnosti AlwaysOn

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:

  1. 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
  2. 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

  1. 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.

  2. 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.

  1. 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.

  2. 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.

  1. 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.

  2. 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.

  3. 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ý.

  4. 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í.

  1. Pokud chcete použít AdventureWorks2025 databázi, upravte ji tak, aby používala úplný model obnovení:

    USE master;  
    GO  
    ALTER DATABASE MyDB1   
    SET RECOVERY FULL;  
    GO  
    
  2. Po ú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  
    GO  
    
  3. Zkopírujte úplnou zálohu do instance serveru, která je hostitelem sekundární repliky.

  4. 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  
      GO  
      
    • Pokud 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  
      
  5. 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'   
    GO  
    
  6. Než 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  
    GO  
    
  7. Pokud 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

  1. 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.

  2. K vytvoření všech záloh použijte rutinu Backup-SqlDatabase.

  3. Změňte adresář (cd) na instanci serveru, která je hostitelem sekundární repliky.

  4. 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.

  5. 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)