sql >> Database >  >> RDS >> Database

Transactiereplicatie maken

In dit artikel ga ik demonstreren hoe u transactionele replicatie kunt maken.

Transactiereplicatie genereerde een momentopname van publicatie-DB-objecten en gegevens daarin. Nadat de momentopname is gegenereerd, worden alle gegevenswijzigingen en schemawijzigingen in de uitgeversdatabase geleverd aan abonneedatabases. Bij transactionele replicatie zijn gegevens en schemawijzigingen bijna realtime, daarom kan transactionele replicatie worden gebruikt om rapporten te offloaden en soms kan het worden gebruikt als DR-site.

Wanneer we transactionele replicatie maken, maakt SQL Server de volgende SQL-taken

  1. Momentopname agent-taak: Snapshot Agent Job genereert een momentopname van publicatiedatabase-objecten. De momentopname wordt opgeslagen op de netwerklocatie of op de harde
  2. Logboeklezer-taak: Log Reader Job houdt continu toezicht op publicaties. Het detecteert schemawijzigingen en Insert, Update en Delete-query's en markeert ze voor replicatie. De loglezer gebruikt "Sp_Replcmds ” om de opdrachten toe te passen die zijn gemarkeerd voor replicatie.

Demo instellen:

Voor deze demo heb ik twee SQL Server-instanties op dezelfde databaseserver gemaakt. De instantienamen en details zijn de volgende:

Bij het opzetten van de demo heb ik geen distributeur gemaakt, dus de uitgeversinstantie zal ook als distributeur optreden. Ik heb de "Klant . gemaakt ”-tabel in de AdventureWorks2014-database. Ik ga de gegevens van de tabel Klant repliceren. Daarom wordt het door de uitgever een artikel genoemd.

Uitgever configureren

Om de uitgever te configureren, opent u SQL Server Management Studio, vouwt u het database-exemplaar uit, vouwt u Replicatie uit knooppunt en klik met de rechtermuisknop op Lokale publicatie en selecteer Nieuwe publicatie .

De wizard Nieuwe publicatie wordt gestart. In het dialoogvenster wordt een korte samenvatting van de wizard gegeven. U kunt de verdere weergave van dit dialoogvenster overslaan door Deze startpagina niet meer weergeven . aan te vinken selectievakje. Klik op Volgende om naar het volgende dialoogvenster te gaan.

Selecteer in het volgende dialoogvenster de database die als uitgever fungeert. In deze demo gebruik ik de AdventureWorks2014 database, dus selecteer AdventureWorks2014 uit de databaselijst en klik op Volgende .

Selecteer in het volgende dialoogvenster het publicatietype uit de lijst met publicatietypes, en hun beschrijvingen worden ook gegeven in de Beschrijvingen van publicatietypes tekstvak. Selecteer Transactionele publicatie en klik op Volgende .

Selecteer in het volgende dialoogvenster het publicatietype uit de lijst met publicatietypes, en hun beschrijvingen worden ook gegeven in de Beschrijvingen van publicatietypes tekstvak. Selecteer Transactionele publicatie en klik op Volgende .

Als u de gegevens van de tabel wilt filteren, kunt u de voorwaarde opgeven in het dialoogvenster Tabelrijen filteren. Om het filter toe te voegen, klikt u op de knop Toevoegen knop. Een ander dialoogvenster Filter toevoegen opent. In dit dialoogvenster kunt u de gewenste filterinstructie specificeren in de Filterinstructie tekstvak.

Voor deze demo filteren we geen gegevens van de Klant tabel, dus sla dit dialoogvenster over en klik op Volgende .

Om transactionele replicatie te initialiseren, moeten we de momentopname genereren. Configureer in het dialoogvenster Snapshot Agent het interval voor het genereren van snapshots. U kunt de momentopname onmiddellijk genereren of u kunt de specifieke tijd plannen om de momentopname van de database te genereren. Standaard wordt de momentopname elk uur gegenereerd, maar we kunnen deze wijzigen. Om de momentopname in een specifiek interval te genereren, klikt u op Wijzigen. Het dialoogvenster Nieuw taakschema wordt geopend. Configureer het gewenste schema en klik op OK .

In deze demo genereer ik de momentopname onmiddellijk, dus controleer de Een momentopname maken en de momentopname beschikbaar houden om het abonnement te initialiseren optie en klik op Volgende .

Configureer in het volgende dialoogvenster de SQL Agent-beveiliging. Om de Agent-beveiliging te configureren, klikt u op de Beveiligingsinstellingen knop. De Snapshot Agent-beveiliging ” dialoogvenster wordt geopend. Geef in het dialoogvenster het account op waaronder de abonnee verbinding maakt met de uitgever. Geef bovendien de accountgegevens op waaronder de SQL Server-agenttaak wordt uitgevoerd. Voor deze demo worden SQL Server-taken uitgevoerd onder het SQL Server Agent-serviceaccount, dus selecteer Uitvoeren onder het SQL Server Agent-serviceaccount optie. Abonnees worden verbonden met de uitgever met behulp van de SQL-login, dus selecteer Gebruik de volgende SQL Server-login optie en geef de SQL-aanmelding en het wachtwoord op. Maak in deze demo verbinding met de "sa " Log in. Klik op OK om het dialoogvenster te sluiten en klik op Volgende .

In het volgende dialoogvenster kunt u ervoor kiezen om een ​​publicatie te maken of scripts te genereren om de publicatie te maken. Selecteer Genereer een scriptbestand om de publicatie te maken optie om de scripts van replicatiestappen te genereren. We zullen de publicatie maken, dus selecteer Maak de publicatie optie en klik op Volgende .

Geef in het volgende dialoogvenster de naam van de publicatie op, bekijk de samenvatting van de taken die moeten worden uitgevoerd om replicatie te maken en klik op Voltooien om de publicatie te maken en Nieuwe publicatie te sluiten Tovenaar .

Zoals ik aan het begin van het artikel al zei, wordt bij het maken van een transactiereplicatie de taak Log reader agent, de taak snapshot agent en de opschoningstaak voor verlopen abonnementen gemaakt.

Vouw SQL Server Agent uit om ze te bekijken en vouw vervolgens Vacatures uit .

Nadat de publicatie is geconfigureerd, configureert u de abonnees.

Configureer de abonnee

Maak eerst verbinding met een ander SQL-exemplaar om de abonnee te configureren. Nadat u verbinding heeft gemaakt met de instantie, vouwt u Replicatie uit en klik met de rechtermuisknop op Lokaal abonnement .

De Wizard Nieuw abonnement opent. In het dialoogvenster wordt een korte samenvatting van de wizard gegeven. U kunt de weergave van dit scherm overslaan door Deze startpagina niet meer weergeven . aan te vinken selectievakje. Klik op Volgende om naar het volgende dialoogvenster te gaan.

Kies in het volgende dialoogvenster de publicatieserver. Klik op de Uitgever vervolgkeuzelijst en klik op Vind SQL Server Publisher . Er wordt een dialoogvenster geopend om verbinding te maken met de uitgever. In de Servernaam tekstvak, geef de hostnaam van de uitgeversserver op en klik op Verbinden .

Zodra de verbinding met de uitgever tot stand is gebracht, Customer_Publication en AdventureWorks2014 wordt getoond in de Databases en publicatie tekstvak. Selecteer Klant_Publicatie en klik op Volgende .

Kies in het volgende dialoogvenster de locatie van de distributieagent. Voor deze demo gebruik ik Pull Subscription , dus selecteer de optie Elke agent uitvoeren op zijn abonnee optie en klik op Volgende :

Selecteer in het volgende dialoogvenster een abonnementsdatabase. Ik heb een database gemaakt met de naam Customer_DB , die fungeert als een abonneedatabase. In de Abonnementsdatabase vervolgkeuzelijst, selecteer de Klant_DB database uit de lijst. Klik na het selecteren van de abonnementsdatabase op Volgende .

Configureer in het volgende dialoogvenster de beveiliging van de distributieagent. Om de beveiliging te configureren, klikt u op de knop […]. De Beveiliging van distributieagenten dialoogvenster wordt geopend. Geef in de eerste sectie het domeinaccount op waaronder het distributieagentproces wordt uitgevoerd. De Distribution Agent wordt uitgevoerd onder de SQL Server Agent-service, dus selecteer Uitvoeren onder de SQL Server Agent-serviceaccount optie.

Hier heb ik de distributieserver niet geconfigureerd, dus de uitgever fungeert als distributeur. De abonnee maakt verbinding met Publisher/Distributor met behulp van een SQL-login. Gebruik de “sa” . om de distributeur te verbinden login en wachtwoord.

Klik op OK om het dialoogvenster te sluiten. Klik in het dialoogvenster Beveiliging distributieagent op Volgende .

Configureer in het volgende dialoogvenster het synchronisatieschema voor abonnementen. U kunt ervoor kiezen om continu te draaien of de geplande uitvoering te configureren. Selecteer Continu uitvoeren in het Agentenschema vervolgkeuzelijst. Klik op Volgende .

Kies in het volgende dialoogvenster of u het abonnement onmiddellijk wilt initialiseren met de momentopname van publicatiegegevens en schema of na de eerste synchronisatie. We zullen het abonnement onmiddellijk initialiseren, dus kies Onmiddellijk van de Initialiseren wanneer vervolgkeuzelijst. Klik op Volgende .

In het volgende dialoogvenster kunt u ervoor kiezen om direct een abonnement aan te maken of de scripts te genereren om een ​​abonnement aan te maken. Selecteer Genereer een scriptbestand om het abonnement te maken optie om de scripts van replicatiestappen te genereren. We zullen een publicatie maken, dus selecteer Maak het abonnement aan optie en klik op Volgende .

In het volgende dialoogvenster wordt een lijst met taken weergegeven die zijn uitgevoerd om het abonnement te maken. U kunt ze bekijken en klikken op Voltooien .

Zodra het abonnement is aangemaakt, kun je het abonnement zien onder het Lokaal abonnement knooppunt.

Replicatiestatus bekijken

U kunt Replication Monitor gebruiken om de replicatiestatus te bekijken. Vouw Replicatie . uit om Replicatiemonitor te openen en vouw vervolgens Lokale publicaties uit. Klik met de rechtermuisknop op Customer_Publication en selecteer Replicatiemonitor starten.

Samenvatting:

In dit artikel heb ik uitgelegd:

  1. Een samenvatting op hoog niveau van transactiereplicatie.
  2. Demo instellen.
  3. Replicatiepublicatie configureren.
  4. Replicatie-abonnees configureren.

Handige hulpmiddelen:

dbForge Data Compare voor SQL Server – krachtige SQL-vergelijkingstool die met big data kan werken.

dbForge Schema Compare voor SQL Server – betrouwbare tool die u tijd en moeite bespaart bij het vergelijken en synchroniseren van databases op SQL Server.


  1. Wat is LEN() in SQL Server?

  2. MySQL versus PDO

  3. sqlalchemy.exc.NoSuchModuleError:Kan plug-in niet laden:sqlalchemy.dialects:postgres

  4. JSON_EXTRACT() – Gegevens retourneren uit een JSON-document in MySQL