Sdílet prostřednictvím


Provozní režimy zrcadlení databáze

platí pro:SQL Server

Toto téma popisuje synchronní a asynchronní provozní režimy pro relace zrcadlení databází.

Poznámka:

Úvod k zrcadlení databáze najdete v tématu Zrcadlení databáze (SQL Server).

Pojmy a definice

Tato část představuje několik termínů, které jsou pro toto téma ústřední.

Režim vysokého výkonu
Relace zrcadlení databáze funguje asynchronně a používá pouze hlavní server a zrcadlový server. Jedinou formou přepínání rolí je vynucená služba (s možnou ztrátou dat).

Režim vysoké bezpečnosti
Relace zrcadlení databáze funguje synchronně a volitelně používá určující kopii, stejně jako hlavní server a zrcadlový server.

Bezpečnost transakcí
Vlastnost databáze specifická pro zrcadlení, která určuje, zda relace zrcadlení databáze funguje synchronně nebo asynchronně. Existují dvě bezpečnostní úrovně: FULL a OFF.

Witness
Pro použití pouze s režimem vysoké bezpečnosti je volitelná instance SQL Serveru, která umožňuje zrcadleným serverům rozpoznat, jestli se má zahájit automatické převzetí služeb při selhání. Na rozdíl od dvou partnerů pro převzetí služeb při selhání svědek nepodporuje databázi. Podpora automatického převzetí služeb při selhání je jedinou rolí určujícího clusteru.

Asynchronní zrcadlení databáze (režimHigh-Performance)

Tato část popisuje, jak funguje asynchronní zrcadlení databáze, kdy je vhodné použít vysoce výkonný režim a jak reagovat, pokud hlavní server selže.

Poznámka:

Většina edic SQL Serveru podporuje pouze synchronní zrcadlení databáze (pouze režim plné bezpečnosti). Informace o edicích, které plně podporují zrcadlení databáze, najdete v tématu Vysoká dostupnost (AlwaysOn) v edicích a podporovaných funkcích SQL Serveru 2022.

Pokud je ochrana transakcí nastavena na VYPNUTO, relace databázového zrcadlení funguje asynchronně. Asynchronní operace podporuje pouze jeden režim s vysokým výkonem. Tento režim zvyšuje výkon na úkor vysoké dostupnosti. Režim vysokého výkonu používá pouze hlavní server a zrcadlový server. Problémy na zrcadlovém serveru nikdy neovlivní hlavní server. Při ztrátě hlavního serveru je zrcadlová databáze označena jako ODPOJENO, ale je k dispozici jako teplá záloha.

Režim vysokého výkonu podporuje pouze jednu formu přepínání rolí: vynucenou službu (s možnou ztrátou dat), která používá zrcadlový server jako záložní pohotovostní server. Vynucená služba je jednou z možných odpovědí na selhání hlavního serveru. Vzhledem k tomu, že je možná ztráta dat, měli byste před vynucením služby na zrcadlový server zvážit další alternativy. Další informace naleznete v tématu Reakce na selhání hlavního objektu, dále v tomto tématu.

Následující obrázek znázorňuje konfiguraci relace pomocí režimu vysokého výkonu.

Konfigurace relace pouze pro partnery

V režimu vysokého výkonu odešle hlavní server protokol pro transakci na zrcadlový server, hlavní server odešle klientovi potvrzení bez čekání na potvrzení ze zrcadlového serveru. Transakce se potvrdí, aniž by čekaly, až zrcadlový server zapíše protokol na disk. Asynchronní operace umožňuje spuštění hlavního serveru s minimální latencí transakcí.

Zrcadlový server se pokusí držet krok se záznamy protokolu odesílanými hlavním serverem. Zrcadlová databáze ale může poněkud zpožďovat hlavní databázi, i když je obvykle mezera mezi databázemi malá. Mezera však může být podstatná, pokud je hlavní server pod velkým pracovním zatížením nebo je přetížen systém zrcadlového serveru.

V této části:

Kdy je vhodný režim High-Performance?

Režim vysokého výkonu může být užitečný ve scénáři zotavení po havárii, ve kterém jsou hlavní a zrcadlové servery oddělené významnou vzdáleností a kde nechcete, aby hlavní server ovlivnil malé chyby.

Poznámka:

Log shipping může doplňovat zrcadlení databáze a je výhodnější alternativou k asynchronnímu zrcadlení databáze. Informace o výhodách přesouvání protokolů najdete v tématu Řešení s vysokou dostupností (SQL Server). Informace o použití přesouvání protokolů se zrcadlením databáze naleznete v tématu Zrcadlení databáze a Přesouvání protokolů (SQL Server).

Dopad svědka na režim High-Performance

Pokud používáte Transact-SQL ke konfiguraci režimu s vysokým výkonem, kdykoli je vlastnost SAFETY nastavena na VYPNUTO, důrazně doporučujeme, aby byla vlastnost WITNESS nastavena také na VYPNUTO. Svědek může existovat společně s režimem vysokého výkonu, ale svědek neposkytuje žádné výhody a představuje riziko.

Pokud je svědek odpojen od relace, když dojde k poruše některého z partnerů, databáze se stane nedostupnou. Důvodem je, že i když režim vysokého výkonu nevyžaduje svědka, je-li jeden nastaven, relace vyžaduje kvorum sestávající ze dvou nebo více instancí serveru. Pokud dojde ke ztrátě kvora relace, nemůže obsluhovat databázi.

Pokud je svědek nastaven v relaci vysokovýkonného režimu, vynucení kvora znamená, že:

  • Pokud dojde ke ztrátě zrcadlového serveru, musí být hlavní server připojen k svědkovému serveru. V opačném případě hlavní server odstaví svou databázi do režimu offline, dokud se sledující server nebo zrcadlový server znovu nepřipojí k relaci.

  • Pokud dojde ke ztrátě hlavního serveru, přesměrování služby na zrcadlový server vyžaduje, aby byl zrcadlový server připojený ke svědkovi.

Poznámka:

Informace o typech kvor najdete v tématu Kvorum: Jak svědek ovlivňuje dostupnost databáze (zrcadlení databáze).

Reakce na selhání hlavního subjektu

Pokud se hlavní objekt nezdaří, vlastník databáze má několik možností následujícím způsobem:

  • Ponechte databázi nedostupnou, dokud hlavní server nebude znovu dostupný.

    Pokud je hlavní databáze a její transakční protokol nedotčené, tato volba zachovává všechny potvrzené transakce na úkor dostupnosti.

  • Zastavte relaci zrcadlení databáze, ručně aktualizujte databázi a pak spusťte novou relaci zrcadlení databáze.

    Pokud dojde ke ztrátě hlavní databáze, ale hlavní server je stále spuštěný, okamžitě se pokuste zálohovat konec protokolu hlavní databáze. Jestliže záloha koncového protokolu proběhne úspěšně, odebrání zrcadlení může být vaším nejlepším řešením. Po odebrání zrcadlení můžete obnovit protokol do bývalé databáze zrcadlení, která zachovává všechna data.

    Poznámka:

    Pokud zálohování protokolu tail-log selhalo a nemůžete čekat na obnovení hlavního serveru, zvažte vynucení služby, která má výhodu údržby stavu relace.

  • Vynucení služby (s možnou ztrátou dat) na zrcadlovém serveru

    Vynucená služba je výhradně metoda zotavení po havárii a měla by se používat střídmě. Vynucení služby je možné pouze v případě, že je hlavní server mimo provoz, relace je asynchronní (bezpečnost transakcí je nastavena na VYPNUTO) a buď relace nemá žádný určující prvek (vlastnost WITNESS je nastavena na VYPNUTO), nebo je určující složka připojena k zrcadle serveru (to znamená, že mají kvorum).

    Vynucení služby způsobí, že zrcadlový server převezme roli primárního serveru a obsluhuje svou kopii databáze pro klienty. Pokud je služba vynucená, transakční protokoly, které hlavní server ještě neodeslal na zrcadlový server, budou ztraceny. Proto byste měli vynucenou službu omezit na situace, kdy je možná ztráta dat přijatelná a okamžitá dostupnost databáze je kritická. Informace o tom, jak funguje vynucená služba, a o osvědčených postupech jejího použití najdete v tématu Přepínání rolí během relace zrcadlení databáze (SQL Server).

Synchronní zrcadlení databáze (režim vysoké bezpečnosti)

Tato část popisuje, jak funguje synchronní zrcadlení databáze, včetně režimů vysoké bezpečnosti (s automatickým převzetím služeb při selhání a bez automatického převzetí služeb při selhání) a poskytuje informace o úloze svědka v automatickém převzetí služeb při selhání.

Pokud je bezpečnost transakcí nastavena na FULL, relace zrcadlení databáze běží v režimu vysoké úrovně bezpečnosti a operuje synchronně po počáteční synchronizační fázi. Tato část popisuje podrobnosti relací zrcadlení databáze nakonfigurovaných pro synchronní operaci.

Aby bylo dosaženo synchronní operace relace, musí zrcadlový server synchronizovat zrcadlovou databázi s hlavní databází. Když sezení začíná, hlavní server začne odesílat svůj aktivní deník na zrcadlový server. Zrcadlový server zapíše všechny příchozí záznamy protokolu na disk co nejrychleji. Jakmile se všechny přijaté záznamy protokolu zapíšou na disk, databáze se synchronizují. Dokud partneři zůstanou ve komunikaci, zůstanou databáze synchronizované.

Poznámka:

Chcete-li monitorovat změny stavů v relaci zrcadlení databáze, použijte událostní třídu Database Mirroring State Change. Další informace naleznete v tématu Třídy událostí změny stavu zrcadlení databáze.

Po dokončení synchronizace se na zrcadlovém serveru potvrdí také každá transakce potvrzená v hlavní databázi, která zaručuje ochranu dat. Toho dosáhnete tak, že čekáte na potvrzení transakce v hlavní databázi, dokud hlavní server neobdrží zprávu ze zrcadlového serveru s oznámením, že zpevnil protokol transakce na disk. Všimněte si, že čekání na tuto zprávu zvyšuje latenci transakce.

Doba potřebná pro synchronizaci v podstatě závisí na tom, jak daleko byla zrcadlová databáze za hlavní databází na začátku relace (měřená počtem záznamů protokolu původně přijatých z hlavního serveru), pracovním zatížením hlavní databáze a rychlostí zrcadlového systému. Po synchronizaci relace zůstane v fronte pro opakování ztužený protokol, který se ještě musí znovu provést v zrcadlové databázi.

Jakmile se zrcadlová databáze synchronizuje, stav obou kopií databáze se změní na SYNCHRONIZED.

Synchronní operace se udržuje následujícím způsobem:

  1. Při příjmu transakce z klienta zapíše hlavní server protokol transakce do transakčního protokolu.

  2. Hlavní server zapíše transakci do databáze a současně odešle záznam protokolu na zrcadlový server. Hlavní server čeká na potvrzení ze zrcadlového serveru před potvrzením některé z následujících operací klientovi: potvrzení transakce nebo vrácení zpět.

  3. Zrcadlový server zpevní protokol na disk a vrátí potvrzení na hlavní server.

  4. Při přijetí potvrzení ze zrcadlového serveru odešle hlavní server klientovi potvrzovací zprávu.

Režim vysoké bezpečnosti chrání vaše data tím, že vyžaduje synchronizaci dat mezi dvěma místy. Všechny potvrzené transakce jsou zaručeny, že se zapisují na disk na zrcadlovém serveru.

V této části:

Režim vysokého zabezpečení bez automatického převzetí služeb při selhání

Následující obrázek znázorňuje konfiguraci režimu vysoké bezpečnosti bez automatického převzetí služeb při selhání. Konfigurace se skládá pouze ze dvou partnerů.

Partneři komunikující bez svědka

Když jsou partneři připojení a databáze je už synchronizovaná, je podporováno ruční převzetí při selhání. Pokud dojde k výpadku instance zrcadlového serveru, hlavní instance serveru není ovlivněná a spustí se (bez zrcadlení dat). Pokud dojde ke ztrátě hlavního serveru, zrcadlení se pozastaví, ale služba může být převedena na zrcadlový server, přičemž může dojít ke ztrátě dat. Další informace naleznete v tématu Přepínání rolí během relace zrcadlení databáze (SQL Server).

Režim vysoké bezpečnosti s automatickým převzetím při selhání

Automatické převzetí služeb při selhání zajišťuje vysokou dostupnost tím, že zajistí, že databáze bude dál obsluhována po ztrátě jednoho serveru. Automatické převzetí služeb při selhání vyžaduje, aby relace měla třetí instanci serveru, svědek, která se ideálně nachází na třetím počítači. Následující obrázek znázorňuje konfiguraci relace režimu s vysokou bezpečností, která podporuje automatické převzetí služeb při selhání.

Svědek a dva partneři relace

Na rozdíl od obou partnerů svědek databázi neslouží. Svědek jednoduše podporuje automatické převzetí tím, že ověří, zda hlavní server funguje. Zrcadlový server zahájí automatické převzetí služeb při selhání pouze v případě, že zrcadlo a určující složka zůstanou vzájemně připojené po odpojení od hlavního serveru.

Pokud je nastaven svědek, relace vyžaduje quorum - vztah mezi alespoň dvěma instancemi serveru, který umožňuje zpřístupnění databáze. Další informace najdete v tématu Svědek databázového zrcadlení a Quorum: Jak svědek ovlivňuje dostupnost databáze (databázové zrcadlení).

Automatické převzetí služeb při selhání vyžaduje následující podmínky:

  • Databáze je již synchronizována.

  • K selhání dochází, když jsou všechny tři instance serveru připojeny a svědek a zrcadlový server zůstanou připojeny.

Ztráta partnera má následující účinek:

  • Pokud se hlavní server stane nedostupným za výše uvedených podmínek, dojde k automatickému převzetí služeb. Zrcadlový server se přepne do hlavní role a nabízí svou databázi jako hlavní databázi.

  • Pokud se hlavní server stane nedostupným, pokud tyto podmínky nejsou splněny, může být možné vynucení služby (s možnou ztrátou dat). Další informace naleznete v tématu Přepínání rolí během relace zrcadlení databáze (SQL Server).

  • Pokud se jediný zrcadlový server stane nedostupným, hlavní server a svědek budou pokračovat.

Pokud relace ztratí svůj svědek, kvorum vyžaduje obě strany. Pokud některý z partnerů ztratí kvorum, oba partneři ztratí kvorum a databáze bude nedostupná, dokud se znovu nenaváže kvorum. Tento požadavek na kvórum zajišťuje, že v nepřítomnosti svědka databáze nikdy neběží vystavená, to znamená bez synchronizace.

Poznámka:

Pokud očekáváte, že svědek zůstane po dlouhou dobu odpojený, doporučujeme jej odebrat z relace, dokud nebude dostupný.

nastavení Transact-SQL a provozní režimy zrcadlení databáze

Tato část popisuje relaci zrcadlení databáze z hlediska nastavení ALTER DATABASE a stavů zrcadlené databáze a svědka, je-li přítomen. Tato část je zaměřená na uživatele, kteří spravují zrcadlení databáze primárně nebo výhradně pomocí jazyka Transact-SQL, a nikoli pomocí aplikace SQL Server Management Studio.

Návod

Jako alternativu k použití jazyka Transact-SQL můžete řídit provozní režim relace v Průzkumníku objektů pomocí stránky Zrcadlení v dialogovém okně Vlastnosti databáze . Další informace naleznete v Vytvoření relace zrcadlení databáze pomocí ověřování systému Windows (SQL Server Management Studio).

V této části:

Vliv stavu bezpečnosti transakcí a svědka na provozní režim

Provozní režim relace je určen kombinací nastavení bezpečnosti transakce a stavu svědka. Vlastník databáze může kdykoli změnit úroveň ochrany transakcí a přidat nebo odebrat svědka.

V této části:

Bezpečnost transakcí

Bezpečnost transakcí je vlastnost databáze specifická pro zrcadlení, která určuje, zda relace zrcadlení databáze funguje synchronně nebo asynchronně. Existují dvě bezpečnostní úrovně: FULL a OFF.

  • BEZPEČNOST PLNÁ

    Úplná bezpečnost transakcí způsobí, že relace bude fungovat synchronně v režimu vysoké bezpečnosti. Pokud je přítomen svědek, relace podporuje automatické převzetí služeb při selhání.

    Když vytvoříte relaci pomocí příkazů ALTER DATABASE, relace začíná vlastností SAFETY nastavenou na FULL; to znamená, že relace začíná v režimu vysoké bezpečnosti. Po zahájení relace můžete přidat svědka.

    Další informace najdete v části Synchronní zrcadlení databáze (režim High-Safety), uvedené dříve v tomto tématu.

  • BEZPEČNOST VYPNUTA

    Vypnutí zabezpečení transakcí způsobí, že relace bude fungovat asynchronně ve výkonném režimu. Pokud je vlastnost SAFETY nastavená na VYPNUTO, měla by být vlastnost WITNESS nastavena také na VYPNUTO (výchozí). Informace o dopadu svědka v režimu vysokého výkonu najdete v části Stav svědka, uvedené dále v tomto tématu. Další informace o spuštění s vypnutou bezpečností transakcí naleznete v části Asynchronní zrcadlení databáze (high-performance režim), uvedené dříve v tomto tématu.

Nastavení bezpečnosti transakcí databáze se zaznamenává u každého partnera v zobrazení katalogu sys.database_mirroring ve sloupcích mirroring_safety_level a mirroring_safety_level_desc . Další informace najdete v tématu sys.database_mirroring (Transact-SQL).

Vlastník databáze může kdykoli změnit úroveň bezpečnosti transakcí.

Stav svědka

Pokud je nastaven svědek, je vyžadováno kvorum, takže stav svědka je vždy významný.

Pokud existuje, svědek má jeden ze dvou stavů:

  • Když je svědek připojen k partnerovi, nachází se svědek ve stavu CONNECTED vzhledem k tomuto partnerovi a má s ním kvorum. V takovém případě je možné databázi zpřístupnit, i když některý z partnerů není k dispozici.

  • Pokud svědek existuje, ale není připojený k partnerovi, je ve stavu UNKNOWN nebo DISCONNECTED ve vztahu k tomuto partnerovi. V tomto případě svědek nemá kvorum s tímto partnerem a pokud partneři nejsou navzájem propojeni, databáze se stane nedostupnou.

Informace o kvoru naleznete v tématu Kvorum: Jak svědek ovlivňuje dostupnost databáze (zrcadlení databáze).

Stav jednotlivých svědků na instanci serveru je zaznamenán v zobrazení katalogu sys.database_mirroring ve sloupcích mirroring_witness_state a mirroring_witness_state_desc. Další informace najdete v tématu sys.database_mirroring (Transact-SQL).

Následující tabulka shrnuje, jak provozní režim relace závisí na nastavení bezpečnosti transakcí a stavu svědka.

Provozní režim Bezpečnost transakcí Stav svědka
Režim vysokého výkonu Vypnuto NULL (žádný svědek)**
Režim vysoké úrovně bezpečnosti bez automatického převzetí služeb při selhání ÚPLNÝ NULL (žádný svědek)
Režim vysoké bezpečnosti s automatickým přechodem při selhání* ÚPLNÝ PŘIPOJEN

Pokud dojde k odpojení svědka, doporučujeme nastavit WITNESS OFF, dokud nebude dostupná instance serveru svědka.

**Pokud je svědek přítomen v režimu vysokého výkonu, svědek se relace neúčastní. Aby však byla databáze dostupná, musí zůstat alespoň dvě instance serveru připojené. Proto doporučujeme zachovat vlastnost WITNESS nastavenou na vypnuto v relacích s vysokým výkonem. Další informace najdete v tématu Kvorum: Jak svědek ovlivňuje dostupnost databáze (zrcadlení databáze).

Zobrazení bezpečnostního nastavení a stavu svědka

Pokud chcete zobrazit nastavení zabezpečení a stav svědka databáze, použijte zobrazení katalogu sys.database_mirroring . Relevantní sloupce jsou následující:

Faktor Columns Description
Bezpečnost transakcí úroveň bezpečnosti zrcadlení nebo popis úrovně bezpečnosti zrcadlení Nastavení bezpečnosti transakcí pro aktualizace v zrcadlové databázi, jedno z těchto:

UNKNOWN

Vypnuto

ÚPLNÝ

NULL= databáze není online.
Existuje svědek? mirroring_witness_name Název serveru svědka zrcadlení databáze nebo NULL, což označuje, že žádný svědek neexistuje.
Stav svědka mirroring_witness_state nebo mirroring_witness_state_desc Stav svědka v databázi daného partnera.

UNKNOWN

PŘIPOJEN

DISCONNECTED

NULL = neexistuje žádný určující znak nebo databáze není online.

Například na instančním nebo zrcadlovém serveru zadejte:

SELECT mirroring_safety_level_desc, mirroring_witness_name, mirroring_witness_state_desc FROM sys.database_mirroring  

Další informace o tomto zobrazení katalogu naleznete v tématu sys.database_mirroring (Transact-SQL).

Faktory ovlivňující chování při ztrátě hlavního serveru

Následující tabulka shrnuje kombinovaný účinek nastavení bezpečnosti transakce, stav databáze a stav svědka na chování relace zrcadlení při ztrátě hlavního serveru.

Bezpečnost transakcí Stav zrcadlové databáze při zrcadlení Stav svědka Chování při ztrátě hlavního subjektu
ÚPLNÝ SYNCHRONIZOVÁNO PŘIPOJEN Dojde k automatickému přechodu.
ÚPLNÝ SYNCHRONIZOVÁNO DISCONNECTED Zrcadlový server se zastaví; k převzetí při selhání není možné a databázi nelze zpřístupnit.
Vypnuto POZASTAVENO NEBO ODPOJENO NULL (žádný svědek) Služba může být přesměrována na zrcadlový server (s možnou ztrátou dat).
ÚPLNÝ SYNCHRONIZACE nebo POZASTAVENÍ NULL (žádný svědek) Služba může být přesměrována na zrcadlový server (s možnou ztrátou dat).

Související úkoly

Viz také

Monitorování zrcadlení databází (SQL Server)
Svědek zrcadlení databáze