sql >> Databasteknik >  >> RDS >> Sqlserver

Konfigurera och konfigurera SQL Server-replikering

SQL Server-replikering är en av datasynkroniseringsfunktionerna som används för att kopiera och distribuera SQL Server-databasobjekt och data mellan databaserna som finns i samma SQL Server-instans eller i olika instanser och synkronisera dem mellan dessa databaser för att hålla dem på ett konsekvent sätt. tillstånd.

SQL-serverreplikeringskomponenter

SQL Server-replikering består av följande huvudkomponenter:

  • Artiklar :Databastabellen, lagrade procedurer eller vyer som anses vara den grundläggande enheten för SQL Server-replikeringen.
  • Distributör :SQL Server-instansen som innehåller Distributionen databas, som lagrar replikeringsmetadata och historik. Tänk på att utgivaren endast kan tilldelas en distributör, men att distributören kan betjäna flera utgivare.
  • Utgivare :SQL Server-instansen som innehåller källdatabasen och gör data tillgänglig för att distribueras till andra platser.
  • Prenumerant :SQL Server-instansen som tar emot SQL-replikeringsdata från utgivaren/utgivarna och tillämpar den på måldatabasen och skickar dataändringarna tillbaka till utgivaren i vissa replikeringstyper.
  • Replication Snapshot Agent :Denna agent är ansvarig för den initiala synkroniseringen i alla replikeringstyper som tillhandahåller en fullständig kopia av Publishers databasartiklar till prenumeranten.
  • Log Reader Agent :Denna agent används för att replikera transaktionerna från utgivaren till abonnenten kontinuerligt i transaktionsreplikeringen, genom att läsa transaktionsloggen för källdatabasen.
  • Distributionsagent :Denna agent används för att tillämpa den första ögonblicksbilden på måldatabasen och spåra och tillämpa de kontinuerliga dataändringarna på måldatabasen. Denna agent används endast med transaktions- och ögonblicksbildreplikeringarna.
  • Slå samman agent :Denna agent är ansvarig för att kopiera ändringarna från prenumeranten till utgivaren och kopiera sedan alla ändringar från utgivaren till prenumeranten på båda sätten. Denna agent används endast med sammanfogningsreplikeringen.

SQL-serverreplikeringstyper

SQL Server ger oss olika typer av replikering som kan användas för datadistribution, baserat på datasynkroniseringskraven. Alla SQL-replikeringstyper startar den initiala synkroniseringen mellan utgivaren och prenumeranten genom att kopiera en ögonblicksbild av hela data från utgivaren till prenumeranten. Dessa SQL Server-replikeringstyper inkluderar:

  • Transaktionsreplikering :I denna replikeringstyp kommer alla ändringar som utförs på utgivarsidan att levereras och tillämpas direkt på prenumerantsidan. Ett exempel på transaktionsreplikering är dataintegrationsscenariot mellan olika platser.
  • Snapshot Replikering :I den här replikeringstypen tas en ögonblicksbild från utgivaren och appliceras på abonnenten en gång, utan att de kontinuerliga ändringarna efter ögonblicksbilden distribueras, tills nästa synkronisering sker, där en ny ögonblicksbild kommer att kopieras och appliceras på abonnenten igen.
  • Slå samman replikering :I den här replikeringstypen kan ändringar utföras och synkroniseras på både utgivar- och abonnentsidan och synkroniseras när abonnenten är ansluten till nätverket. Ett exempel på användningen av sammanslagningsreplikering är utbyte av data mellan användare av kassaapplikationer.
  • Per-to-peer-replikering :En speciell typ av transaktionsreplikering där utgivaren distribuerar dataändringarna till flera prenumeranter samtidigt.
  • Dubbelriktad replikering :En annan speciell typ av transaktionsreplikering där båda servrarna fungerar som utgivare och prenumeranter och utbyter data mellan varandra.

SQL-serverreplikeringskrav

Innan vi ställer in och konfigurerar SQL-replikeringsplatsen måste vi se till att följande punkter är kontrollerade:

  • SQL Server-replikeringskomponenten är installerad på alla deltagande servrar, utgivaren, abonnenten och distributören. Detta bör installeras under installationen av SQL Server-instansen eller läggas till den befintliga SQL-instansen senare, med hjälp av installationsguiden för SQL Server, enligt nedan:
  • Det finns tillräckligt med utrymme på servrarna för att skapa ögonblicksbilder, publicerad databasdata i abonnenten och tillväxten av transaktionsloggen i Publisher-databasen.
  • SQL Server Agent är igång, för att SQL Server-replikeringsagenterna ska kunna skapa relaterade SQL Agent-jobb och att jobben kommer att köras utan problem.
  • Det finns tillräcklig nätverksbandbredd mellan de deltagande SQL Server-instanserna.
  • Förekomsterna av utgivare, distributörer och prenumeranter kan nå varandra, och TCP-portarna som dessa SQL-instanser lyssnar på öppnas i brandväggsreglerna. Med andra ord, vi kan ansluta till varje SQL-instans från de andra instanserna utan några nätverks- eller anslutningsproblem.
  • Utgivarens databasartiklar som kommer att replikeras bör ha en tidigare definierad primärnyckelbegränsning för att bibehålla datas unika karaktär.
  • Kontot som kommer att användas för att skapa replikeringsplatsen och köra replikeringsagenterna bör minst vara medlem i den fasta databasrollen db_owner på både utgivare-, distributörs- och prenumerantdatabaserna, förutom läs- och skrivbehörigheten på ögonblicksbildsmappen.

Komma igång

I den här artikeln kommer vi att visa hur du använder typen Transaktionell replikering för att replikera AdventureWorks2017-databastabellerna mellan två SQL Server-instanser; SQL1 instans som kommer att fungera som distributör och utgivare, och SQL2 instans som kommer att fungera som prenumerant.

SQL Server-transaktionsreplikeringen kommer att konfigureras i tre steg:

  • Konfigurera distributören.
  • Konfigurera utgivaren.
  • Konfigurera prenumeranten

Låt oss diskutera dessa steg i detalj.

Konfigurera distributören

För att konfigurera distributören, anslut till "SQL1 ” SQL Server-instans som kommer att fungera som en Distributör, vilket är samma Publisher-instans i vårt exempel här, bläddra i replikeringsnoden i SSMS Object Explorer, högerklicka på Replication nod och välj Konfigurera distribution … alternativ, som visas nedan:

Det första fönstret som kommer att visas i guiden Konfigurera distribution är startguiden, som kommer att sammanfatta listan över åtgärder som kommer att utföras i den guiden. Klicka på Nästa för att fortsätta:

I nästa fönster kommer du att bli ombedd att välja vilken SQL Server-instans som ska fungera som distributör. Det ger dig möjlighet att välja den aktuella SQL Server-instansen som distributör och skapa distributionssystemdatabasen för den instansen, eller ange en annan SQL Server-instans som ska användas som distributör. I det här scenariot kommer vi att använda den aktuella SQL1-instansen som en distributör. Välj det alternativ som passar din designplan och klicka sedan på Nästa för att fortsätta:

Eftersom SQL Server Agent-tjänsten spelar en viktig roll i SQL Server-replikeringsprocessen, där ett SQL Server-agentjobb skapas för varje replikeringsagent, rekommenderas det att ändra startläget om SQL Server Agent-tjänsten från Manual (som standard) ) för att vara automatisk. Så att den körs automatiskt när SQL Servern startas om, utan att riskera att glömma att starta den manuellt. Den här guiden ger dig möjlighet att ändra startläget för SQL Server Agent Service automatiskt, med hänsyn till att SQL Server-tjänstkontot har administratörsbehörighet på den servern för att utföra den åtgärden. I vårt fall kommer vi att utföra den ändringen manuellt. Klicka på Nästa för att fortsätta:

Efter det kommer guiden att be dig ange mappen där den första ögonblicksbilden för synkroniseringen ska skapas. Ange en mapp på hårddisken som har tillräckligt med utrymme och klicka sedan på Nästa för att fortsätta:

I nästa fönster kommer du att bli ombedd att ange namnet på distributionsdatabasen och platsen där data och loggfiler för databasen ska lagras. Ange ditt anpassade namn och din plats eller behåll standardinställningarna och klicka sedan på Nästa för att fortsätta:

Efter det måste du välja listan över SQL Server-instanser som kommer att fungera som utgivare och lagra dess metadata i den distributionsdatabasen. Om du har en fördefinierad topologi, lägg till alla kandidatutgivare och klicka sedan på Nästa för att fortsätta:

I nästa fönster väljer du de åtgärder som ska utföras av den guiden, om du vill konfigurera distributionen direkt, generera en skriptfil för de nämnda konfigurationsstegen eller båda. I vårt scenario kommer vi att konfigurera distributionen direkt. Klicka på Nästa för att fortsätta:

I fönstret Slutför guiden, granska alla val som du gjort tidigare och se till att inga ändringar ska göras på dessa val, klicka sedan på Slutför för att starta konfigurationsprocessen:

När distributionskonfigurationen har slutförts framgångsrikt kommer guiden att meddela dig med en grön bock bredvid varje åtgärd. Om något problem uppstår kommer ett meningsfullt felmeddelande att visas för att åtgärda det och upprepa konfigurationen igen. Eftersom vi har slutfört alla åtgärder framgångsrikt, Stäng konfigurationsguiden:

Om du expanderar System Databases-noden, i SSMS Object Explorer, kommer du att se att en ny distributionssystemdatabas skapas som kommer att användas för att lagra SQL Server Replication-metadata, som visas nedan:

Konfigurera utgivaren

Efter att ha konfigurerat distributören är nästa steg att konfigurera utgivaren som fungerar som datakälla för de andra webbplatserna.

För att konfigurera utgivaren, anslut till SQL Server-instansen som innehåller databasen som ska publiceras, bläddra i SQL Server-replikeringsnoden under Objektutforskaren och högerklicka sedan på noden Lokala publikationer och välj Ny publikation … alternativ, enligt nedan:

Det första fönstret i guiden Ny publicering är startsidan som visar listan över åtgärder som kommer att utföras under den guiden. Efter att ha läst hur den här guiden hjälper dig att klicka på Nästa för att fortsätta:

På nästa sida kommer du att bli ombedd att välja databasen som kommer att publiceras till prenumeranterna, vilket är AdventureWorks2017-databasen i vår demo här. Klicka på Nästa för att fortsätta:

Efter det kommer du att bli ombedd att välja vilken typ av publikation som du lyckas använda. Vi diskuterade tidigare i den här artikeln listan över SQL Server-replikeringstyper som tillhandahålls i SQL Server. I den här demon kommer vi att använda Transaktionspublikationen typ. Klicka på Nästa för att fortsätta:

På sidan Artiklar kan du välja listan över databasobjekt som du planerar att replikera till prenumeranterna. Du kan välja att välja alla tillgängliga objekt under varje typ eller expandera objektets typ och välja listan med objekt som ska replikeras. I den här demon kommer vi att replikera alla databastabeller till prenumeranterna. När du har granskat objektets urval klickar du på Nästa för att fortsätta:

SQL Server låter dig också lägga till filter för de valda databasobjekten och replikera endast de data som uppfyller kriterierna för tillagda filter. Om du planerar att replikera hela tabellraderna, hoppa över den här sidan genom att klicka på Nästa knapp:

På sidan Snapshot Agent anger du om du planerar att skapa den initiala synkroniseringsögonblicksbilden omedelbart, schemalägga den för att köras senare eller köra den manuellt när du slutför replikeringsinställningen. I den här demon kommer jag att skapa en ögonblicksbild efter att ha slutfört SQL Server-replikeringen. Klicka på Nästa för att fortsätta:

Efter det kommer du att bli ombedd att konfigurera kontot som ska användas för att köra Snapshot Agent och Log Reader Agents. Den här användaren bör ha minst db_owner-behörighet i databasen Publisher, Distributor och Subscriber, förutom läs- och skrivbehörigheter i ögonblicksbildmappen. Du kan också använda SQL Agent Service-kontot för att köra dessa SQL Server-replikeringsagenter, vilket inte rekommenderas från säkerhetssynpunkt. Ange det auktoriserade kontot och klicka på Nästa för att fortsätta:

På sidan Wizard Actions väljer du de åtgärder som ska utföras efter att du har slutfört den här guiden, vilket inkluderar att skapa publikationer och generera en skriptfil för att skapa publikationen senare eller använda det här skriptet som en mall för andra servrar. I den här demon kommer vi att välja att Skapa publikationen och klicka sedan på Nästa för att fortsätta:

Den sista sidan är Complete the Wizard, där du måste ange namnet på publikationen och granska dina val i den här guiden, klicka sedan på Slutför för att fortsätta med skapandet av publikationen:

När guiden för att skapa publicering är klar kommer den att visa resultatet av processen för att skapa publicering och om processen slutfördes framgångsrikt med gröna bockar eller misslyckades i ett specifikt steg med ett meningsfullt felmeddelande. I denna demo skapas publikationen utan problem, som visas nedan:

För att verifiera om publikationen har skapats framgångsrikt, expandera noden Lokala publikationer under SQL Server-replikeringsnoden i SSMS Object Explorer och kontrollera den nyskapade publikationen. Du kan också granska och ändra publikationsinställningarna från sidan med publikationsegenskaper. Publikationen kommer att se ut så här:

Konfigurera prenumeranten

För nu har vi konfigurerat utgivaren och distributören framgångsrikt, det är dags att konfigurera prenumeranten, som fungerar som datamål och tar emot data från prenumeranten.

För att konfigurera prenumeranten, från samma utgivarinstans, expandera SQL Server-replikeringsnoden under SSMS-objektutforskaren, högerklicka på noden Lokala prenumerationer och välj Nya prenumerationer … alternativ, som visas nedan:

Det första fönstret som visas i guiden Ny prenumeration är startsidan, som visar hur den här guiden hjälper dig att konfigurera prenumerationen. Klicka på Nästa för att fortsätta:

Det första steget i att konfigurera prenumeranten är att välja utgivaren som prenumeranten ska skapas för och publikationsdatabasen som kommer att fungera som datakälla för den prenumeranten. Välj publikationsdatabasen från de listade databaserna och klicka sedan på Nästa för att fortsätta:

Efter det kommer du att bli ombedd att ange om du ska köra alla agenter på distributörssidan och skicka ändringarna till prenumeranten, vilket ger centraliserad administration för replikeringssynkroniseringsprocessen eller köra varje agent på sin egen prenumerant som kommer att hämta ändringarna från utgivaren , vilket minskar bearbetningsoverheaden på distributörssidan och tillåter att varje abonnentsynkronisering administreras separat. I den här demon väljer vi push-prenumeration och klickar på Nästa för att fortsätta:

I nästa fönster måste du lägga till Subscriber SQL Server-instansen och Subscription-måldatabasen, med möjligheten att skapa den databasen om den inte finns, som visas nedan:

På sidan för distributionsagentsäkerhet anger du kontot under vilket distributionsagenten ska köras för att utföra synkroniseringsprocessen och kontot som ska användas för att ansluta till både Distributör- och Subscriber SQL Server-instanserna. Det rekommenderas att tillhandahålla ett auktoriserat domänkonto som har behörighet för både distributören och abonnenten, med möjligheten att använda SQL Agent Service-kontot för att ansluta till distributören och abonnenten, vilket inte rekommenderas av säkerhetsmässigt håll. Klicka på Nästa efter att ha angett det auktoriserade säkerhetskontot för att fortsätta:

På nästa sida i guiden Ny prenumeration anger du synkroniseringsschemat för varje agent. Behåll standardinställningen om du vill att synkroniseringen ska köras kontinuerligt och klicka sedan på Nästa för att fortsätta:

Efter det kan du ange om du vill initiera prenumerationerna med en ögonblicksbild från publikationen och när den initialiseringsprocessen ska utföras. I denna demo väljer vi att initiera prenumerationen vid den första synkroniseringen, som visas nedan:

I fönstret Wizard Actions kan du välja vilka åtgärder som ska utföras i slutet av denna guide. Till exempel ger den här guiden dig möjligheten att skapa den eller de konfigurerade prenumerationerna och generera en skriptfil för att skapa prenumerationerna senare eller i en annan SQL Server-instans, enligt följande:

Efter det kommer guiden att ge dig en sammanfattning av alla konfigurationer som du har valt i den guiden för att verifiera den innan du startar prenumerationskonfigurationen. Om alla val är bra klickar du på Slutför för att starta konfigurationsprocessen:

Om prenumerationsskapandet slutfördes framgångsrikt kommer guiden att meddela oss med en grön bock för varje genomförd åtgärd eller ge oss ett meningsfullt felmeddelande i händelse av något misslyckande, som visas nedan:

För att verifiera att prenumerationen har skapats framgångsrikt, expandera den tidigare skapade publikationen under replikeringsnoden i SSMS Object Explorer och du kommer att se alla prenumerationer som är anslutna till den utgivaren och ta emot data från den, som visas nedan:

Skapa en första ögonblicksbild av synkronisering

Om du inte valde att skapa en första ögonblicksbild av synkroniseringen när utgivaren skapade, kan du fortfarande skapa ögonblicksbilden efter att ha konfigurerat replikeringskomponenterna.

För att skapa en första ögonblicksbild för synkronisering, högerklicka på den skapade publikationen och välj Visa status för ögonblicksbildagent alternativ. Från det öppnade fönstret klickar du på Start-knappen för att köra ögonblicksbildsagenten och skapa den första ögonblicksbilden för synkronisering. Du kan också övervaka framstegen i processen för att skapa ögonblicksbilder tills ögonblicksbilden av alla artiklar har skapats framgångsrikt, enligt nedan:

Övervaka synkroniseringen

När ögonblicksbilden av de replikerade artiklarna har skapats, kommer synkroniseringsprocessen med prenumeranten att starta automatiskt, genom att skriva alla artiklar från den ögonblicksbilden till prenumeranten. För att övervaka synkroniseringsprocessen, högerklicka på prenumerationen under SQL Server replikering noden i SSMS-objektutforskaren och välj Visa synkroniseringsstatus alternativet, där det kommer att visa dig antalet transaktioner och kommandon som utförs på abonnenten, som visas nedan:

Dessutom kan du övervaka statusen för alla replikeringsagenter och antalet väntande kommandon på distributörssidan och som inte tillämpas på prenumerantsidan, genom att högerklicka på publikationens namn och välja fönstret Starta replikeringsövervakning, som visas nedan:

För att verifiera att replikeringsplatsen fungerar bra, låt oss lägga till en ny post i en av de replikerade artiklarna, tabellen "Anställd", på utgivarsidan, som inte är tillgänglig på prenumerantsidan, då ser du från replikeringsmonitorn fönster att en ny post levereras från utgivaren till distributören och sedan till abonnenten. Efter det kommer du att se att den nya posten är tillgänglig i tabellen Anställd på prenumerantsidan, som tydligt visas nedan:

Med tydliga och enkla steg byggde vi en komplett transaktionsreplikeringswebbplats som är synkroniserad och fungerar bra. I nästa artikel kommer vi att se hur du felsöker en befintlig SQL Server-replikeringsplats. Håll utkik.


  1. En översikt över betrodda tillägg i PostgreSQL 13

  2. Hur kan jag lägga till nya kolumner i en SQLite-databas efter att Android-appen har släppts?

  3. Hur får jag information om en index- och tabellägare i Oracle?

  4. SQL-fråga för att jämföra produktförsäljning per månad