Wat is SQL Data Sync voor Azure?

SQL Data Sync is een service die is gebouwd op Azure SQL Database waarmee u de gegevens die u in twee richtingen selecteert, kunt synchroniseren tussen meerdere databases, zowel on-premises als in de cloud.

Belangrijk

Azure SQL Data Sync biedt momenteel geen ondersteuning voor Azure SQL Managed Instance.

Overzicht

Data Sync is gebaseerd op het concept van een synchronisatiegroep. Een synchronisatiegroep is een groep databases die u wilt synchroniseren.

Data Sync maakt gebruik van een stertopologie om gegevens te synchroniseren. U definieert een van de databases in de synchronisatiegroep als de hubdatabase. De rest van de databases zijn liddatabases. Synchronisatie vindt alleen plaats tussen de hub en afzonderlijke leden.

  • De hubdatabase moet een Azure SQL Database zijn.
  • De liddatabases kunnen databases zijn in Azure SQL Database of in exemplaren van SQL Server.
  • De database met synchronisatiemetagegevens bevat de metagegevens en het logboek voor Data Sync. De database met metagegevens synchroniseren moet een Azure SQL Database zijn die zich in dezelfde regio bevindt als de hubdatabase. De database met synchronisatiemetagegevens is door de klant gemaakt en de klant is eigendom van de klant. U kunt slechts één Sync Metadata-database per regio en abonnement hebben. Synchronisatiemetagegevensdatabase kan niet worden verwijderd of hernoemd terwijl er synchronisatiegroepen of synchronisatieagents bestaan. U wordt aangeraden een nieuwe, lege database te maken die als Database met metagegevens van synchronisatie wordt gebruikt. Met Data Sync worden tabellen in deze database gemaakt en een regelmatige workload uitgevoerd.

Notitie

Als u een on-premises database gebruikt als liddatabase, moet u een lokale synchronisatieagent installeren en configureren.

Sync data between databases

Een synchronisatiegroep heeft de volgende eigenschappen:

  • In het synchronisatieschema wordt beschreven welke gegevens worden gesynchroniseerd.
  • De synchronisatierichting kan bidirectioneel zijn of in slechts één richting stromen. Dat wil gezegd, de synchronisatierichting kan hub zijn naar lid of lid naar hub, of beide.
  • In het synchronisatieinterval wordt beschreven hoe vaak synchronisatie plaatsvindt.
  • Het beleid voor conflictoplossing is een groepsbeleid, dat hub wint of lid wint kan zijn.

Wanneer gebruikt u dit?

Data Sync is handig in gevallen waarin gegevens in verschillende databases in Azure SQL Database of SQL Server moeten worden bijgewerkt. Hier volgen de belangrijkste use cases voor Data Sync:

  • Hybride gegevenssynchronisatie: Met Data Sync kunt u gegevens gesynchroniseerd houden tussen uw databases in SQL Server en Azure SQL Database om hybride toepassingen in te schakelen. Deze mogelijkheid kan een beroep doen op klanten die overwegen om over te stappen naar de cloud en een deel van hun toepassing in Azure willen plaatsen.
  • Gedistribueerde toepassingen: In veel gevallen is het handig om verschillende werkbelastingen over verschillende databases te scheiden. Als u bijvoorbeeld een grote productiedatabase hebt, maar u ook een rapport- of analyseworkload op deze gegevens moet uitvoeren, is het handig om een tweede database te hebben voor deze extra workload. Deze aanpak minimaliseert de invloed van de prestaties op uw productieworkload. U kunt Data Sync gebruiken om deze twee databases gesynchroniseerd te houden.
  • Wereldwijd gedistribueerde toepassingen: Veel bedrijven omvatten meerdere regio's en zelfs meerdere landen/regio's. Om de netwerklatentie te minimaliseren, kunt u uw gegevens het beste in een regio bij u in de buurt hebben. Met Data Sync kunt u eenvoudig databases in regio's over de hele wereld gesynchroniseerd houden.

Data Sync is niet de voorkeursoplossing voor de volgende scenario's:

Scenario Enkele aanbevolen oplossingen
Herstel na noodgevallen Geografisch redundante back-ups van Azure
Leesschaal Alleen-lezenreplica's gebruiken om taken van alleen-lezenquery's te verdelen
ETL (OLTP naar OLAP) Azure Data Factory of SQL Server Integration Services
Migratie van SQL Server naar Azure SQL Database. SQL Data Sync echter kunnen worden gebruikt nadat de migratie is voltooid, om ervoor te zorgen dat de bron en het doel gesynchroniseerd blijven. Azure Database Migration Service

Uitleg

  • Wijzigingen in gegevens bijhouden: Data Sync wijzigingen bijhouden met behulp van triggers voor invoegen, bijwerken en verwijderen. De wijzigingen worden vastgelegd in een zijtabel in de gebruikersdatabase. Houd er rekening mee dat BULK INSERT standaard geen triggers activeert. Als FIRE_TRIGGERS niet is opgegeven, worden er geen invoegtriggers uitgevoerd. Voeg de optie FIRE_TRIGGERS toe, zodat Data Sync deze invoegingen kan bijhouden.
  • Gegevens synchroniseren: Data Sync is ontworpen in een hub- en spoke-model. De hub wordt afzonderlijk gesynchroniseerd met elk lid. Wijzigingen van de hub worden naar het lid gedownload en vervolgens worden wijzigingen van het lid geüpload naar de hub.
  • Conflicten oplossen: Data Sync biedt twee opties voor conflictoplossing, Hub wins of Member wins.
    • Als u Hub wint, worden de wijzigingen in de hub altijd overschreven door wijzigingen in het lid.
    • Als u Lid wint, worden de wijzigingen in het lid overschreven in de hub. Als er meer dan één lid is, is de uiteindelijke waarde afhankelijk van welk lid het eerst wordt gesynchroniseerd.

Vergelijken met transactionele replicatie

Gegevens synchroniseren Transactionele replicatie
Voordelen - Actief-actief-ondersteuning
- Bidirectioneel tussen on-premises en Azure SQL Database
- Lagere latentie
- Transactionele consistentie
- Bestaande topologie opnieuw gebruiken na migratie
-Azure SQL Managed Instance ondersteuning
Nadelen - Geen transactionele consistentie
- Hogere impact op prestaties
- Kan niet publiceren vanuit Azure SQL Database
- Hoge onderhoudskosten

Notitie

De SQL Data Sync private link verschilt van de Azure Private Link.

Met de nieuwe private link-functie kunt u een door de service beheerd privé-eindpunt kiezen om een beveiligde verbinding tot stand te brengen tussen de synchronisatieservice en uw lid-/hubdatabases tijdens het gegevenssynchronisatieproces. Een door een service beheerd privé-eindpunt is een privé-IP-adres binnen een specifiek virtueel netwerk en subnet. Binnen Data Sync wordt het door de service beheerde privé-eindpunt gemaakt door Microsoft en wordt deze uitsluitend gebruikt door de Data Sync-service voor een bepaalde synchronisatiebewerking. Lees de algemene vereisten voor de functie voordat u de privékoppeling instelt.

Private link for Data Sync

Notitie

U moet het door de service beheerde privé-eindpunt handmatig goedkeuren op de pagina Met privé-eindpuntverbindingen van de Azure Portal tijdens de implementatie van de synchronisatiegroep of met behulp van PowerShell.

Aan de slag

Data Sync instellen in de Azure Portal

Data Sync instellen met PowerShell

Data Sync instellen met REST API

Bekijk de aanbevolen procedures voor Data Sync

Is er iets misgegaan

Consistentie en prestaties

Consistentie Uiteindelijk

Aangezien Data Sync is gebaseerd op triggers, wordt transactionele consistentie niet gegarandeerd. Microsoft garandeert dat alle wijzigingen uiteindelijk worden aangebracht en dat Data Sync geen gegevensverlies veroorzaakt.

Invloed op de prestaties

Data Sync gebruikt triggers voor invoegen, bijwerken en verwijderen om wijzigingen bij te houden. Er worden zijtabellen gemaakt in de gebruikersdatabase voor het bijhouden van wijzigingen. Deze activiteiten voor het bijhouden van wijzigingen hebben een invloed op uw databaseworkload. Evalueer uw servicelaag en voer zo nodig een upgrade uit.

Het inrichten en ongedaan maken van de inrichting tijdens het maken, bijwerken en verwijderen van synchronisatiegroepen kan ook van invloed zijn op de prestaties van de database.

Vereisten en beperkingen

Algemene vereisten

  • Elke tabel moet een primaire sleutel hebben. Wijzig de waarde van de primaire sleutel in een willekeurige rij niet. Als u een primaire-sleutelwaarde moet wijzigen, verwijdert u de rij en maakt u deze opnieuw met de nieuwe primaire-sleutelwaarde.

Belangrijk

Als u de waarde van een bestaande primaire sleutel wijzigt, resulteert dit in het volgende foutieve gedrag:

  • Gegevens tussen hub en lid kunnen verloren gaan, ook al rapporteert synchronisatie geen probleem.
  • Synchroniseren kan mislukken omdat de traceringstabel een niet-bestaande rij van de bron heeft vanwege de wijziging van de primaire sleutel.
  • Isolatie van momentopnamen moet zijn ingeschakeld voor zowel synchronisatieleden als hubs. Voor meer informatie zie Snapshot-isolatie in SQL Server.

  • Als u Data Sync private link wilt gebruiken, moeten zowel de lid- als de hubdatabase worden gehost in Azure (hetzelfde of in verschillende regio's), in hetzelfde cloudtype (bijvoorbeeld in de openbare cloud of beide in de overheidscloud). Als u private link wilt gebruiken, moeten resourceproviders van Microsoft.Network zijn geregistreerd voor de abonnementen die als host fungeren voor de hub- en lidservers. Ten slotte moet u de privékoppeling handmatig goedkeuren voor Data Sync tijdens de synchronisatieconfiguratie, in de sectie Privé-eindpuntverbindingen in de Azure Portal of via PowerShell. Zie SQL Data Sync instellen voor meer informatie over het goedkeuren van de privékoppeling. Zodra u het door de service beheerde privé-eindpunt goedkeurt, vindt alle communicatie tussen de synchronisatieservice en de lid-/hubdatabases plaats via de privékoppeling. Bestaande synchronisatiegroepen kunnen worden bijgewerkt zodat deze functie is ingeschakeld.

Algemene beperkingen

  • Een tabel kan geen identiteitskolom hebben die niet de primaire sleutel is.
  • Een primaire sleutel kan niet de volgende gegevenstypen hebben: sql_variant, binair, varbinair, afbeelding, XML.
  • Wees voorzichtig wanneer u de volgende gegevenstypen als primaire sleutel gebruikt, omdat de ondersteunde precisie alleen voor de tweede is: tijd, datum/tijd, datum/tijd2, datum/tijdoffset.
  • De namen van objecten (databases, tabellen en kolommen) mogen de punt met afdrukbare tekens (.), vierkante haak links ([) of vierkante haak rechts (]) niet bevatten.
  • Een tabelnaam mag geen afdrukbare tekens bevatten: ! " # $ % ' ( ) * + - spatie
  • Azure Active Directory verificatie wordt niet ondersteund.
  • Als er tabellen met dezelfde naam maar een ander schema zijn (bijvoorbeeld dbo.customers en sales.customers), kan slechts één van de tabellen worden gesynchroniseerd.
  • Kolommen met User-Defined gegevenstypen worden niet ondersteund
  • Het verplaatsen van servers tussen verschillende abonnementen wordt niet ondersteund.
  • Als twee primaire sleutels alleen verschillen in het geval (bijvoorbeeld Foo en foo), biedt Data Sync geen ondersteuning voor dit scenario.
  • Het afkappen van tabellen is geen bewerking die wordt ondersteund door Data Sync (wijzigingen worden niet bijgehouden).
  • Het gebruik van een Hyperscale-database als hub- of synchronisatiemetagegevensdatabase wordt niet ondersteund. Een Hyperscale-database kan echter een liddatabase zijn in een Data Sync topologie.
  • Tabellen die zijn geoptimaliseerd voor geheugen worden niet ondersteund.

Niet-ondersteunde gegevenstypen

  • Filestream
  • SQL/CLR UDT
  • XMLSchemaCollection (XML ondersteund)
  • Cursor, RowVersion, Timestamp, Hierarchyid

Niet-ondersteunde kolomtypen

Data Sync kan geen alleen-lezenkolommen of door het systeem gegenereerde kolommen synchroniseren. Bijvoorbeeld:

  • Berekende kolommen.
  • Door het systeem gegenereerde kolommen voor tijdelijke tabellen.

Beperkingen voor service- en databasedimensies

Dimensies Limiet Tijdelijke oplossing
Maximum aantal synchronisatiegroepen waartoe elke database behoort. 5
Maximum aantal eindpunten in één synchronisatiegroep 30
Maximum aantal on-premises eindpunten in één synchronisatiegroep. 5 Meerdere synchronisatiegroepen maken
Database-, tabel-, schema- en kolomnamen 50 tekens per naam
Tabellen in een synchronisatiegroep 500 Meerdere synchronisatiegroepen maken
Kolommen in een tabel in een synchronisatiegroep 1000
Gegevensrijgrootte in een tabel 24 Mb

Notitie

Er kunnen maximaal 30 eindpunten in één synchronisatiegroep zijn als er slechts één synchronisatiegroep is. Als er meer dan één synchronisatiegroep is, mag het totale aantal eindpunten in alle synchronisatiegroepen niet groter zijn dan 30. Als een database deel uitmaakt van meerdere synchronisatiegroepen, wordt deze geteld als meerdere eindpunten, niet als één.

Netwerkvereisten

Notitie

Als u Private Link synchroniseren gebruikt, zijn deze netwerkvereisten niet van toepassing.

Wanneer de synchronisatiegroep tot stand is gebracht, moet de Data Sync-service verbinding maken met de hubdatabase. Op het moment dat u de synchronisatiegroep tot stand brengt, moet de Azure SQL-server de volgende configuratie hebben in Firewalls and virtual networks de instellingen:

Zodra de synchronisatiegroep is gemaakt en ingericht, kunt u deze instellingen uitschakelen. De synchronisatieagent maakt rechtstreeks verbinding met de hubdatabase en u kunt de FIREWALL-IP-regels of privé-eindpunten van de server gebruiken om de agent toegang te geven tot de hubserver.

Notitie

Als u de schema-instellingen van de synchronisatiegroep wijzigt, moet u de Data Sync-service opnieuw toegang geven tot de server, zodat de hubdatabase opnieuw kan worden ingericht.

Locatie van regiogegevens

Als u gegevens in dezelfde regio synchroniseert, worden SQL Data Sync klantgegevens niet opgeslagen/verwerkt buiten die regio waarin het service-exemplaar wordt geïmplementeerd. Als u gegevens in verschillende regio's synchroniseert, repliceert SQL Data Sync klantgegevens naar de gekoppelde regio's.

Veelgestelde vragen over SQL Data Sync

Hoeveel kost de SQL Data Sync service?

Er worden geen kosten in rekening gebracht voor de SQL Data Sync-service zelf. U verzamelt echter nog steeds kosten voor gegevensoverdracht voor gegevensverplaatsing in en uit uw SQL Database exemplaar. Zie de kosten voor gegevensoverdracht voor meer informatie.

Welke regio's ondersteuning bieden voor Data Sync

SQL Data Sync is beschikbaar in alle regio's.

Is een SQL Database account vereist

Ja. U moet een SQL Database-account hebben om de hubdatabase te hosten.

Kan ik Data Sync gebruiken om alleen te synchroniseren tussen SQL Server databases

Niet rechtstreeks. U kunt echter indirect synchroniseren tussen SQL Server databases door een Hub-database te maken in Azure en vervolgens de on-premises databases toe te voegen aan de synchronisatiegroep.

Kan ik Data Sync configureren voor synchronisatie tussen databases in Azure SQL Database die deel uitmaken van verschillende abonnementen

Ja. U kunt synchronisatie configureren tussen databases die eigendom zijn van resourcegroepen die eigendom zijn van verschillende abonnementen, zelfs als de abonnementen deel uitmaken van verschillende tenants.

  • Als de abonnementen deel uitmaken van dezelfde tenant en u gemachtigd bent voor alle abonnementen, kunt u de synchronisatiegroep configureren in de Azure Portal.
  • Anders moet u PowerShell gebruiken om de synchronisatieleden toe te voegen.

Kan ik Data Sync instellen om te synchroniseren tussen databases in SQL Database die deel uitmaken van verschillende clouds (zoals Azure Public Cloud en Azure China 21Vianet)

Ja. U kunt synchronisatie instellen tussen databases die deel uitmaken van verschillende clouds. U moet PowerShell gebruiken om de synchronisatieleden toe te voegen die deel uitmaken van de verschillende abonnementen.

Kan ik Data Sync gebruiken om gegevens uit mijn productiedatabase te seeden naar een lege database en deze vervolgens te synchroniseren

Ja. Maak het schema handmatig in de nieuwe database door het uit de oorspronkelijke database te scripten. Nadat u het schema hebt gemaakt, voegt u de tabellen toe aan een synchronisatiegroep om de gegevens te kopiëren en gesynchroniseerd te houden.

Moet ik SQL Data Sync gebruiken om een back-up te maken van mijn databases en deze te herstellen

Het wordt niet aanbevolen om SQL Data Sync te gebruiken om een back-up van uw gegevens te maken. U kunt geen back-ups maken en terugzetten naar een bepaald tijdstip omdat SQL Data Sync synchronisaties niet versiebeheer hebben. Bovendien maakt SQL Data Sync geen back-up van andere SQL objecten, zoals opgeslagen procedures, en doet het equivalent van een herstelbewerking niet snel.

Zie Een database kopiëren in Azure SQL Database voor een aanbevolen back-uptechniek.

Kan versleutelde tabellen en kolommen Data Sync synchroniseren

  • Als een database gebruikmaakt van Always Encrypted, kunt u alleen de tabellen en kolommen synchroniseren die niet zijn versleuteld. U kunt de versleutelde kolommen niet synchroniseren, omdat Data Sync de gegevens niet kunnen ontsleutelen.
  • Als een kolom gebruikmaakt van Column-Level Encryption (CLE), kunt u de kolom synchroniseren, zolang de rijgrootte kleiner is dan de maximale grootte van 24 Mb. Data Sync behandelt de kolom die is versleuteld met sleutel (CLE) als normale binaire gegevens. Als u de gegevens van andere synchronisatieleden wilt ontsleutelen, moet u hetzelfde certificaat hebben.

Wordt sortering ondersteund in SQL Data Sync

Ja. SQL Data Sync ondersteunt sortering in de volgende scenario's:

  • Als de geselecteerde synchronisatieschematabellen zich nog niet in uw hub- of liddatabases bevinden, worden bij de implementatie van de synchronisatiegroep automatisch de bijbehorende tabellen en kolommen gemaakt met de sorteringsinstellingen die zijn geselecteerd in de lege doeldatabases.
  • Als de tabellen die moeten worden gesynchroniseerd al bestaan in zowel uw hub- als liddatabases, moet SQL Data Sync dat de primaire-sleutelkolommen dezelfde sortering hebben tussen hub- en liddatabases om de synchronisatiegroep te implementeren. Er zijn geen sorteringsbeperkingen voor andere kolommen dan de primaire-sleutelkolommen.

Wordt federatie ondersteund in SQL Data Sync

Federatieve basisdatabase kan zonder enige beperking worden gebruikt in de SQL Data Sync-service. U kunt het eindpunt van de federatieve database niet toevoegen aan de huidige versie van SQL Data Sync.

Kan ik Data Sync gebruiken om gegevens te synchroniseren die zijn geëxporteerd uit Dynamics 365 met behulp van de BYOD-functie (Bring Your Own Database).

Met de Dynamics 365 Bring Your Own Database-functie kunnen beheerders gegevensentiteiten uit de toepassing exporteren naar hun eigen Microsoft Azure SQL-database. Data Sync kan worden gebruikt om deze gegevens te synchroniseren met andere databases als gegevens worden geëxporteerd met incrementele push (volledige push wordt niet ondersteund) en triggers in de doeldatabase zijn ingesteld op ja.

Hoe kan ik Data Sync maken in de failovergroep om herstel na noodgevallen te ondersteunen?

  • Om ervoor te zorgen dat gegevenssynchronisatiebewerkingen in een failoverregio gelijk zijn aan primaire regio, moet u na een failover handmatig de synchronisatiegroep in de failoverregio opnieuw maken met dezelfde instellingen als de primaire regio.

Volgende stappen

Het schema van een gesynchroniseerde database bijwerken

Moet u het schema van een database in een synchronisatiegroep bijwerken? Schemawijzigingen worden niet automatisch gerepliceerd. Zie de volgende artikelen voor een aantal oplossingen:

Controleren en problemen oplossen

Doet SQL Data Sync zoals verwacht? Raadpleeg de volgende artikelen om activiteiten te bewaken en problemen op te lossen:

Meer informatie over Azure SQL Database

Zie de volgende artikelen voor meer informatie over Azure SQL Database: