Sdílet prostřednictvím


Zrcadlení a replikace databáze (SQL Server)

platí pro:SQL Server

Zrcadlení databáze lze použít ve spojení s replikací, aby se zlepšila dostupnost databáze publikace. Zrcadlení databáze zahrnuje dvě kopie izolované databáze, které se obvykle nacházejí v různých počítačích. V každém okamžiku je klientům aktuálně k dispozici pouze jedna kopie databáze. Tato kopie se označuje jako hlavní databáze. Aktualizace provedené klienty hlavní databáze se použijí na druhou kopii databáze, která se označuje jako zrcadlová databáze. Zrcadlení zahrnuje použití protokolu transakcí z každé vložené, aktualizované nebo odstraněné položky v hlavní databázi do zrcadlové databáze.

Převzetí služeb při selhání replikace do zrcadla je plně podporováno pro publikační databáze s omezenou podporou pro předplatitelské databáze. Zrcadlení databáze není podporováno pro distribuční databázi. Informace o obnovení distribuční databáze nebo databáze předplatného bez nutnosti překonfigurovat replikaci najdete v tématu Zálohování a obnovení replikovaných databází.

Poznámka:

Po převzetí služeb při selhání se zrcadlo stane hlavním serverem. V tomto tématu "hlavní objekt" a "zrcadlo" vždy odkazují na původní hlavní objekt a zrcadlo.

Požadavky a důležité informace o používání replikace se zrcadlením databáze

Při použití replikace se zrcadlením databáze mějte na paměti následující požadavky a důležité informace:

  • Hlavní objekt a zrcadlo musí sdílet distributora. Doporučujeme, aby to byl vzdálený distributor, který poskytuje větší odolnost proti chybám, pokud má Publisher neplánované převzetí služeb při selhání.

  • Replikace podporuje zrcadlení databáze publikace pro slučovací replikaci a transakční replikaci s odběrateli s oprávněním pouze ke čtení nebo s odběrateli využívajícími frontu pro aktualizaci. Okamžité aktualizace odběratelů, vydavatelů Oracle, vydavatelů v topologii peer-to-peer a opětovné publikování nejsou podporovány.

  • Metadata a objekty, které existují mimo databázi, se do zrcadla nekopírují, včetně přihlášení, úloh, propojených serverů atd. Pokud požadujete metadata a objekty na zrcadle, musíte je zkopírovat ručně. Další informace najdete v tématu Správa přihlášení a úloh po přepnutí role (SQL Server).

Konfigurace replikace pomocí zrcadlení databáze

Konfigurace replikace a zrcadlení databáze zahrnuje pět kroků. Každý krok je podrobněji popsán v následující části.

  1. Nakonfigurujte vydavatele.

  2. Nakonfigurujte zrcadlení databáze.

  3. Nakonfigurujte zrcadlo tak, aby používalo stejný Distributor jako hlavní server.

  4. Nakonfigurujte agenty replikace pro převzetí služeb při selhání.

  5. Přidejte hlavní server a zrcadlový server do Monitoru replikace.

Kroky 1 a 2 lze provést také v opačném pořadí.

Konfigurace zrcadlení databáze pro publikační databázi

  1. Konfigurace vydavatele:

    1. Doporučujeme použít vzdálený distributor. Další informace o konfiguraci distribuce naleznete v tématu Konfigurace distribuce.

    2. Databázi můžete povolit pro snímkové a transakční publikace nebo slučovat publikace. U zrcadlených databází, které budou obsahovat více než jeden typ publikace, musíte databázi povolit pro oba typy na stejném uzlu pomocí sp_replicationdboption. Můžete například spustit následující volání uložené procedury v objektu zabezpečení:

      exec sp_replicationdboption @dbname='<PublicationDatabase>', @optname='publish', @value=true;  
      exec sp_replicationdboption @dbname='<PublicationDatabase>', @optname='mergepublish', @value=true;  
      

      Další informace o vytváření publikací naleznete v tématu Publikování dat a databázových objektů.

  2. Nakonfigurujte zrcadlení databáze. Další informace naleznete v Vytvoření relace zrcadlení databáze pomocí ověřování systému Windows (SQL Server Management Studio) a Nastavení zrcadlení databáze (SQL Server).

  3. Nakonfigurujte distribuci zrcadla. Zadejte název zrcadla jako Publisher a zadejte stejnou složku Distributor a snapshot, kterou objekt zabezpečení používá. Pokud například konfigurujete replikaci s uloženými procedurami, spusťte sp_adddistpublisher u distributora; a pak na zrcadle spusťte sp_adddistributor . Pro sp_adddistpublisher:

    • Nastavte hodnotu parametru @publisher na název sítě zrcadla.

    • Nastavte hodnotu parametru @working_directory na adresář snímku používaný principálem.

  4. Zadejte název zrcadla pro parametr agenta -PublisherFailoverPartner . Agent Tento parametr je nutný pro následující agenty pro identifikaci zrcadla po selhání:

    • Snapshot Agent (pro všechny publikace)

    • Agent čtení logu (pro všechny transakční publikace)

    • Queue Reader Agent (pro transakční publikace, které podporují aktualizace předplatných ve frontě)

    • Agent slučování (pro slučovací předplatné)

    • Naslouchací proces replikace SQL Serveru (replisapi.dll: pro sloučení předplatných synchronizovaných pomocí synchronizace webu)

    • SQL Merge ActiveX Control (pro sloučení předplatných synchronizovaných s ovládacím prvkem)

    Distribuční agent a ovládací prvek ActiveX distribuce nemají tento parametr, protože se nepřipojí k publisheru.

    Změny parametrů agenta se projeví při příštím spuštění agenta. Pokud agent běží nepřetržitě, musíte agenta zastavit a restartovat. Parametry lze zadat v profilech agenta a z příkazového řádku. Další informace najdete tady:

    Doporučujeme přidat -PublisherFailoverPartner do profilu agenta a potom zadat název zrcadla v profilu. Pokud například konfigurujete replikaci s uloženými procedurami:

    -- Execute sp_help_agent_profile in the context of the distribution database to get the list of profiles.  
    -- Select the profile id of the profile that needs to be updated from the result set.  
    -- In the agent_type column returned by sp_help_agent_profile:   
    -- 1 = Snapshot Agent; 2 = Log Reader Agent; 3 = Distribution Agent; 4 = Merge Agent; 9 = Queue Reader Agent.  
    
    exec sp_help_agent_profile;  
    
    -- Setting the -PublisherFailoverPartner parameter in the default Snapshot Agent profile (profile 1).  
    -- Execute sp_add_agent_parameter in the context of the distribution database.  
    exec sp_add_agent_parameter @profile_id = 1, @parameter_name = N'-PublisherFailoverPartner', @parameter_value = N'<Failover Partner Name>';  
    
    -- Setting the -PublisherFailoverPartner parameter in the default Merge Agent profile (profile 6).  
    -- Execute sp_add_agent_parameter in the context of the distribution database.  
    exec sp_add_agent_parameter @profile_id = 6, @parameter_name = N'-PublisherFailoverPartner', @parameter_value = N'<Failover Partner Name>';  
    
  5. Přidejte hlavní server a zrcadlový server do Monitoru replikace. Další informace naleznete v tématu Přidání a odebrání vydavatelů z nástroje Replication Monitor.

Údržba zrcadlené publikační databáze

Údržba zrcadlené databáze publikace je v podstatě stejná jako údržba databáze bez zrcadlení s následujícími aspekty:

  • Správa a monitorování se musí nacházet na aktivním serveru. V aplikaci SQL Server Management Studio se publikace zobrazují ve složce Místní publikace pouze pro aktivní server. Pokud například dojde k převedení na zrcadlo, publikace se zobrazí na zrcadle a na primárním serveru se již nezobrazují. Pokud databáze přepne na zrcadlo, možná budete muset ručně aktualizovat Management Studio a Replication Monitor, aby se změna projevila.

  • Monitor replikace zobrazuje uzly Publisheru ve stromu objektů pro objektový objekt i zrcadlo. Pokud je hlavní server aktivním serverem, informace o publikaci se zobrazí pouze pod hlavním uzlem ve službě Monitor replikace.

    Pokud je zrcadlo aktivním serverem:

    • Pokud má agent chybu, zobrazí se chyba pouze na hlavním uzlu, ne na zrcadleném uzlu.

    • Pokud je hlavní uzel nedostupný, hlavní a zrcadlové uzly zobrazují identické seznamy publikací. Monitorování by mělo být provedeno u publikací v rámci zrcadlového uzlu.

  • Při použití uložených procedur nebo objektů RMO (Replication Management Object) ke správě replikace na zrcadle, v případech, kdy zadáte název vydavatele, musíte zadat název instance, na které byla databáze povolena pro replikaci. K určení příslušného názvu použijte název serveru publikování funkce.

    Při zrcadlení databáze publikace se metadata replikace uložená v zrcadlené databázi shodují s metadaty uloženými v hlavní databázi. V důsledku toho, u databází publikací povolených pro replikaci na primárním serveru je název instance Publisher uložený v systémových tabulkách na zrcadlovém serveru jménem primárního, nikoli zrcadlového serveru. To má vliv na konfiguraci a údržbu replikace, pokud databáze publikace převezme služby při selhání zrcadlení. Pokud například konfigurujete replikaci s uloženými procedurami na zrcadle po selhání a chcete přidat odběr vyžádané replikace do databáze publikace, která byla povolena v primární databázi, je nutné zadat název primární databáze místo názvu zrcadlení pro @publisher parametr sp_addpullsubscription nebo sp_addmergepullsubscription.

    Pokud povolíte databázi publikace na zrcadleném serveru po převzetí služeb po selhání na zrcadlovém serveru, název instance Publisher uložený v systémových tabulkách je název zrcadla; v tomto případě byste pro parametr @publisher použili název zrcadla.

    Poznámka:

    V některých případech, například sp_addpublication, je parametr @publisher podporován pouze pro vydavatele jiných než SQL Server; v těchto případech není relevantní pro zrcadlení databáze SQL Serveru.

  • Pro synchronizaci předplatného v sadě Management Studio po převzetí služeb při selhání: synchronizujte vyžádaná předplatná od odběratele; a synchronizujte nabízená předplatná z aktivního vydavatele.

Chování replikace při odebrání zrcadlení

Mějte na paměti následující problémy, pokud je zrcadlení databáze odebráno z publikované databáze:

  • Pokud databáze publikace na primárním serveru už není zrcadlena, replikace nadále funguje beze změny proti původnímu primárnímu serveru.

  • Pokud dojde k převzetí služeb databáze publikace z hlavního serveru na zrcadlo a relace zrcadlení je následně zakázána nebo odebrána, agenti replikace nebudou fungovat ve vztahu k zrcadlu. Pokud je hlavní prvek trvale ztracen, zakažte a poté znovu nakonfigurujte replikaci s nástrojem pro zrcadlení určeným jako Publisher.

  • Pokud je zrcadlení databáze zcela odebráno, zrcadlová databáze je ve stavu obnovení a musí být obnovena, aby byla funkční. Chování obnovené databáze s ohledem na replikaci závisí na tom, zda je zadána možnost KEEP_REPLICATION. Tato možnost vynutí operaci obnovení tak, aby při obnovení publikované databáze na jiný server, než na kterém byla vytvořena záloha, byla zachována nastavení replikace. Možnost KEEP_REPLICATION použijte pouze v případech, kdy není k dispozici jiná databáze publikace. Tato možnost není podporována, pokud je jiná databáze publikace stále nedotčená a replikovaná. Další informace o KEEP_REPLICATION naleznete v tématu RESTORE (Transact-SQL).

Chování agenta Log Reader

Následující tabulka popisuje chování agenta Log Reader pro různé provozní režimy zrcadlení databáze.

Provozní režim Chování agenta Log Reader, pokud zrcadlo není k dispozici
Režim vysoké bezpečnosti s automatickým přepínáním při selhání Pokud zrcadlo není k dispozici, agent Log Reader rozšíří příkazy do distribuční databáze. Hlavní server nemůže provést převzetí služeb při selhání, dokud nebude zrcadlo online a nebude mít všechny transakce z hlavního serveru.
Režim vysokého výkonu Pokud zrcadlo není k dispozici, hlavní databáze běží nechráněná (tedy bez zrcadlení). Agent Log Reader však replikuje pouze ty transakce, které jsou zapsány na zrcadle. Pokud je služba vynucena a zrcadlový server převezme roli hlavního serveru, agent čtenáře protokolu bude pracovat se zrcadlem a zahájí zpracování nových transakcí.

Mějte na paměti, že latence replikace se zvýší, pokud zrcadlo zaostává za hlavním serverem.
Režim vysoké bezpečnosti bez automatického převzetí služeb při selhání U všech potvrzených transakcí je zaručeno, že budou zapsány na disk ve zrcadlovém záznamu. Agent protokolu čtení replikuje pouze transakce, které jsou potvrzené na zrcadle databáze. Pokud zrcadlo není k dispozici, hlavní entita zakáže další aktivitu v databázi; agent Log Reader proto nemá žádné transakce, které by bylo potřeba replikovat.

Viz také

replikace SQL Serveru
Přesouvání protokolů a replikace (SQL Server)