Přenášení transakčních protokolů a replikace (SQL Server)

platí pro:SQL Server

Log shipping zahrnuje dvě kopie jediné databáze, které se obvykle nacházejí na 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 primární databáze. Aktualizace klientů do primární databáze se šíří prostřednictvím přesouvání protokolů do druhé kopie databáze, která se označuje jako sekundární databáze. Přesouvání protokolů zahrnuje použití transakčního protokolu při každém vložení, aktualizaci nebo odstranění provedeném v primární databázi do sekundární databáze.

Dodávání protokolů transakcí lze použít společně s replikací s následujícím chováním:

  • Replikace nepokračuje po převzetí služeb při selhání při doručení protokolu. Pokud dojde k přepnutí při selhání, agenti replikace se nepřipojí k sekundární instanci, takže transakce nejsou replikovány do odběratelů. Pokud dojde ke zpětnému přepnutí na primární server, replikace se obnoví. Všechny transakce, které protokolují expediční kopie ze sekundární zpět na primární, se replikují do odběratele.

  • Pokud dojde k trvalé ztrátě primárního serveru, sekundární je možné přejmenovat, aby replikace pokračovala. Zbývající část tohoto tématu popisuje požadavky a postupy pro zpracování tohoto případu. Uvedeným příkladem je publikační databáze, což je nejběžnější databáze pro protokolování odesílání, ale podobný proces lze použít také u databází předplatného a distribuce.

Informace o obnovení databází zahrnutých v replikaci bez nutnosti překonfigurovat replikaci najdete v tématu Zálohování a obnovení replikovaných databází.

Note

K zajištění dostupnosti publikační databáze použijte skupiny dostupnosti Always On namísto dodávání protokolů. Další informace najdete v tématu Konfigurace replikace se skupinami dostupnosti AlwaysOn.

Požadavky a postupy pro replikaci ze sekundárního serveru, pokud dojde ke ztrátě primárního

Mějte na paměti následující požadavky a důležité informace:

  • Pokud primární databáze obsahuje více než jednu databázi publikace, odešle protokol všechny databáze publikace do stejné sekundární databáze.

  • Instalační cesta pro sekundární instanci serveru musí být stejná jako primární. Umístění uživatelských databází na sekundárním serveru musí být stejná jako na primárním serveru.

  • Zálohujte hlavní klíč služby na primárním serveru. Tento klíč se obnoví na sekundárním serveru. Další informace najdete v tématu BACKUPSERVICEBACKUP SERVICE MASTER KEY (Transact-SQL).

  • Log shipping nezaručuje ochranu před ztrátou dat. Selhání primární databáze může vést ke ztrátě dat, která ještě nebyla zálohována nebo pro zálohy, které se během selhání ztratily.

Přesouvání protokolů s transakční replikací

V případě transakční replikace závisí chování dodávání transakčních protokolů na možnosti synchronizovat se zálohováním. Tuto možnost lze nastavit v publikační databázi i v distribuční databázi; při přenášení transakčního protokolu u Vydavatele je relevantní pouze nastavení v publikační databázi.

Nastavení této možnosti v databázi publikace zajistí, že transakce nebudou doručeny do distribuční databáze, dokud nebudou zálohovány v databázi publikace. Poslední zálohu databáze publikace je pak možné obnovit na sekundárním serveru, aniž by bylo možné, že distribuční databáze má transakce, které obnovená databáze publikace nemá. Tato možnost zaručuje, že pokud dojde k převzetí služeb Publisheru na sekundární server, je zachována konzistence mezi Publisherem, distributorem a odběrateli. Latence a propustnost jsou ovlivněny, protože transakce nelze doručovat do distribuční databáze, dokud nebudou zálohovány v Publisher; pokud vaše aplikace dokáže tuto latenci tolerovat, doporučujeme tuto možnost nastavit v databázi publikace. Pokud není nastavená možnost synchronizace se zálohováním , můžou odběratelé obdržet změny, které už nejsou zahrnuté do obnovené databáze na sekundárním serveru. Další informace naleznete v tématu Strategie zálohování a obnovení snímku a transakční replikace.

Konfigurace transakční replikace a přesouvání protokolů pomocí možnosti synchronizace se zálohováním

  1. Pokud není v databázi publikace nastavena možnost synchronizace se zálohováním, spusťte sp_replicationdboption '<publicationdatabasename>', 'sync with backup', 'true'příkaz . Další informace najdete v tématu sp_replicationdboption (Transact-SQL).

  2. Nakonfigurujte odesílání protokolů pro databázi publikace. Další informace najdete v tématu Konfigurace přesouvání protokolů (SQL Server).

  3. Pokud Publisher selže, obnovte na sekundární server poslední zálohu transakčního protokolu databáze pomocí možnosti KEEP_REPLICATION příkazu RESTORE LOG. Tím se zachovají všechna nastavení replikace databáze. Další informace naleznete v tématu Převzetí služeb při selhání sekundárního protokolu (SQL Server) a RESTORE (Transact-SQL).

  4. Obnovte databáze msdb a master z primárního serveru na sekundární. Další informace naleznete v tématu Zálohování a obnovení systémových databází (SQL Server). Pokud byl primární server také Distributorem, obnovte distribuční databázi z primárního serveru na sekundární server.

    Tyto databáze musí být konzistentní s databází publikace v primárním bodě, pokud jde o konfiguraci a nastavení replikace.

  5. Na sekundárním serveru přejmenujte počítač a přejmenujte instanci SQL Server tak, aby odpovídala názvu primárního serveru. Informace o přejmenování počítače najdete v Windows dokumentaci. Informace o přejmenování serveru najdete v tématech Přejmenování počítače, který hostuje samostatnou instanci serveru SQL Server a Přejmenování instance clusteru s podporou převzetí služeb při selhání serveru SQL Server.

  6. Na sekundárním serveru obnovte hlavní klíč služby zálohovaný z primárního serveru. Další informace najdete v tématu RESTORESERVICERESTORE SERVICE MASTER KEY (Transact-SQL).

Konfigurace transakční replikace a přesouvání protokolů bez synchronizace s možností zálohování

  1. Nakonfigurujte odesílání protokolů pro databázi publikace. Další informace najdete v tématu Konfigurace přesouvání protokolů (SQL Server).

  2. Pokud Publisher selže, obnovte na sekundární server poslední zálohu transakčního protokolu databáze pomocí možnosti KEEP_REPLICATION příkazu RESTORE LOG. Tím se zachovají všechna nastavení replikace databáze. Další informace naleznete v tématu Převzetí služeb při selhání sekundárního protokolu (SQL Server) a RESTORE (Transact-SQL).

  3. Obnovte databáze msdb a master z primárního serveru na sekundární. Další informace naleznete v tématu Zálohování a obnovení systémových databází (SQL Server). Pokud byl primární server také Distributorem, obnovte distribuční databázi z primárního serveru na sekundární server.

    Tyto databáze musí být konzistentní s databází publikace v primárním bodě, pokud jde o konfiguraci a nastavení replikace.

  4. Na sekundárním serveru přejmenujte počítač a přejmenujte instanci SQL Server tak, aby odpovídala názvu primárního serveru. Informace o přejmenování počítače najdete v Windows dokumentaci. Informace o přejmenování serveru najdete v tématech Přejmenování počítače, který hostuje samostatnou instanci serveru SQL Server a Přejmenování instance clusteru s podporou převzetí služeb při selhání serveru SQL Server.

    Může se zobrazit chybová zpráva od agenta čtenáře protokolů, že databáze publikace a distribuční databáze nejsou synchronizovány.

  5. Na sekundárním serveru obnovte hlavní klíč služby zálohovaný z primárního serveru. Další informace najdete v tématu RESTORESERVICERESTORE SERVICE MASTER KEY (Transact-SQL).

  6. Spusťte sp_replrestart. Tuto uloženou proceduru lze použít k vynucení, aby agent Čtenář protokolů ignoroval všechny předchozí replikované transakce v protokolu databáze publikace. Transakce použité po dokončení uložené procedury jsou zpracovány agentem Log Reader. Další informace najdete v tématu sp_replrestart (Transact-SQL).

  7. Po úspěšném spuštění uložené procedury restartujte agenta Čtenář protokolu. Pro více informací viz Start and Stop a Replication Agent (SQL Server Management Studio).

  8. Transakce, které již byly distribuovány odběrateli, mohou být použity u vydavatele. Chcete-li zajistit, aby agent distribuce neskončil chybou při pokusu znovu použít tyto transakce u odběratele, zadejte profil agenta s názvem Pokračovat při chybách konzistence dat.

Přesouvání protokolů s využitím slučovací replikace

Postupujte podle pokynů v následujícím postupu a nakonfigurujte slučovací replikaci a přenos protokolů.

Konfigurovat slučovací replikaci a přenos transakčních protokolů

  1. Nakonfigurujte odesílání protokolů pro databázi publikace. Další informace najdete v tématu Konfigurace přesouvání protokolů (SQL Server).

  2. Pokud Publisher selže, na sekundárním serveru přejmenujte počítač a přejmenujte instanci SQL Server tak, aby odpovídala názvu primárního serveru. Informace o přejmenování počítače najdete v Windows dokumentaci. Informace o přejmenování serveru najdete v tématech Přejmenování počítače, který hostuje samostatnou instanci serveru SQL Server a Přejmenování instance clusteru s podporou převzetí služeb při selhání serveru SQL Server.

  3. Obnovte na sekundární server poslední protokol transakcí databáze pomocí možnosti KEEP_REPLICATION příkazu RESTORE LOG. Tím se zachovají všechna nastavení replikace databáze. Další informace naleznete v tématu Převzetí služeb při selhání sekundárního protokolu (SQL Server) a RESTORE (Transact-SQL).

  4. Obnovte databáze msdb a master z primárního serveru na sekundární. Další informace naleznete v tématu Zálohování a obnovení systémových databází (SQL Server). Pokud byl primární server také Distributorem, obnovte distribuční databázi z primárního serveru na sekundární server.

    Tyto databáze musí být konzistentní s databází publikace v primárním bodě, pokud jde o konfiguraci a nastavení replikace.

  5. Na sekundárním serveru obnovte hlavní klíč služby zálohovaný z primárního serveru. Další informace najdete v tématu RESTORESERVICERESTORE SERVICE MASTER KEY (Transact-SQL).

  6. Synchronizujte databázi publikace s jednou nebo více databázemi odběru. To vám umožní nahrát tyto změny provedené dříve v databázi publikace, ale nejsou reprezentovány v obnovené zálohě. Data, která lze nahrát, závisí na způsobu filtrování publikace:

    • Pokud publikace není filtrována, měli byste být schopni aktualizovat databázi publikace synchronizací s nejaktuálnějším odběratelem.

    • Pokud je publikace filtrována, možná nebudete moci aktualizovat databázi publikace. Představte si tabulku, která je rozdělená tak, aby každé předplatné přijímalo zákaznická data pouze pro jednu oblast: Sever, Východ, Jih a Západ. Pokud pro každý oddíl dat existuje alespoň jeden odběratel, synchronizace s odběratelem pro každý oddíl by měla uvést databázi publikace do aktuálního stavu. Pokud se však například data v oddílu West nereplikovala žádnému odběrateli, tato data u vydavatele nelze aktualizovat. V takovém případě doporučujeme znovu inicializovat všechny odběry, aby se data u vydavatele i odběratelů sjednotila. Další informace najdete v tématu Opětovné inicializace předplatných.

    Pokud provádíte synchronizaci s předplatitelem, na kterém běží verze SQL Server před SQL Server 2005 (9.x), předplatné nemůže být anonymní. Musí se jednat o předplatné klienta nebo serverové předplatné (označované jako místní předplatná a globální předplatná v předchozích verzích). Další informace naleznete v tématu Synchronizace dat.

Viz také

replikace SQL Serveru
Informace o přesouvání protokolů (SQL Server)Konfigurace replikace se skupinami dostupnosti AlwaysOn