SQL Server-replikering er en af datasynkroniseringsfunktionerne, der bruges til at kopiere og distribuere SQL Server-databaseobjekter og -data mellem databaserne, der er placeret i den samme SQL Server-instans eller i forskellige instanser og synkronisere dem mellem disse databaser for at holde dem i en konsistent tilstand.
SQL-serverreplikeringskomponenter
SQL Server-replikering består af nedenstående hovedkomponenter:
- Artikler :Databasetabellen, lagrede procedurer eller visninger, der betragtes som den grundlæggende enhed i SQL Server-replikeringen.
- Distributør :SQL Server-forekomsten, der indeholder Distributionen database, som gemmer replikeringsmetadata og historik. Tag i betragtning, at udgiveren kun kan tildeles én distributør, men distributøren kan betjene flere udgivere.
- Udgiver :SQL Server-instansen, der indeholder kildedatabasen og gør dataene tilgængelige for at blive distribueret til de andre lokationer.
- Abonnent :SQL Server-forekomsten, der modtager SQL-replikeringsdata fra udgiverne og anvender dem på måldatabasen og sender dataændringerne tilbage til udgiveren i nogle replikeringstyper.
- Replication Snapshot Agent :Denne agent er ansvarlig for den indledende synkronisering i alle replikeringstyper, der leverer en komplet kopi af Publisher-databaseartiklerne til abonnenten.
- Loglæseragent :Denne agent bruges til løbende at replikere transaktionerne fra udgiveren til abonnenten i den transaktionelle replikering ved at læse transaktionsloggen for kildedatabasen.
- Distributionsagent :Denne agent bruges til at anvende det indledende øjebliksbillede på måldatabasen og spore og anvende de løbende dataændringer på måldatabasen. Denne agent bruges kun med Transaktionelle og Snapshot-replikeringer.
- Flet agent :Denne agent er ansvarlig for at kopiere ændringerne fra abonnenten til udgiveren og derefter kopiere alle ændringer fra udgiveren til abonnenten på begge måder. Denne agent bruges kun sammen med fletreplikeringen.
SQL-serverreplikeringstyper
SQL Server giver os forskellige typer replikering, der kan bruges til datadistribution, baseret på datasynkroniseringskravene. Alle SQL-replikeringstyper starter den indledende synkronisering mellem udgiveren og abonnenten ved at kopiere et øjebliksbillede af hele data fra udgiveren til abonnenten. Disse SQL Server-replikeringstyper omfatter:
- Transaktionsreplikering :I denne replikeringstype vil alle ændringer, der udføres på udgiversiden, blive leveret og anvendt direkte på abonnentsiden. Et eksempel på transaktionsreplikering er dataintegrationsscenariet mellem forskellige websteder.
- Snapshot-replikering :I denne replikeringstype tages et snapshot fra udgiveren og påføres abonnenten én gang uden at distribuere de kontinuerlige ændringer efter snapshottet, indtil næste synkronisering sker, hvor et nyt snapshot kopieres og anvendes på abonnenten igen.
- Flet replikering :I denne replikeringstype kan ændringer udføres og synkroniseres på både udgiver- og abonnentsiden og synkroniseres, når abonnenten er tilsluttet netværket. Et eksempel på brugen af Merge Replication er udveksling af data mellem Point of Sale-applikationsbrugere.
- Peer to Peer-replikering :En særlig type transaktionsreplikering, hvor udgiveren distribuerer dataændringerne til flere abonnenter på samme tid.
- Tovejsreplikering :En anden speciel type transaktionsreplikering, hvor begge servere fungerer som udgiver og abonnent og udveksler data mellem hinanden.
SQL-serverreplikeringskrav
Før vi opsætter og konfigurerer SQL-replikeringsstedet, skal vi sikre os, at følgende punkter er kontrolleret:
- SQL Server-replikeringskomponenten er installeret på alle deltagende servere, udgiveren, abonnenten og distributøren. Dette skal installeres under installationen af SQL Server-instansen eller tilføjes til den eksisterende SQL-instans senere ved hjælp af SQL Server-installationsguiden som nedenfor:
- Der er nok plads på serverne til oprettelse af snapshot, de offentliggjorte databasedata i abonnenten og væksten i transaktionslogfilen i Publisher-databasen.
- SQL Server-agenten er oppe og køre for at være i stand til, at SQL-server-replikeringsagenterne vil være i stand til at oprette de relaterede SQL Agent-job, og at opgaverne kører uden problemer.
- Der er tilstrækkelig netværksbåndbredde mellem de deltagende SQL Server-instanser.
- Udgiver-, distributør- og abonnentforekomsterne kan nå hinanden, og de TCP-porte, som disse SQL-forekomster lytter til, åbnes i firewallreglerne. Med andre ord er vi i stand til at oprette forbindelse til hver SQL-instans fra de andre instanser uden netværks- eller forbindelsesproblemer.
- De udgiverdatabaseartikler, der vil blive replikeret, skal have en tidligere defineret primærnøglebegrænsning for at bevare dataenes unikke karakter.
- Den konto, der vil blive brugt til at oprette replikeringsstedet og køre replikeringsagenterne, skal mindst være medlem af den faste databaserolle db_owner på både udgiver-, distributør- og abonnentdatabaserne, ud over læse- og skrivetilladelsen på snapshot-mappen.
Kom godt i gang
I denne artikel vil vi vise, hvordan du bruger Transactional Replication-typen til at replikere AdventureWorks2017-databasetabellerne mellem to SQL Server-instanser; SQL1 instans, der vil fungere som distributør og udgiver, og SQL2 forekomst, der vil fungere som abonnent.
SQL Server Transactional Replikering vil blive konfigureret i tre trin:
- Konfigurer distributøren.
- Konfigurer udgiveren.
- Konfigurer abonnenten
Lad os diskutere disse trin i detaljer.
Konfigurer distributøren
For at konfigurere distributøren skal du oprette forbindelse til "SQL1 ” SQL Server-instans, der vil fungere som en distributør, som er den samme Publisher-instans i vores eksempel her, gennemse replikeringsnoden i SSMS Object Explorer, højreklik på replikering node og vælg Konfigurer distribution … mulighed, som vist nedenfor:
Det første vindue, der vil blive vist i guiden Konfigurer distribution, er startguiden, som vil opsummere listen over handlinger, der vil blive udført i denne guide. Klik på Næste for at fortsætte:
I det næste vindue bliver du bedt om at vælge, hvilken SQL Server-instans der skal fungere som distributør. Det giver dig mulighed for at vælge den aktuelle SQL Server-instans som distributør og oprette distributionssystemdatabasen på den instans eller angive en anden SQL Server-instans, der skal bruges som distributør. I dette scenarie vil vi bruge den aktuelle SQL1-instans som en distributør. Vælg den mulighed, der opfylder din designplan, og klik derefter på Næste for at fortsætte:
Da SQL Server Agent-tjenesten spiller en afgørende rolle i SQL Server-replikeringsprocessen, hvor der oprettes et SQL Server-agentjob for hver replikeringsagent, anbefales det at ændre opstartstilstanden, hvis SQL Server Agent-tjenesten fra Manual (som standard) ) for at være automatisk. Så den kører automatisk når SQL Serveren genstartes, uden at man risikerer at glemme at starte den manuelt. Denne guide giver dig mulighed for automatisk at ændre SQL Server Agent Service-starttilstanden, idet der tages hensyn til, at SQL Server-tjenestekontoen har administratorrettigheder på den server til at udføre denne handling. I vores tilfælde udfører vi denne ændring manuelt. Klik på Næste for at fortsætte:
Derefter vil guiden bede dig om at angive den mappe, hvor det indledende synkroniseringssnapshot vil blive oprettet. Angiv en mappe på diskdrevet, der har nok plads, og klik derefter på Næste for at fortsætte:
I det næste vindue vil du blive bedt om at angive navnet på distributionsdatabasen og det sted, hvor dataene og logfilerne for den database skal gemmes. Angiv dit tilpassede navn og din placering, eller behold standardindstillingerne, og klik derefter på Næste for at fortsætte:
Derefter skal du vælge listen over SQL Server-instanser, der fungerer som udgivere, og gemme dens metadata i den distributionsdatabase. Hvis du har en foruddefineret topologi, skal du tilføje alle kandidatudgivere og derefter klikke på Næste for at fortsætte:
I det næste vindue skal du vælge de handlinger, der vil blive udført af denne guide, om du vil konfigurere distributionen direkte, generere en scriptfil til de nævnte konfigurationstrin eller begge dele. I vores scenarie konfigurerer vi distributionen direkte. Klik på Næste for at fortsætte:
I vinduet Fuldfør guiden skal du gennemgå alle de valg, du tidligere har foretaget, og sikre dig, at der ikke skal udføres nogen ændringer på disse valg, og klik derefter på Udfør for at starte konfigurationsprocessen:
Når distributionskonfigurationsprocessen er fuldført, giver guiden dig besked med et grønt flueben ud for hver handling. Hvis der opstår et problem, vil en meningsfuld fejlmeddelelse blive vist for at løse det og gentage konfigurationen igen. Da vi har fuldført alle handlinger med succes, Luk konfigurationsguiden:
Hvis du udvider System Databases noden i SSMS Object Explorer, vil du se, at der oprettes en ny distributionssystemdatabase, som vil blive brugt til at gemme SQL Server Replication metadata, som vist nedenfor:
Konfigurer udgiveren
Efter konfiguration af distributøren er næste trin at konfigurere den udgiver, der fungerer som datakilde for de andre websteder.
For at konfigurere Publisheren skal du oprette forbindelse til SQL Server-instansen, der indeholder databasen, der skal publiceres, gennemse SQL Server-replikeringsnoden under Object Explorer og derefter højreklikke på noden Local Publications og vælge Ny publikation … mulighed som nedenfor:
Det første vindue i guiden Ny udgivelse er startsiden, som viser listen over handlinger, der vil blive udført under denne guide. Efter at have læst, hvordan denne guide vil hjælpe dig med at klikke på Næste for at fortsætte:
På næste side vil du blive bedt om at vælge den database, der vil blive offentliggjort til abonnenterne, som er AdventureWorks2017-databasen i vores demo her. Klik på Næste for at fortsætte:
Derefter vil du blive bedt om at vælge den type publikation, du formår at bruge. Vi diskuterede tidligere i denne artikel listen over SQL Server-replikeringstyper, der findes i SQL Server. I denne demo vil vi bruge Transaktionspublikationen type. Klik på Næste for at fortsætte:
På siden Artikler kan du vælge listen over databaseobjekter, som du planlægger at replikere til abonnenterne. Du kan vælge at vælge alle tilgængelige objekter under hver type eller udvide objektets type og vælge listen over objekter, der skal replikeres. I denne demo vil vi replikere alle databasetabellerne til abonnenterne. Når du har gennemgået objektets valg, skal du klikke på Næste for at fortsætte:
SQL Server giver dig også mulighed for at tilføje filtre til de valgte databaseobjekter og kun replikere de data, der opfylder kriterierne for tilføjede filtre. Hvis du planlægger at replikere hele tabelrækkerne, skal du springe denne side over ved at klikke på Næste knap:
På siden Snapshot Agent skal du angive, om du planlægger at oprette det indledende synkroniseringssnapshot med det samme, planlægge det til at blive kørt senere eller køre det manuelt, når du fuldfører replikeringsopsætningen. I denne demo vil jeg oprette et øjebliksbillede efter at have fuldført SQL Server-replikeringsopsætningen. Klik på Næste for at fortsætte:
Derefter bliver du bedt om at konfigurere den konto, der skal bruges til at køre Snapshot Agent og Log Reader Agents. Denne bruger skal mindst have db_owner-tilladelse til udgiver-, distributør- og abonnentdatabasen ud over læse- og skrivetilladelser på snapshotmappen. Du kan også bruge SQL Agent Service-kontoen til at køre disse SQL Server-replikeringsagenter, hvilket ikke anbefales af sikkerhedsmæssige årsager. Angiv den autoriserede konto, og klik på Næste for at fortsætte:
På siden Guidehandlinger skal du vælge de handlinger, der skal udføres efter at have fuldført denne guide, som omfatter oprettelse af publikation og generering af en scriptfil for at oprette publikationen senere eller bruge dette script som en skabelon for andre servere. I denne demo vælger vi at Opret publikationen , og klik derefter på Næste for at fortsætte:
Den sidste side er Fuldfør guiden, hvor du skal angive navnet på publikationen og gennemgå dine valg i denne guide, og derefter klikke på Udfør for at fortsætte med oprettelsen af publikationen:
Når guiden til oprettelse af publikationer er fuldført, vil den vise resultatet af udgivelsesoprettelsesprocessen, og om processen er fuldført med grønne markeringer eller mislykkedes på et bestemt trin med en meningsfuld fejlmeddelelse. I denne demo oprettes publikationen uden problemer, som vist nedenfor:
For at kontrollere, om publikationen er oprettet korrekt, skal du udvide noden Local Publications under SQL Server-replikeringsnoden i SSMS Object Explorer og kontrollere den nyoprettede publikation. Du kan også gennemgå og ændre udgivelsesindstillingerne fra siden med egenskaber for publikation. Publikationen vil se sådan ud:
Konfigurer abonnenten
For nu har vi konfigureret udgiveren og distributøren. Det er tid til at konfigurere abonnenten, som fungerer som datamål og modtager data fra abonnenten.
For at konfigurere abonnenten fra den samme Publisher-instans skal du udvide SQL Server-replikeringsnoden under SSMS Object Explorer, højreklikke på noden Local Subscriptions og vælge Nye abonnementer … mulighed, som vist nedenfor:
Det første vindue, der vises i guiden Nyt abonnement, er startsiden, som viser, hvordan denne guide vil hjælpe dig med at konfigurere abonnenten. Klik på Næste for at fortsætte:
Det første trin i konfigurationen af abonnenten er at vælge den udgiver, som abonnenten vil blive oprettet for, og publikationsdatabasen, der vil fungere som datakilde for den pågældende abonnent. Vælg publikationsdatabasen fra de angivne databaser, og klik derefter på Næste for at fortsætte:
Derefter vil du blive bedt om at angive, om du vil køre alle agenter på distributørsiden og skubbe ændringerne til abonnenten, hvilket giver centraliseret administration for replikeringssynkroniseringsprocessen eller køre hver agent på sin egen abonnent, der vil trække ændringerne fra udgiveren , hvilket reducerer behandlingsomkostningerne på distributørsiden og gør det muligt at administrere hver abonnentsynkronisering separat. I denne demo vælger vi push-abonnement og klikker på Næste for at fortsætte:
I det næste vindue skal du tilføje Subscriber SQL Server-forekomsten og Subscription-måldatabasen med mulighed for at oprette denne database, hvis den ikke findes, som vist nedenfor:
På siden Distribution Agent Security skal du angive den konto, som distributionsagenten skal køre under for at udføre synkroniseringsprocessen, og den konto, der skal bruges til at oprette forbindelse til både Distributor- og Subscriber SQL Server-forekomsterne. Det anbefales at give en autoriseret domænekonto, der har tilladelse på både distributøren og abonnenten, med mulighed for at bruge SQL Agent Service-kontoen til at oprette forbindelse til distributøren og abonnenten, hvilket ikke anbefales af sikkerhedsmæssigt synspunkt. Klik på Næste, når du har angivet den autoriserede sikkerhedskonto for at fortsætte:
Angiv synkroniseringsplanen for hver agent på den næste side i guiden Nyt abonnement. Behold standardindstillingen, hvis du vil have synkroniseringen til at køre kontinuerligt, og klik derefter på Næste for at fortsætte:
Derefter kan du angive, om abonnementerne skal initialiseres med et øjebliksbillede fra publikationen, og hvornår den initialiseringsproces skal udføres. I denne demo vælger vi at initialisere abonnementet ved den første synkronisering, som vist nedenfor:
I vinduet Wizard Actions kan du vælge, hvilke handlinger der skal udføres i slutningen af denne guide. For eksempel giver denne guide dig mulighed for at oprette det eller de konfigurerede abonnementer og generere en scriptfil for at oprette abonnementerne senere eller i en anden SQL Server-instans, som følger:
Derefter vil guiden give dig en oversigt over alle konfigurationer, som du har valgt i denne guide for at verificere det, før du starter abonnementskonfigurationen. Hvis alle valg er i orden, skal du klikke på Udfør for at starte konfigurationsprocessen:
Hvis oprettelsen af abonnementet er gennemført med succes, vil guiden underrette os med et grønt flueben for hver fuldført handling eller give os en meningsfuld fejlmeddelelse i tilfælde af fejl, som vist nedenfor:
For at bekræfte, at abonnementet er oprettet korrekt, skal du under replikeringsnoden i SSMS Object Explorer udvide den tidligere oprettede publikation, og du vil se alle abonnementer, der er forbundet til den pågældende udgiver og modtage data fra den, som vist nedenfor:
Opret indledende synkroniseringssnapshot
Hvis du ikke valgte at oprette et indledende synkroniseringssnapshot under udgiveroprettelsen, kan du stadig oprette snapshottet efter konfiguration af replikeringskomponenterne.
For at oprette et indledende synkroniseringssnapshot skal du højreklikke på den oprettede publikation og vælge Se Snapshot Agent Status mulighed. Fra det åbnede vindue skal du klikke på knappen Start for at køre snapshot-agenten og oprette det indledende synkroniseringssnapshot. Du kan også overvåge fremskridtene i processen for oprettelse af snapshot, indtil snapshot af alle artikler er oprettet, som nedenfor:
Overvåg synkroniseringen
Når øjebliksbilledet af de replikerede artikler er oprettet, starter synkroniseringsprocessen med abonnenten automatisk ved at skrive alle artikler fra det øjebliksbillede til abonnenten. For at overvåge synkroniseringsprocessen skal du højreklikke på abonnementet under SQL Server replikering node i SSMS Object Explorer og vælg Vis synkroniseringsstatus mulighed, hvor den vil vise dig antallet af transaktioner og kommandoer udført på abonnenten, som vist nedenfor:
Derudover kan du overvåge status for alle replikeringsagenter og antallet af kommandoer, der venter på distributørsiden og ikke anvendes på abonnentsiden, ved at højreklikke på publikationens navn og vælge vinduet Start replikeringsovervågning, som vist nedenfor:
For at bekræfte, at replikeringsstedet fungerer fint, lad os tilføje en ny post til en af de replikerede artikler, "Medarbejder"-tabellen, på udgiversiden, som ikke er tilgængelig på abonnentsiden, så vil du se fra replikeringsmonitoren vindue, at en ny post leveres fra udgiveren til distributøren og derefter til abonnenten. Derefter vil du se, at den nye post er tilgængelig i medarbejdertabellen på abonnentsiden, som vist tydeligt nedenfor:
Med klare og nemme trin byggede vi et komplet transaktionsreplikeringssted, der er synkroniseret og fungerer fint. I den næste artikel vil vi se, hvordan du fejlfinder et eksisterende SQL Server-replikeringssted. Følg med.