Sdílet prostřednictvím


Transakční replikace

platí pro: SQL Server Azure SQL DatabaseAzure SQL Managed Instance

Tento článek představuje transakční replikaci pro SQL Server. Transakční replikace obvykle začíná snímkem databázových objektů a dat publikace. Jakmile se pořídí počáteční snímek, následné změny dat a změny schématu provedené v Publisheru se obvykle doručí odběrateli, jakmile dojde (téměř v reálném čase). Změny dat se použijí pro odběratele ve stejném pořadí a ve stejném rozsahu transakcí, jako došlo u vydavatele; v rámci publikace je tedy zaručena transakční konzistence.

Přehled

Transakční replikace se obvykle používá v prostředích mezi servery a je vhodná v každém z následujících případů:

  • Chcete, aby se přírůstkové změny rozšířily na předplatitele, jakmile k nim dojde.

  • Aplikace vyžaduje nízkou latenci mezi časovými změnami v Publisheru a změnami, které přicházejí na odběratele.

  • Aplikace vyžaduje přístup k přechodným stavům dat. Pokud se například řádek změní pětkrát, transakční replikace umožňuje aplikaci reagovat na každou změnu (například aktivaci triggeru), nikoli pouze na čistou změnu dat na řádek.

  • Publisher má velmi velký objem aktivity vložení, aktualizace a odstranění.

  • Vydavatel nebo odběratel je databáze jiného typu než SQL Server, například Oracle.

Ve výchozím nastavení by se předplatitelé transakčních publikací měli považovat za jen pro čtení, protože změny se nešíří zpět do Publisheru. Transakční replikace ale nabízí možnosti, které umožňují aktualizace u odběratele.

Poznámka:

Spravovaná instance Azure SQL může být vydavatelem, distributorem a předplatitelem pro snímkovou a transakční replikaci. Databáze ve službě Azure SQL Database můžou být nabízeny pouze předplatitelům pro snímkovou a transakční replikaci. Další informace najdete v tématu Transakční replikace se službou Azure SQL Database a službou Azure SQL Managed Instance.

Konfigurace šifrování TLS 1.3

SQL Server 2025 (17.x) zavádí podporu TDS 8.0 pro transakční replikaci, která zahrnuje:

  • Konfigurace agentů replikace pro použití šifrování TLS 1.3 mezi instancemi SQL Serveru 2025 (17.x) a také mezi SQL Serverem 2025 (17.x) a spravovanou instancí Azure SQL.
  • Výchozí šifrování komunikace mezi instancemi propojeného serveru mezi instancemi SQL Serveru 2025 (17.x) v topologii replikace. Odkazované servery v SYSTÉMU SQL Server 2025 (17.x) používají ovladač OLE DB v19, který ve výchozím nastavení šifrování Encrypt=Mandatory používá.

Jak funguje transakční replikace

Transakční replikace se implementuje pomocí agenta snímků SQL Serveru, agenta čtenáře protokolu a distribučního agenta. Agent snímků připravuje soubory snímků obsahující schéma a data publikovaných tabulek a databázových objektů, ukládá soubory do složky snímků a zaznamenává úlohy synchronizace v distribuční databázi distributora.

Agent služby Log Reader monitoruje transakční protokol každé databáze nakonfigurované pro transakční replikaci a kopíruje transakce označené pro replikaci z transakčního protokolu do distribuční databáze, která slouží jako spolehlivá fronta pro ukládání a předávání. Distribuční agent zkopíruje počáteční snímkové soubory ze složky snímků a transakce uchovávané v tabulkách distribuční databáze odběratelům.

Přírůstkové změny provedené u Publisheru přecházejí k odběratelům podle plánu distribuce prostřednictvím distribučního agenta, který může běžet nepřetržitě s minimální latencí nebo v naplánovaných intervalech. Vzhledem k tomu, že změny dat musí být provedeny na serveru Publisher (při použití transakční replikace bez možnosti okamžité aktualizace nebo aktualizace ve frontě), konflikty aktualizací jsou takto vyloučeny. Nakonec všichni odběratelé dosáhnou stejných hodnot jako Vydavatel. Pokud se při transakční replikaci používají okamžité aktualizace nebo možnosti aktualizace ve frontě, můžou být aktualizace provedeny u odběratele a při aktualizaci ve frontě se můžou vyskytnout konflikty.

Následující obrázek znázorňuje hlavní komponenty transakční replikace.

Komponenty transakční replikace a tok dat

Počáteční datová sada

Aby nový odběratel transakční replikace mohl přijímat přírůstkové změny od vydavatele, musí odběratel obsahovat tabulky se stejným schématem a daty jako tabulky v Publisheru. Počáteční datová sada je obvykle snímek vytvořený agentem snímku a distribuovaný a použitý distribučním agentem. Počáteční datovou sadu je možné zadat také prostřednictvím zálohy nebo jiných prostředků, jako je služba SQL Server Integration Services.

Pokud se snímky distribuují a použijí pro předplatitele, ovlivní to jenom ty předplatitele, kteří čekají na počáteční snímky. Ostatní odběratelé této publikace (ty, které již byly inicializovány) nejsou ovlivněné.

Souběžné zpracování snímků

Replikace snímků umístí sdílené zámky na všechny tabulky publikované jako součást replikace po dobu generování snímků. To může zabránit tomu, aby se aktualizace v tabulkách publikování provedly. Souběžné zpracování snímků, výchozí nastavení s transakční replikací, neudržuje zámky sdílené složky v průběhu celé generace snímků, což uživatelům umožňuje pokračovat v práci bez přerušení, zatímco replikace vytváří počáteční snímkové soubory.

Agent snímků

Postupy, podle kterých agent snímků implementuje počáteční snímek v transakční replikaci, jsou stejné postupy, které se používají při replikaci snímků (s výjimkou výše uvedených pokynů týkajících se souběžného zpracování snímků).

Po vygenerování souborů snímků je můžete zobrazit ve složce snímků pomocí Průzkumníka Microsoft Windows.

Úprava dat a agenta čtenáře protokolů

Agent Log Reader běží na distributoru; obvykle běží nepřetržitě, ale může také běžet podle plánu, který vytvoříte. Při provádění agent Log Reader nejprve přečte transakční protokol publikace (stejný databázový protokol používaný ke sledování transakcí a obnovení během běžných operací databázového stroje SQL Serveru) a identifikuje všechny příkazy INSERT, UPDATE a DELETE nebo jiné změny dat v transakcích, které byly označeny pro replikaci. Dále agent zkopíruje tyto transakce v dávkách do distribuční databáze distributora. Agent Log Reader používá interní uloženou proceduru sp_replcmds k získání další sady příkazů označených pro replikaci z protokolu. Distribuční databáze se pak stane frontou pro ukládání a předávání, ze které se změny odesílají odběratelům. Do distribuční databáze se odesílají pouze potvrzené transakce.

Po úspěšném zápisu celé dávky transakcí do distribuční databáze se potvrdí. Po potvrzení každé dávky příkazů do distributora agent Log Reader volá sp_repldone, aby označil, kde byla replikace naposledy dokončena. Nakonec agent označí řádky v transakčním protokolu, které jsou připravené k vymazání. Řádky, které stále čekají na replikaci, se nevyprázdní.

Příkazy transakcí jsou uloženy v distribuční databázi, dokud nebudou rozšířeny do všech odběratelů nebo do dosažení maximální doby uchovávání distribuce. Odběratelé obdrží transakce ve stejném pořadí, v jakém byly použity v Publisheru.

Distribuční agent

Agent distribuce je spuštěný na distributorovi pro nabízené odběry a na odběrateli pro vyžádané odběry. Agent přesune transakce z distribuční databáze na odběratele. Pokud je předplatné označené k ověření, agent distribuce také zkontroluje, jestli se data v publisheru a odběrateli shodují.

Typy publikací

Transakční replikace nabízí čtyři typy publikací:

Typ publikace Popis
Standardní transakční publikace Vhodné pro topologie, ve kterých jsou u odběratele všechna data jen pro čtení (transakční replikace neuplatňuje tento požadavek na odběratele).

Standardní transakční publikace se standardně vytvářejí při použití Transact-SQL nebo objektů RMO (Replication Management Object). Při použití Průvodce vytvořením nové publikace se tyto vytvoří tak, že na stránce Typ publikace vyberete transakční publikaci.

Další informace o vytváření publikací naleznete v tématu Publikování dat a databázových objektů.
Transakční publikace s aktualizovatelnými předplatnými Vlastnosti tohoto typu publikace jsou:

- Každá lokalita má stejná data, s jedním vydavatelem a jedním odběratelem.
-U odběratele je možné aktualizovat řádky.
- Tato topologie je nejvhodnější pro serverová prostředí vyžadující vysokou dostupnost a škálovatelnost čtení.

Další informace najdete v tématu Aktualizovatelná předplatná.
Topologii peer-to-peer Vlastnosti tohoto typu publikace jsou:
- Každá lokace má identická data a funguje jako vydavatel i odběratel.
- Stejný řádek lze změnit pouze v jednom umístění najednou.
- Podporuje detekci konfliktů.
– Tato topologie je nejvhodnější pro serverová prostředí vyžadující vysokou dostupnost a škálovatelnost čtení.

Další informace najdete v tématu Transakční replikace peer-to-peer.
Obousměrná transakční replikace Vlastnosti tohoto typu publikace jsou:
Obousměrná replikace se podobá replikaci peer-to-peer, ale neposkytuje řešení konfliktů. Obousměrná replikace je navíc omezená na 2 servery.

Další informace naleznete v tématu Obousměrná transakční replikace