Transactionele replicatie met Azure SQL Managed Instance (preview)

VAN TOEPASSING OP: Azure SQL Managed Instance

Transactionele replicatie is een functie van Azure SQL Managed Instance en SQL Server waarmee u gegevens uit een tabel in Azure SQL Managed Instance of een SQL Server-exemplaar kunt repliceren naar tabellen in externe databases. Met deze functie kunt u meerdere tabellen in verschillende databases synchroniseren.

Transactionele replicatie is momenteel beschikbaar als openbare preview-versie voor SQL Managed Instance.

Overzicht

U kunt transactionele replicatie gebruiken om wijzigingen die zijn aangebracht in een Azure SQL Managed Instance te pushen naar:

Onderdelen

De belangrijkste onderdelen van transactionele replicatie zijn de Publisher, Distributor en Subscriber, zoals wordt weergegeven in de volgende afbeelding:

replicatie met SQL Database

Rol Azure SQL Database Azure SQL Managed Instance
Publisher Nee Ja
Distributeur Nee Ja
Pull-abonnee Nee Ja
Push-abonnee Ja Ja
     

De Publisher wijzigingen gepubliceerd in sommige tabellen (artikelen) door de updates naar de distributeur te verzenden. De uitgever kan een Azure SQL Managed Instance of een SQL Server zijn.

De distributeur verzamelt wijzigingen in de artikelen van een Publisher distribueert deze naar de abonnees. De distributor kan een Azure SQL Managed Instance of een SQL Server-exemplaar zijn (elke versie zolang deze gelijk is aan of hoger is dan de Publisher versie).

De abonnee ontvangt wijzigingen die zijn aangebracht op de Publisher. Een SQL Server-exemplaar en Azure SQL Managed Instance kunnen zowel push- als pull-abonnees zijn, hoewel een pull-abonnement niet wordt ondersteund wanneer de distributeur een Beheerd exemplaar van Azure SQL is en de abonnee dat niet is. Een database in Azure SQL Database kan alleen een push-abonnee zijn.

Azure SQL Managed Instance kan ondersteuning bieden voor een abonnee van de volgende versies van SQL Server:

  • SQL Server 2016 en hoger

  • SQL Server 2014 RTM CU10 (12.0.4427.24) of SP1 CU3 (12.0.2556.4)

  • SQL Server 2012 SP2 CU8 (11.0.5634.1) of SP3 (11.0.6020.0) of SP4 (11.0.7001.0)

    Notitie

    • Voor andere versies van SQL Server die geen ondersteuning bieden voor het publiceren naar objecten in Azure, is het mogelijk om de methode voor het opnieuw publiceren van gegevens te gebruiken om gegevens te verplaatsen naar nieuwere versies van SQL Server.
    • Als u replicatie probeert te configureren met een oudere versie, kan dit leiden tot foutnummer MSSQL_REPL20084 (het proces kan geen verbinding maken met abonnee.) en MSSQ_REPL40532 (kan de server die is aangevraagd door de aanmelding niet <name> openen. De aanmelding is mislukt.)

Typen replicatie

Er zijn verschillende typen replicatie:

Replicatie Azure SQL Database Azure SQL Managed Instance
Standaard transactioneel Ja (alleen als abonnee) Yes
Momentopname Ja (alleen als abonnee) Yes
Replicatie samenvoegen Nee Nee
Peer-to-peer Nee Nee
Bidirectionele Nee Ja
Abonnementen die kunnen worden bijwerkt Nee Nee
     

Ondersteuningsmatrix

De ondersteuningsmatrix voor transactionele replicatie voor Azure SQL Managed Instance is hetzelfde als de matrix voor SQL Server.

Publisher Distributeur Abonnee
SQL Server 2019 SQL Server 2019 SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2017 SQL Server 2019
SQL Server 2017
SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2016 SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2014 SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2008 R2
SQL Server 2008
SQL Server 2012 SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2008 R2
SQL Server 2008
SQL Server 2008 R2
SQL Server 2008
SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2008 R2
SQL Server 2008
SQL Server 2014
SQL Server 2012
SQL Server 2008 R2
SQL Server 2008
     

Wanneer gebruikt u dit?

Transactionele replicatie is handig in de volgende scenario's:

  • Publiceer wijzigingen die zijn aangebracht in een of meer tabellen in een database en distribueer deze naar een of meer databases in een SQL Server-exemplaar of Azure SQL Database die zijn geabonneerd op de wijzigingen.
  • Houd verschillende gedistribueerde databases gesynchroniseerd.
  • Migreert databases van SQL Server-exemplaar of Azure SQL Managed Instance naar een andere database door de wijzigingen continu te publiceren.

De Data Sync vergelijken met transactionele replicatie

Categorie Gegevens synchroniseren Transactionele replicatie
Voordelen - Ondersteuning voor actief/actief
- Bi-directioneel tussen on-premises en Azure SQL Database
- Lagere latentie
- Transactionele consistentie
- Bestaande topologie opnieuw gebruiken na migratie
Nadelen - Geen transactionele consistentie
- Hogere invloed op prestaties
- Kan niet publiceren vanuit Azure SQL Database
- Hoge onderhoudskosten

Algemene configuraties

Over het algemeen moeten de uitgever en de distributeur zich in de cloud of on-premises hebben. De volgende configuraties worden ondersteund:

Publisher lokale Distributor op SQL Managed Instance

Eén exemplaar als Publisher en distributor

Publisher en distributor worden geconfigureerd binnen één SQL Managed Instance en distribueren wijzigingen naar een ander SQL Managed Instance, SQL Database of SQL Server exemplaar.

Publisher remote distributor op SQL Managed Instance

In deze configuratie publiceert één beheerd exemplaar wijzigingen naar een distributeur die is geplaatst op een ander SQL Managed Instance dat veel SQL Managed Instances kan gebruiken en wijzigingen kan distribueren naar een of meer doelen op Azure SQL Database, Azure SQL Managed Instance of SQL Server.

Afzonderlijke exemplaren voor Publisher en Distributor

Publisher en distributor zijn geconfigureerd op twee beheerde exemplaren. Er zijn enkele beperkingen met deze configuratie:

  • Beide beheerde exemplaren zijn op hetzelfde vNet.
  • Beide beheerde exemplaren bevinden zich op dezelfde locatie.

On-premises Publisher/Distributor met externe abonnee

Azure SQL Database als abonnee

In deze configuratie is een database in Azure SQL Database Azure SQL Managed Instance een abonnee. Deze configuratie ondersteunt migratie van on-premises naar Azure. Als een abonnee een database in Azure SQL Database is, moet deze zich in de push-modus.

Vereisten

  • Gebruik SQL verificatie voor connectiviteit tussen replicatiedeelnemers.
  • Gebruik een Azure Storage account share voor de werkmap die door replicatie wordt gebruikt.
  • Open TCP-uitgaande poort 445 in de beveiligingsregels van het subnet voor toegang tot de Azure-bestands share.
  • Open TCP uitgaande poort 1433 wanneer de SQL Managed Instance de Publisher/Distributor is en de abonnee dat niet is. Mogelijk moet u ook de uitgaande beveiligingsregel SQL Managed Instance NSG voor de poort allow_linkedserver_outbound 1433 Destination Service-tag wijzigen van virtualnetwork in internet .
  • Plaats zowel de uitgever als de distributeur in de cloud of on-premises.
  • Configureer VPN-peering tussen de virtuele netwerken van replicatiedeelnemers als de virtuele netwerken verschillen.

Notitie

U kunt fout 53 tegenkomen wanneer u verbinding maakt met een Azure Storage-bestand als de uitgaande netwerkbeveiligingsgroep (NSG) poort 445 is geblokkeerd wanneer de distributeur een Azure SQL Managed Instance-database is en de abonnee on-premises is. Werk de VNet-NSG bij om dit probleem op te lossen.

Met failovergroepen

Als een uitgever of distributeur SQL Managed Instance zich in een failovergroepheeft, moet de beheerder van het SQL Managed Instance alle publicaties op de oude primaire instantie ops schonen en deze opnieuw configureren op de nieuwe primaire instantie nadat er een failover plaatsvindt. De volgende activiteiten zijn nodig in dit scenario:

  1. Stop alle replicatietaken die op de database worden uitgevoerd, als deze er zijn.

  2. Drop subscription metadata from publisher (Metagegevens van abonnement verwijderen van uitgever) door het volgende script uit te voeren in de uitgeversdatabase:

    EXEC sp_dropsubscription @publication='<name of publication>', @article='all',@subscriber='<name of subscriber>'
    
  3. Metagegevens van het abonnement van de abonnee laten vallen. Voer het volgende script uit op de abonnementsdatabase op abonnee SQL Managed Instance:

    EXEC sp_subscription_cleanup
       @publisher = N'<full DNS of publisher, e.g. example.ac2d23028af5.database.windows.net>',
       @publisher_db = N'<publisher database>',
       @publication = N'<name of publication>';
    
  4. U kunt alle replicatieobjecten van de uitgever geforceeerd verwijderen door het volgende script uit te voeren in de gepubliceerde database:

    EXEC sp_removedbreplication
    
  5. De oude distributeur geforceerd laten vallen van de oorspronkelijke primaire SQL Managed Instance (als u een back-overval naar een oude primaire instantie hebt gemaakt die voorheen een distributeur had). Voer het volgende script uit op de hoofddatabase in de oude distributor SQL Managed Instance:

    EXEC sp_dropdistributor 1,1
    

Als een abonnee SQL Managed Instance zich in een failovergroep, moet de publicatie worden geconfigureerd om verbinding te maken met het listener-eindpunt van de failovergroep voor het beheerde exemplaar van de abonnee. In het geval van een failover is de volgende actie van de beheerder van het beheerde exemplaar afhankelijk van het type failover dat is opgetreden:

  • Voor een failover zonder gegevensverlies blijft de replicatie na een failover werken.
  • Voor een failover met gegevensverlies werkt replicatie ook. De verloren wijzigingen worden opnieuw gerepliceerd.
  • Voor een failover met gegevensverlies, maar het gegevensverlies valt buiten de bewaarperiode van de distributiedatabase, moet de SQL Managed Instance-beheerder de abonnementsdatabase opnieuwitialiseren.

Volgende stappen

Zie de volgende zelfstudies voor meer informatie over het configureren van transactionele replicatie:

Zie ook