Sdílet prostřednictvím


Příprava zrcadlové databáze pro zrcadlení (SQL Server)

platí pro:SQL Server

Upozornění

Tato funkce bude odebrána v budoucí verzi SQL Serveru. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají. Pro zajištění vysoké dostupnosti místo toho použijte skupiny dostupnosti AlwaysOn.

Důležité

Zrcadlení databáze v SQL Serveru je odlišná technologie od zrcadlení databáze Microsoft Fabric. Zrcadlení do prostředí Fabric poskytuje lepší analytický výkon, možnost sjednocení datového úložiště pomocí OneLake ve Fabric a otevřený přístup k datům ve formátu Delta Parquet.

Díky zrcadlení do Microsoft Fabric můžete neustále replikovat stávající datovou infrastrukturu přímo do OneLake ve Fabric, včetně dat ze SQL Serveru 2016+, Azure SQL Database, Azure SQL Managed Instance, Cosmos DB, Oracle, Snowflake a dalších.

Před zahájením relace zrcadlení databáze musí vlastník databáze nebo správce systému zajistit, aby zrcadlená databáze byla vytvořena a připravena k zrcadlení. Vytvoření nové zrcadlové databáze minimálně vyžaduje úplné zálohování hlavní databáze a následné zálohování protokolů a jejich obnovení do instance zrcadlového serveru pomocí WITH NORECOVERY.

Toto téma popisuje, jak připravit zrcadlovou databázi na SQL Serveru pomocí aplikace SQL Server Management Studio nebo jazyka Transact-SQL.

Než začnete

Požadavky

  • Instance instančního a zrcadlového serveru musí být spuštěné ve stejné verzi SQL Serveru. I když je možné, aby zrcadlový server měl vyšší verzi SQL Serveru, tato konfigurace se doporučuje pouze během pečlivě plánovaného procesu upgradu. V takové konfiguraci hrozí riziko automatického převzetí služeb při selhání, při kterém se přesun dat automaticky pozastaví, protože data nelze přesunout do nižší verze SQL Serveru. Další informace najdete v tématu Upgradování zrcadlených instancí.

  • Instance instančního a zrcadlového serveru musí být spuštěné ve stejné edici SQL Serveru. Informace o podpoře zrcadlení databáze v SYSTÉMU SQL Server naleznete v tématu Edice a podporované funkce SYSTÉMU SQL Server 2022.

  • Databáze musí používat úplný model obnovení.

    Další informace naleznete v tématu Zobrazení nebo změna modelu obnovení databáze (SQL Server) nebo sys.databases (Transact-SQL) a ALTER DATABASE (Transact-SQL).

  • Název zrcadlové databáze musí být stejný jako název hlavní databáze.

  • Zrcadlová databáze musí být ve stavu OBNOVOVÁNÍ, aby zrcadlení fungovalo. Při přípravě zrcadlové databáze musíte pro každou operaci obnovení použít FUNKCI RESTORE WITH NORECOVERY. Minimálně budete muset pomocí FUNKCE NORECOVERY obnovit úplnou zálohu hlavní databáze, za kterou následuje všechna následná zálohování protokolů.

  • Systém, ve kterém plánujete vytvořit zrcadlovou databázi, musí mít diskovou jednotku s dostatečným místem pro uložení zrcadlové databáze.

Limitace a omezení

  • master, msdb, temp nebo model systémové databáze nelze zrcadlit.

  • Databázi, která patří do skupiny dostupnosti AlwaysOn, nelze zrcadlit.

Doporučení

  • Použijte velmi nedávné úplné zálohování nebo nedávnou rozdílovou zálohu hlavní databáze.

  • Pokud je úloha zálohování protokolů naplánovaná tak, aby se v hlavní databázi spouštěla velmi často, budete možná muset úlohu zálohování zakázat, dokud se nespustí zrcadlení.

  • Pokud je to možné, cesta (včetně písmene jednotky) zrcadlové databáze by měla být shodná s cestou hlavní databáze.

    Pokud se cesty k souborům musí lišit, například pokud je hlavní databáze na jednotce F:, ale zrcadlový systém nemá jednotku F:, musíte do příkazu RESTORE zahrnout možnost MOVE.

    Důležité

    Přidání souboru během relace zrcadlení, aniž by to mělo dopad na relaci, vyžaduje, aby cesta k souboru existovala na obou serverech. Proto pokud při vytváření zrcadlové databáze přesunete soubory databáze, může pozdější operace se zrcadlovým souborem selhat a způsobit pozastavení zrcadlení. Informace o řešení neúspěšné operace vytvoření souboru naleznete v tématu Řešení potíží s konfigurací zrcadlení databáze (SQL Server).

  • Pokud má hlavní databáze nějaké fulltextové katalogy, doporučujeme podívat se na Zrcadlení databází a katalogy Full-Text (SQL Server).

  • Pro produkční databázi vždy zálohujte do samostatného zařízení.

Zabezpečení

FUNKCE TRUSTWORTHY je při zálohování databáze nastavená na VYPNUTO. Proto je funkce TRUSTWORTHY vždy vypnutá na nové zrcadlové databázi. Pokud má být databáze důvěryhodná po převzetí po selhání, je nutné provést další kroky v nastavení. Další informace naleznete v tématu Nastavení zrcadlové databáze pro použití důvěryhodné vlastnosti (Transact-SQL).

Informace o povolení automatického dešifrování hlavního klíče zrcadlové databáze naleznete viz Nastavení šifrované zrcadlové databáze.

Povolení

Vlastník databáze nebo správce systému.

Příprava existující zrcadlové databáze pro obnovení zrcadlení

Pokud bylo zrcadlení odebráno a zrcadlová databáze je stále ve stavu OBNOVENÍ, můžete zrcadlení znovu spustit.

  1. Proveďte alespoň jednu zálohu protokolu na hlavní databázi. Další informace naleznete v tématu Zálohování transakčního protokolu (SQL Server).

  2. V zrcadlené databázi pomocí příkazu RESTORE WITH NORECOVERY obnovte všechny zálohy protokolů provedené v hlavní databázi od okamžiku odstranění zrcadlení. Další informace naleznete v tématu Obnovení zálohy transakčního protokolu (SQL Server).

Příprava nové zrcadlové databáze

Příprava zrcadlové databáze

Poznámka:

Příklad Transact-SQL tohoto postupu najdete v části Příklad (Transact-SQL), dále v této části.

  1. Připojte se k instanci hlavního serveru.

  2. Vytvořte úplnou zálohu databáze nebo rozdílovou zálohu databáze objektu zabezpečení.

  3. Obvykle je nutné provést alespoň jednu zálohu protokolu v hlavní databázi. Zálohování protokolů však může být zbytečné, pokud se databáze právě vytvořila a ještě nebyla provedena žádná záloha protokolu nebo pokud se model obnovení právě změnil z SIMPLE na FULL.

  4. Pokud nejsou zálohy na síťové jednotce, která je přístupná z obou systémů, zkopírujte zálohy databáze a protokolů do systému, který bude hostovat instanci zrcadlového serveru.

  5. Připojte se k instanci zrcadlového serveru.

  6. Pomocí funkce RESTORE WITH NORECOVERY vytvořte zrcadlovou databázi obnovením úplné zálohy databáze a volitelně nejnovější rozdílové zálohy databáze do instance zrcadlového serveru.

    Poznámka:

    Pokud obnovíte skupinu souborů databáze podle skupiny souborů, nezapomeňte obnovit celou databázi.

  7. Pomocí příkazu RESTORE WITH NORECOVERY aplikujte všechny čekající zálohy protokolů nebo jiné zálohy na mirror databázi.

Příklad (Transact-SQL)

Předtím, než začnete proces zrcadlení databáze, je nutné vytvořit zrcadlovou databázi. Měli byste to udělat těsně před zahájením relace zrcadlení.

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 zrcadlení databáze s databází AdventureWorks2025, upravte ji tak, aby používala úplný model obnovení.

    USE master;  
    GO  
    ALTER DATABASE AdventureWorks   
    SET RECOVERY FULL;  
    GO  
    
  2. Po úpravě modelu obnovení databáze z SIMPLE na FULL vytvořte úplnou zálohu, kterou lze použít k vytvoření zrcadlové 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:\AdventureWorks.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 hlavního serveru (zapnuto PARTNERHOST1) vytvořte úplnou zálohu hlavní databáze následujícím způsobem:

    BACKUP DATABASE AdventureWorks   
        TO DISK = 'C:\AdventureWorks.bak'   
        WITH FORMAT  
    GO  
    
  3. Zkopírujte úplnou zálohu na zrcadlový server.

  4. Pomocí funkce RESTORE WITH NORECOVERY obnovte úplnou zálohu na instanci zrcadlového serveru. Příkaz pro obnovení závisí na tom, zda jsou cesty hlavní a zrcadlové databáze identické.

    • Pokud jsou cesty stejné:

      Na instanci zrcadlového serveru (na PARTNERHOST5) obnovte úplnou zálohu následujícím způsobem:

      RESTORE DATABASE AdventureWorks   
          FROM DISK = 'C:\AdventureWorks.bak'   
          WITH NORECOVERY  
      GO  
      
    • Pokud se cesty liší:

      Pokud se cesta zrcadlové databáze liší od cesty hlavní databáze (například písmena diskových jednotek se liší), vytvoření zrcadlové databáze je nutné, aby operace obnovení zahrnovala klauzuli MOVE.

      Důležité

      Pokud se názvy cest hlavních a zrcadlových databází liší, nemůžete přidat soubor. Důvodem je to, že při příjmu protokolu pro operaci přidání souboru se instance zrcadlového serveru pokusí umístit nový soubor do umístění používaného hlavní databází.

      Následující příkaz například obnoví zálohu hlavní databáze umístěné v umístění C:\Program Files\Microsoft SQL Server\MSSQL. n\MSSQL\Data\ do jiného umístění, D:\Program Files\Microsoft SQL Server\MSSQL. n\MSSQL\Data, kde se nachází zrcadlová databáze.

      RESTORE DATABASE AdventureWorks  
         FROM DISK='C:\AdventureWorks.bak'  
         WITH NORECOVERY,   
            MOVE 'AdventureWorks_Data' TO   
               'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks_Data.mdf',   
            MOVE 'AdventureWorks_Log' TO  
               'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks_Log.ldf';  
      GO  
      
  5. Po provedení úplného zálohování je nutné provést zálohování logu v hlavní databázi. Například, následující příkaz Transact-SQL zálohuje protokolový soubor do stejného souboru, který byl použit předchozím úplným zálohováním.

    BACKUP LOG AdventureWorks   
        TO DISK = 'C:\AdventureWorks.bak'   
    GO  
    
  6. Než začnete zrcadlit, musíte použít požadované zálohování logu (a případné následné zálohování logů).

    Například následující příkaz Transact-SQL obnoví první protokol z C:\AdventureWorks.bak:

    RESTORE LOG AdventureWorks   
        FROM DISK = 'C:\AdventureWorks.bak'   
        WITH FILE=1, NORECOVERY  
    GO  
    
  7. Pokud před zahájením zrcadlení dojde k dalším zálohám protokolů, musíte všechny tyto zálohy protokolů obnovit postupně na zrcadlový server pomocí WITH NORECOVERY.

    Například následující příkaz Transact-SQL obnoví dva další protokoly z C:\AdventureWorks.bak:

    RESTORE LOG AdventureWorks   
        FROM DISK = 'C:\AdventureWorks.bak'   
        WITH FILE=2, NORECOVERY  
    GO  
    RESTORE LOG AdventureWorks   
        FROM DISK = 'C:\AdventureWorks.bak'   
        WITH FILE=3, NORECOVERY  
    GO  
    

Úplný příklad nastavení zrcadlení databáze, který ukazuje nastavení zabezpečení, přípravu zrcadlové databáze, nastavení partnerů a přidání určující kopie, najdete v tématu Nastavení zrcadlení databáze (SQL Server).

Pokračovat: Po přípravě zrcadlové databáze

  1. Pokud se od poslední operace PROTOKOLU RESTORE provedly nějaké další zálohy protokolů, musíte ručně použít každou další zálohu protokolu pomocí FUNKCE RESTORE WITH NORECOVERY.

  2. Spusťte relaci zrcadlení. Další informace naleznete v tématu Vytvoření relace zrcadlení databáze pomocí ověřování systému Windows (SQL Server Management Studio) nebo Vytvoření relace zrcadlení databáze pomocí ověřování systému Windows (Transact-SQL).

  3. Pokud jste zakázali úlohu zálohování v hlavní databázi, znovu ji můžete obnovit.

  4. Pokud musí být databáze po selhání důvěryhodná, je po zahájení procesu zrcadlení potřeba provést další kroky nastavení. Další informace naleznete v tématu Nastavení zrcadlové databáze pro použití důvěryhodné vlastnosti (Transact-SQL).

Související úkoly

Viz také

Zrcadlení databáze (SQL Server)
Zabezpečení přenosu dat pro zrcadlení databáze a Always On skupiny dostupnosti (SQL Server)
Nastavení zrcadlení databáze (SQL Server)
zálohování a obnovení katalogů a indexů Full-Text
zrcadlení databáze a katalogy Full-Text (SQL Server)
Zrcadlení a replikace databáze (SQL Server)
BACKUP (Transact-SQL)
OBNOVIT (Transact-SQL)
Argumenty RESTORE (Transact-SQL)