SQL Server Replication je jednou z funkcí synchronizace dat, která se používá ke kopírování a distribuci databázových objektů SQL Server a dat mezi databázemi umístěnými ve stejné instanci SQL Server nebo v různých instancích a k jejich synchronizaci mezi těmito databázemi, aby byla zachována konzistentnost. stavu.
Součásti replikace SQL Server
SQL Server Replication se skládá z níže uvedených hlavních komponent:
- Články :Databázová tabulka, uložené procedury nebo pohledy, které jsou považovány za základní jednotku replikace SQL Server.
- Distributor :Instance SQL Server, která obsahuje Distribuce databáze, ve které jsou uložena replikační metadata a historie. Vezměte v úvahu, že vydavatele lze přiřadit pouze jednomu distributorovi, ale distributor může obsluhovat více vydavatelů.
- Vydavatel :Instance SQL Server, která obsahuje zdrojovou databázi a zpřístupňuje data pro distribuci do jiných umístění.
- Odběratel :Instance SQL Serveru, která přijímá data replikace SQL od vydavatelů a aplikuje je na cílovou databázi a u některých typů replikací předává změny dat zpět vydavateli.
- Agent replikačního snímku :Tento agent je zodpovědný za počáteční synchronizaci ve všech typech replikace, která předplatiteli poskytuje úplnou kopii článků databáze Publisher.
- Agent čtečky protokolů :Tento agent se používá k nepřetržité replikaci transakcí od vydavatele k předplatiteli v transakční replikaci čtením transakčního protokolu zdrojové databáze.
- Distribuční agent :Tento agent se používá k aplikaci počátečního snímku na cílovou databázi a ke sledování a aplikaci průběžných změn dat v cílové databázi. Tento agent se používá pouze s replikacemi Transakční a Snapshot.
- Agent sloučení :Tento agent je odpovědný za kopírování změn od předplatitele k vydavateli a poté zkopírování všech změn od vydavatele k předplatiteli, a to oběma způsoby. Tento agent se používá pouze s replikací Merge.
Typy replikace serveru SQL
SQL Server nám poskytuje různé typy replikace, které lze použít pro distribuci dat na základě požadavků na synchronizaci dat. Všechny typy replikace SQL zahájí počáteční synchronizaci mezi vydavatelem a odběratelem zkopírováním snímku celých dat z vydavatele do odběratele. Tyto typy replikace serveru SQL Server zahrnují:
- Transakční replikace :V tomto typu replikace budou všechny změny provedené na straně vydavatele doručeny a použity přímo na straně odběratele. Příkladem transakční replikace je scénář integrace dat mezi různými lokalitami.
- Replikace snímku :V tomto typu replikace je snímek pořízen od vydavatele a aplikován na odběratele jednou, bez distribuce průběžných změn po snímku, dokud nedojde k další synchronizaci, ve které bude nový snímek zkopírován a znovu aplikován na odběratele.
- Sloučit replikaci :V tomto typu replikace lze změny provádět a synchronizovat na straně vydavatele i odběratele a synchronizovat, když je odběratel připojen k síti. Příkladem použití Merge Replication je výměna dat mezi uživateli aplikace Point of Sale.
- Replikace typu Peer to Peer :Speciální typ transakční replikace, ve které vydavatel distribuuje změny dat více odběratelům současně.
- Obousměrná replikace :Další speciální typ transakční replikace, ve které oba servery fungují jako vydavatel a předplatitel a vyměňují si data mezi sebou.
Požadavky na replikaci serveru SQL
Než nastavíme a nakonfigurujeme replikační server SQL, musíme se ujistit, že jsou zaškrtnuty následující body:
- Součást SQL Server Replication je nainstalována na všech zúčastněných serverech, vydavateli, předplatiteli a distributorovi. To by mělo být nainstalováno během instalace instance SQL Server nebo přidáno do existující instance SQL později pomocí průvodce instalací SQL Server, jak je uvedeno níže:
- Na serverech je dostatek místa pro vytvoření snímku, publikovaná databázová data v odběrateli a nárůst transakčního protokolu databáze vydavatele.
- Agent SQL Server je v provozu, aby bylo možné, že agenti replikace SQL serveru budou moci vytvářet související úlohy agenta SQL a že úlohy poběží bez problémů.
- Mezi zúčastněnými instancemi SQL Serveru je dostatečná šířka pásma sítě.
- Instance Publisher, Distributor a Subscriber se mohou navzájem spojit a porty TCP, kterým tyto instance SQL naslouchají, jsou otevřeny v pravidlech brány firewall. Jinými slovy, jsme schopni se připojit ke každé instanci SQL z ostatních instancí bez jakýchkoli problémů se sítí nebo konektivitou.
- Články databáze vydavatelů, které budou replikovány, by měly mít předem definované omezení primárního klíče, aby byla zachována jedinečnost dat.
- Účet, který bude použit k vytvoření replikačního místa a spuštění replikačních agentů, by měl být alespoň členem pevné databázové role db_owner v databázích Publisher, Distributor a Subscriber, kromě oprávnění ke čtení a zápisu na složku snapshot.
Začínáme
V tomto článku si ukážeme, jak použít typ Transakční replikace k replikaci databázových tabulek AdventureWorks2017 mezi dvěma instancemi SQL Serveru; SQL1 instance, která bude fungovat jako distributor a vydavatel, a SQL2 instance, která bude vystupovat jako Předplatitel.
Transakční replikace serveru SQL bude nakonfigurována ve třech krocích:
- Nakonfigurujte distributora.
- Nakonfigurujte vydavatele.
- Nakonfigurujte odběratele
Pojďme si tyto kroky podrobně probrat.
Nakonfigurujte distributora
Chcete-li nakonfigurovat distributora, připojte se k „SQL1 ” Instance SQL Server, která bude fungovat jako Distributor, což je stejná instance Publisher v našem příkladu zde, procházejte uzel Replikace v Průzkumníku objektů SSMS, klikněte pravým tlačítkem na Replikace a zvolte Konfigurovat distribuci … možnost, jak je uvedeno níže:
První okno, které se zobrazí v průvodci konfigurací distribuce, je spouštěcí průvodce, který shrnuje seznam akcí, které budou v tomto průvodci provedeny. Klikněte na Další pokračovat:
V dalším okně budete požádáni, abyste vybrali, která instance SQL Server bude fungovat jako distributor. Poskytuje vám možnost vybrat aktuální instanci SQL Server jako distributora a vytvořit databázi distribučního systému na této instanci nebo zadat jinou instanci SQL Server, která se má použít jako distributor. V tomto scénáři použijeme aktuální instanci SQL1 jako distributora. Vyberte možnost, která odpovídá vašemu plánu návrhu, a klikněte na Další pokračovat:
Vzhledem k tomu, že služba SQL Server Agent hraje zásadní roli v procesu replikace serveru SQL Server, kde bude pro každého replikačního agenta vytvořena úloha agenta SQL Server, je doporučeno změnit režim spouštění, pokud je služba SQL Server Agent z Ručně (ve výchozím nastavení ), aby byl automatický. Takže se spustí automaticky při restartu SQL Serveru, aniž by hrozilo, že jej zapomenete spustit ručně. Tento průvodce vám poskytuje možnost automaticky změnit režim spouštění služby SQL Server Agent Service s přihlédnutím k tomu, že účet služby SQL Server má na tomto serveru oprávnění správce k provedení této akce. V našem případě tuto změnu provedeme ručně. Klikněte na Další pokračovat:
Poté vás průvodce požádá o zadání složky, ve které bude vytvořen počáteční snímek synchronizace. Určete složku na disku, která má dostatek místa, a klikněte na Další pokračovat:
V dalším okně budete požádáni o zadání názvu distribuční databáze a umístění, kam se mají ukládat data a soubory protokolu pro tuto databázi. Zadejte svůj vlastní název a umístění nebo ponechte výchozí nastavení a poté klikněte na Další pokračovat:
Poté musíte vybrat seznam instancí SQL Server, které budou fungovat jako Vydavatelé a uložit svá metadata v této distribuční databázi. Pokud máte předdefinovanou topologii, přidejte všechny kandidáty na vydavatele a klikněte na Další pokračovat:
V dalším okně vyberte akce, které průvodce provede, zda chcete distribuci nakonfigurovat přímo, vygenerovat soubor skriptu pro uvedené konfigurační kroky nebo obojí. V našem scénáři nakonfigurujeme distribuci přímo. Klikněte na Další pokračovat:
V okně Dokončení průvodce zkontrolujte všechny dříve provedené výběry a ujistěte se, že by u těchto výběrů neměly být provedeny žádné změny, poté klikněte na Dokončit. pro zahájení procesu konfigurace:
Když je proces konfigurace distribuce úspěšně dokončen, průvodce vás upozorní zeleným zaškrtnutím vedle každé akce. Pokud dojde k jakémukoli problému, zobrazí se smysluplná chybová zpráva, aby bylo možné jej opravit a zopakovat konfiguraci znovu. Protože jsme všechny akce úspěšně dokončili, Zavřít průvodce konfigurací:
Pokud rozbalíte uzel Systémové databáze v Průzkumníku objektů SSMS, uvidíte, že je vytvořena nová databáze distribučního systému, která bude použita k uložení metadat SQL Server Replication, jak je uvedeno níže:
Nakonfigurujte vydavatele
Po konfiguraci distributora je dalším krokem konfigurace vydavatele, který funguje jako zdroj dat pro ostatní weby.
Chcete-li nakonfigurovat vydavatele, připojte se k instanci SQL Serveru, která obsahuje databázi, která má být publikována, procházejte uzel SQL Server Replication v Průzkumníku objektů, poté klikněte pravým tlačítkem na uzel Local Publications a zvolte Nová publikace… možnost, jak je uvedeno níže:
První okno v Průvodci novou publikací je úvodní stránka, která zobrazuje seznam akcí, které budou v rámci tohoto průvodce provedeny. Po přečtení, jak vám tento průvodce pomůže, klikněte na Další pokračovat:
Na další stránce budete požádáni o výběr databáze, která bude zveřejněna předplatitelům, což je databáze AdventureWorks2017 v našem demu zde. Klikněte na Další pokračovat:
Poté budete vyzváni k výběru typu publikace, kterou se vám podaří použít. Dříve v tomto článku jsme diskutovali o seznamu typů replikace serveru SQL Server, které jsou poskytovány na serveru SQL Server. V této ukázce použijeme Transakční publikaci typ. Klikněte na Další pokračovat:
Na stránce Články můžete vybrat seznam databázových objektů, které plánujete replikovat odběratelům. Máte možnost vybrat všechny dostupné objekty pod každým typem nebo rozšířit typ objektu a vybrat seznam objektů, které mají být replikovány. V tomto demu zkopírujeme všechny databázové tabulky na odběratele. Po kontrole výběru objektu klikněte na Další pokračovat:
SQL Server umožňuje také přidávat filtry pro vybrané databázové objekty a replikovat pouze data, která splňují kritéria přidaných filtrů. Pokud plánujete replikovat celé řádky tabulky, přeskočte tuto stránku kliknutím na Další tlačítko:
Na stránce Snapshot Agent určete, zda plánujete vytvořit úvodní snímek synchronizace okamžitě, naplánovat jeho spuštění na později nebo jej spustit ručně po dokončení nastavení replikace. V této ukázce vytvořím snímek po dokončení nastavení replikace SQL Server. Klikněte na Další pokračovat:
Poté budete požádáni o konfiguraci účtu, který bude použit ke spuštění agenta Snapshot Agent a agentů Log Reader. Tento uživatel by měl mít alespoň oprávnění db_owner k databázi Publisher, Distributor a Subscriber, kromě oprávnění ke čtení a zápisu do složky snímků. Ke spuštění těchto replikačních agentů SQL Server můžete také použít účet SQL Agent Service, což se z hlediska zabezpečení nedoporučuje. Zadejte autorizovaný účet a klikněte na Další pokračovat:
Na stránce Akce průvodce vyberte akce, které budou provedeny po dokončení tohoto průvodce, což zahrnuje vytvoření publikace a vygenerování souboru skriptu pro pozdější vytvoření publikace nebo použití tohoto skriptu jako šablony pro jiné servery. V této ukázce zvolíme Vytvořit publikaci a poté klikněte na Další pokračovat:
Poslední stránka je Dokončení průvodce, ve které musíte zadat název publikace a zkontrolovat své volby v tomto průvodci a poté kliknout na Dokončit pokračovat ve vytváření publikace:
Jakmile je průvodce vytvořením publikace dokončen, zobrazí se výsledek procesu vytváření publikace a zda byl proces dokončen úspěšně se zelenými kontrolami nebo selhal v určitém kroku se smysluplnou chybovou zprávou. V této ukázce je publikace úspěšně vytvořena bez problémů, jak je uvedeno níže:
Chcete-li ověřit, zda byla publikace úspěšně vytvořena, rozbalte uzel Místní publikace v uzlu SQL Server Replication v Průzkumníku objektů SSMS a zkontrolujte nově vytvořenou publikaci. Na této stránce Vlastnosti publikace můžete také zkontrolovat a upravit nastavení publikace. Publikace bude vypadat takto:
Konfigurace odběratele
Prozatím máme vydavatele a distributora úspěšně nakonfigurován, je čas nakonfigurovat odběratele, který funguje jako cíl dat a přijímat data od odběratele.
Chcete-li nakonfigurovat předplatitele ze stejné instance vydavatele, rozbalte uzel Replikace serveru SQL v Průzkumníku objektů SSMS, klikněte pravým tlačítkem na uzel Místní předplatná a vyberte Nová předplatná … možnost, jak je uvedeno níže:
První okno zobrazené v Průvodci novým předplatným je úvodní stránka, která ukazuje, jak vám tento průvodce pomůže při konfiguraci předplatitele. Klikněte na Další pokračovat:
Prvním krokem při konfiguraci odběratele je výběr vydavatele, pro kterého bude odběratel vytvořen, a databáze publikací, která bude pro daného odběratele fungovat jako zdroj dat. Vyberte publikační databázi z uvedených databází a poté klikněte na Další pokračovat:
Poté budete požádáni, abyste určili, zda chcete spustit všechny agenty na straně distributora a odeslat změny předplatiteli, což zajistí centralizovanou správu pro proces synchronizace replikace, nebo spustit každého agenta u vlastního předplatitele, který provede změny od vydavatele. , snižuje režii zpracování na straně distributora a umožňuje každou synchronizaci předplatitele spravovat samostatně. V této ukázce vybereme předplatné push a klikneme na Další pokračovat:
V dalším okně musíte přidat instanci SQL Serveru předplatitele a cílovou databázi předplatného s možností vytvořit tuto databázi, pokud neexistuje, jak je znázorněno níže:
Na stránce Zabezpečení agenta distribuce zadejte účet, pod kterým bude agent distribuce spuštěn k provádění procesu synchronizace, a účet, který bude použit pro připojení k instancím SQL Server Distributor a Subscriber. Doporučuje se poskytnout účet autorizované domény, který má oprávnění pro distributora i předplatitele, se schopností používat účet služby SQL Agent Service pro připojení k distributorovi a předplatiteli, což se z hlediska zabezpečení nedoporučuje. Po zadání autorizovaného bezpečnostního účtu klikněte na Další pokračovat:
Na další stránce průvodce novým předplatným zadejte plán synchronizace pro každého agenta. Chcete-li, aby synchronizace probíhala nepřetržitě, ponechte výchozí nastavení, poté klikněte na Další pokračovat:
Poté můžete určit, zda se mají předplatná inicializovat pomocí snímku z publikace a kdy provést tento proces inicializace. V této ukázce se rozhodneme inicializovat předplatné při první synchronizaci, jak je znázorněno níže:
V okně Akce průvodce si můžete vybrat, jaké akce se mají provést na konci tohoto průvodce. Tento průvodce vám například poskytuje možnost vytvořit nakonfigurovaná předplatná a vygenerovat soubor skriptu pro vytvoření předplatného později nebo v jiné instanci SQL Server, a to následovně:
Poté vám průvodce poskytne souhrn všech konfigurací, které jste v tomto průvodci vybrali, abyste je mohli ověřit před zahájením konfigurace předplatného. Pokud jsou všechny výběry v pořádku, klikněte na Dokončit pro zahájení procesu konfigurace:
Pokud byla operace vytvoření předplatného úspěšně dokončena, průvodce nás upozorní zeleným zaškrtnutím pro každou dokončenou akci nebo nám v případě jakéhokoli selhání poskytne smysluplnou chybovou zprávu, jak je uvedeno níže:
Chcete-li ověřit, že bylo předplatné úspěšně vytvořeno, v uzlu Replikace v Průzkumníku objektů SSMS rozbalte dříve vytvořenou publikaci a uvidíte všechna předplatná připojená k danému vydavateli a budete z ní přijímat data, jak je uvedeno níže:
Vytvořit úvodní snímek synchronizace
Pokud jste nezvolili vytvoření počátečního snímku synchronizace během vytváření aplikace Publisher, stále můžete snímek vytvořit po konfiguraci komponent replikace.
Chcete-li vytvořit úvodní snímek synchronizace, klikněte pravým tlačítkem na vytvořenou publikaci a vyberte Zobrazit stav agenta snímku volba. V otevřeném okně klikněte na tlačítko Start pro spuštění agenta snímku a vytvoření úvodního snímku synchronizace. Můžete také sledovat průběh procesu vytváření snímku, dokud nebude snímek všech článků úspěšně vytvořen, jak je uvedeno níže:
Sledování synchronizace
Jakmile je vytvořen snímek replikovaných článků, automaticky se spustí proces synchronizace s odběratelem, a to zapsáním všech článků z tohoto snímku odběrateli. Chcete-li sledovat proces synchronizace, klikněte pravým tlačítkem myši na Subscription pod Replikací SQL Server uzel SSMS Object Explorer a zvolte Zobrazit stav synchronizace možnost, kde vám ukáže počet transakcí a příkazů provedených na předplatiteli, jak je uvedeno níže:
Kromě toho můžete sledovat stav všech replikačních agentů a počet příkazů čekajících na straně distributora a nepoužitých na straně předplatitele kliknutím pravým tlačítkem myši na název publikace a výběrem okna Launch Replication Monitor, jak je znázorněno níže:
Abychom ověřili, že replikační web funguje správně, přidejte nový záznam do jednoho z replikovaných článků, tabulky „Zaměstnanec“, na straně vydavatele, který není dostupný na straně předplatitele, poté uvidíte na monitoru replikace že nový záznam je doručen od vydavatele Distributorovi a poté odběrateli. Poté uvidíte, že nový záznam je k dispozici v tabulce Zaměstnanec na straně předplatitele, jak je jasně znázorněno níže:
Jasnými a snadnými kroky jsme vytvořili kompletní web transakční replikace, který je synchronizovaný a funguje dobře. V dalším článku uvidíme, jak řešit problémy s existující replikační lokalitou SQL Server. Zůstaňte naladěni.