Hoge beschikbaarheid voor Azure SQL Database en SQL Managed Instance

VAN TOEPASSING OP: Azure SQL Database Azure SQL Managed Instance

Het doel van de architectuur voor hoge beschikbaarheid in Azure SQL Database en SQL Managed Instance is om te garanderen dat uw database minimaal 99,99% van de tijd actief is zonder dat u zich zorgen hoeft te maken over de gevolgen van onderhoudsbewerkingen en storingen. Raadpleeg sla voor Azure SQL Database en SLA voor Azure SQL Managed Instance voor meer informatie over specifieke SLA's voor verschillende lagen.

Azure verwerkt automatisch kritieke onderhoudstaken, zoals patching, back-ups, Windows en Azure SQL upgrades, en niet-geplande gebeurtenissen, zoals onderliggende hardware, software of netwerkfouten. Wanneer de onderliggende database in Azure SQL Database is gepatcht of een failover-overschakeling uitvoert, is de downtime niet merkbaar als u logica voor opnieuw proberen in uw app gebruikt. SQL Database en SQL Managed Instance kunnen snel herstellen, zelfs in de meest kritieke omstandigheden, zodat uw gegevens altijd beschikbaar zijn.

De oplossing voor hoge beschikbaarheid is ontworpen om ervoor te zorgen dat vastgelegde gegevens nooit verloren gaan als gevolg van storingen, dat onderhoudsbewerkingen geen invloed hebben op uw workload en dat de database geen Single Point of Failure in uw softwarearchitectuur is. Er zijn geen onderhoudsvensters of downtime die vereisen dat u de werkbelasting stopt terwijl de database wordt bijgewerkt of onderhouden.

Er zijn twee architectuurmodellen voor hoge beschikbaarheid:

  • Standaard beschikbaarheidsmodel dat is gebaseerd op een scheiding van rekenkracht en opslag. Het is afhankelijk van hoge beschikbaarheid en betrouwbaarheid van de externe opslaglaag. Deze architectuur is gericht op budgetgerichte zakelijke toepassingen die prestatievermindering tijdens onderhoudsactiviteiten kunnen tolereren.
  • Premium beschikbaarheidsmodel dat is gebaseerd op een cluster van database-engineprocessen. Het is afhankelijk van het feit dat er altijd een quorum van beschikbare database-engineknooppunten is. Deze architectuur is gericht op bedrijfskritieke toepassingen met hoge I/O-prestaties, hoge transactiesnelheid en garandeert minimale prestatie-impact op uw workload tijdens onderhoudsactiviteiten.

SQL Database en SQL Managed Instance beide worden uitgevoerd op de nieuwste stabiele versie van de SQL Server-database-engine en Windows besturingssysteem, en de meeste gebruikers merken niet dat upgrades continu worden uitgevoerd.

De servicelaag Basic, Standard en Algemeen lokaal redundante beschikbaarheid

De servicelagen Basic, Standard en Algemeen maken gebruik van de standaard-beschikbaarheidsarchitectuur voor zowel serverloze als ingerichte berekeningen. In de volgende afbeelding ziet u vier verschillende knooppunten met de gescheiden reken- en opslaglagen.

Separation of compute and storage

Het standaard beschikbaarheidsmodel bevat twee lagen:

  • Een staatloze rekenlaag die het sqlservr.exe proces uitvoert en alleen tijdelijke en in de cache opgeslagen gegevens bevat, zoals TempDB, modeldatabases op de gekoppelde SSD, en plan cache, buffergroep en columnstore-pool in het geheugen. Dit staatloze knooppunt wordt beheerd door Azure Service Fabric die de status van het knooppunt initialiseertsqlservr.exe, beheert en indien nodig een failover naar een ander knooppunt uitvoert.
  • Een stateful gegevenslaag met de databasebestanden (.mdf/.ldf) die zijn opgeslagen in Azure Blob Storage. Azure Blob Storage heeft ingebouwde functie voor gegevensbeschikbaarheid en redundantie. Het garandeert dat elke record in het logboekbestand of de pagina in het gegevensbestand behouden blijft, zelfs als sqlservr.exe het proces vastloopt.

Wanneer de database-engine of het besturingssysteem wordt bijgewerkt of er een fout wordt gedetecteerd, verplaatst Azure Service Fabric het staatloze sqlservr.exe proces naar een ander staatloos rekenknooppunt met voldoende vrije capaciteit. Gegevens in Azure Blob Storage worden niet beïnvloed door de verplaatsing en de gegevens/logboekbestanden worden gekoppeld aan het zojuist geïnitialiseerde sqlservr.exe proces. Dit proces garandeert een beschikbaarheid van 99,99%, maar een zware workload kan tijdens de overgang enige prestatievermindering ervaren omdat het nieuwe sqlservr.exe proces begint met koude cache.

Algemeen zone-redundante beschikbaarheid van servicelaag

Zone-redundante configuratie voor de servicelaag algemeen gebruik wordt aangeboden voor zowel serverloze als ingerichte berekeningen. Deze configuratie maakt gebruik van Azure Beschikbaarheidszones voor het repliceren van databases op meerdere fysieke locaties binnen een Azure-regio. Door zoneredundantie te selecteren, kunt u uw nieuwe en bestaande serverloze en ingerichte individuele databases voor algemeen gebruik en elastische pools tolerant maken voor een veel grotere set fouten, waaronder onherstelbare datacentrumstoringen, zonder wijzigingen in de toepassingslogica.

Zone-redundante configuratie voor de laag voor algemeen gebruik heeft twee lagen:

  • Een stateful gegevenslaag met de databasebestanden (.mdf/.ldf) die zijn opgeslagen in ZRS(zone-redundante opslag). Met ZRS worden de gegevens en logboekbestanden synchroon gekopieerd naar drie fysiek geïsoleerde Azure-beschikbaarheidszones.
  • Een staatloze rekenlaag die het sqlservr.exe proces uitvoert en alleen tijdelijke en in de cache opgeslagen gegevens bevat, zoals TempDB, modeldatabases op de gekoppelde SSD, en cache, buffergroep en columnstore-pool in het geheugen plannen. Dit staatloze knooppunt wordt beheerd door Azure Service Fabric die sqlservr.exe initialiseert, de status van het knooppunt bepaalt en indien nodig failover naar een ander knooppunt uitvoert. Voor zoneredundante serverloze en ingerichte algemene databases zijn knooppunten met reservecapaciteit direct beschikbaar in andere Beschikbaarheidszones voor failover.

De zone-redundante versie van de architectuur voor hoge beschikbaarheid voor de servicelaag voor algemeen gebruik wordt geïllustreerd in het volgende diagram:

Zone redundant configuration for general purpose

Belangrijk

Voor de categorie algemeen is de zone-redundante configuratie algemeen beschikbaar in de volgende regio's: Europa - west, Europa - noord, VS - west 2 en Frankrijk - centraal. Dit is in preview in de volgende regio's: VS - oost, VS - oost 2, Azië - zuidoost, Australië - oost, Japan - oost en VK - zuid.

Notitie

Zone-redundante configuratie is niet beschikbaar in SQL Managed Instance. In SQL Database deze functie alleen beschikbaar is wanneer de Gen5-hardware is geselecteerd.

lokaal redundante beschikbaarheid Premium en Bedrijfskritiek servicelaag

Premium en Bedrijfskritiek servicelagen maken gebruik van het Premium-beschikbaarheidsmodel, dat rekenresources (proces) en opslag (sqlservr.exelokaal gekoppelde SSD) op één knooppunt integreert. Hoge beschikbaarheid wordt bereikt door zowel rekenkracht als opslag te repliceren naar extra knooppunten die een cluster met drie tot vier knooppunten maken.

Cluster of database engine nodes

De onderliggende databasebestanden (.mdf/.ldf) worden op de gekoppelde SSD-opslag geplaatst om io met een zeer lage latentie voor uw workload te bieden. Hoge beschikbaarheid wordt geïmplementeerd met behulp van een technologie die vergelijkbaar is met SQL Server AlwaysOn-beschikbaarheidsgroepen. Het cluster bevat één primaire replica die toegankelijk is voor klantworkloads voor lezen/schrijven en maximaal drie secundaire replica's (compute en opslag) die kopieën van gegevens bevatten. Het primaire knooppunt pusht voortdurend wijzigingen in de secundaire knooppunten op volgorde en zorgt ervoor dat de gegevens worden bewaard naar ten minste één secundaire replica voordat elke transactie wordt doorgevoerd. Dit proces garandeert dat als het primaire knooppunt om welke reden dan ook vastloopt, er altijd een volledig gesynchroniseerd knooppunt is waarnaar een failover moet worden uitgevoerd. De failover wordt gestart door de Azure-Service Fabric. Zodra de secundaire replica het nieuwe primaire knooppunt wordt, wordt er een andere secundaire replica gemaakt om ervoor te zorgen dat het cluster voldoende knooppunten (quorumset) heeft. Zodra de failover is voltooid, worden Azure SQL verbindingen automatisch omgeleid naar het nieuwe primaire knooppunt.

Als extra voordeel biedt het Premium-beschikbaarheidsmodel de mogelijkheid om alleen-lezen Azure SQL verbindingen om te leiden naar een van de secundaire replica's. Deze functie heet Uitschalen lezen. Het biedt 100% extra rekencapaciteit zonder extra kosten voor off-load alleen-lezen bewerkingen, zoals analytische workloads, van de primaire replica.

redundante beschikbaarheid Premium en Bedrijfskritiek servicelaag

Standaard wordt het cluster met knooppunten voor het premium-beschikbaarheidsmodel gemaakt in hetzelfde datacenter. Met de introductie van Azure Beschikbaarheidszones kan SQL Database verschillende replica's van de Bedrijfskritiek-database plaatsen in verschillende beschikbaarheidszones in dezelfde regio. Om een single point of failure te voorkomen, wordt de besturingsring ook gedupliceerd in meerdere zones als drie gatewayringen (GW). De routering naar een specifieke gatewayring wordt beheerd door Azure Traffic Manager (ATM). Omdat de zone-redundante configuratie in de servicelagen Premium of Bedrijfskritiek geen extra databaseredundantie maakt, kunt u deze zonder extra kosten inschakelen. Door een zone-redundante configuratie te selecteren, kunt u uw Premium- of Bedrijfskritiek-databases tolerant maken voor een veel grotere set fouten, waaronder onherstelbare datacentrumstoringen, zonder wijzigingen in de toepassingslogica. U kunt ook bestaande Premium of Bedrijfskritiek databases of pools converteren naar de zone-redundante configuratie.

Omdat de zone-redundante databases replica's hebben in verschillende datacenters met enige afstand ertussen, kan de toegenomen netwerklatentie de doorvoertijd verhogen en dus de prestaties van sommige OLTP-workloads beïnvloeden. U kunt altijd terugkeren naar de configuratie met één zone door de instelling zoneredundantie uit te schakelen. Dit proces is een onlinebewerking die vergelijkbaar is met de reguliere servicelaagupgrade. Aan het einde van het proces wordt de database of pool gemigreerd van een zoneredundante ring naar één zonering of omgekeerd.

Belangrijk

Deze functie is niet beschikbaar in SQL Managed Instance. Wanneer u in SQL Database de Bedrijfskritiek-laag gebruikt, is zone-redundante configuratie alleen beschikbaar wanneer de Gen5-hardware is geselecteerd. Zie Services-ondersteuning per regio voor actuele informatie over de regio's die zone-redundante databases ondersteunen.

De zone-redundante versie van de architectuur voor hoge beschikbaarheid wordt geïllustreerd in het volgende diagram:

high availability architecture zone redundant

Lokaal redundante beschikbaarheid van hyperscale-servicelaag

De architectuur van de Hyperscale-servicelaag wordt beschreven in de architectuur van gedistribueerde functies en is momenteel alleen beschikbaar voor SQL Database, niet SQL Managed Instance.

Hyperscale functional architecture

Het beschikbaarheidsmodel in Hyperscale bevat vier lagen:

  • Een staatloze rekenlaag die de sqlservr.exe processen uitvoert en alleen tijdelijke en in de cache opgeslagen gegevens bevat, zoals niet-bedekte RBPEX-cache, TempDB, modeldatabase, enzovoort op de gekoppelde SSD, en plancache, buffergroep en columnstore-pool in het geheugen. Deze staatloze laag bevat de primaire rekenreplica en eventueel een aantal secundaire rekenreplica's die als failoverdoelen kunnen fungeren.
  • Een staatloze opslaglaag die wordt gevormd door paginaservers. Deze laag is de gedistribueerde opslagengine voor de sqlservr.exe processen die worden uitgevoerd op de rekenreplica's. Elke paginaserver bevat alleen tijdelijke en in de cache opgeslagen gegevens, zoals de RBPEX-cache op de gekoppelde SSD en gegevenspagina's die in het geheugen zijn opgeslagen. Elke paginaserver heeft een gekoppelde paginaserver in een actief-actieve configuratie om taakverdeling, redundantie en hoge beschikbaarheid te bieden.
  • Een stateful opslaglaag voor transactielogboeken die wordt gevormd door het rekenknooppunt waarop het logserviceproces, de landingszone voor transactielogboeken en opslag op de lange termijn worden uitgevoerd. Landingszone en langetermijnopslag maken gebruik van Azure Storage, die beschikbaarheid en redundantie biedt voor transactielogboeken, waardoor de duurzaamheid van gegevens voor vastgelegde transacties wordt gegarandeerd.
  • Een stateful gegevensopslaglaag met de databasebestanden (.mdf/.ndf) die zijn opgeslagen in Azure Storage en worden bijgewerkt door paginaservers. Deze laag maakt gebruik van functies voor gegevens beschikbaarheid en redundantie van Azure Storage. Het garandeert dat elke pagina in een gegevensbestand behouden blijft, zelfs als processen in andere lagen van de Hyperscale-architectuur vastlopen of als rekenknooppunten mislukken.

Rekenknooppunten in alle Hyperscale-lagen worden uitgevoerd op Azure Service Fabric, waarmee de status van elk knooppunt wordt bepaald en failovers worden uitgevoerd naar beschikbare gezonde knooppunten, indien nodig.

Zie Hoge beschikbaarheid van databases in Hyperscale voor meer informatie over hoge beschikbaarheid in Hyperscale.

Zone-redundante beschikbaarheid van hyperscale-servicelaag (preview)

Zoneredundantie voor de Azure SQL Database Hyperscale-servicelaag is nu beschikbaar als openbare preview. Het inschakelen van deze configuratie zorgt voor tolerantie op zoneniveau via replicatie in Beschikbaarheidszones voor alle Hyperscale-lagen. Door zoneredundantie te selecteren, kunt u uw Hyperscale-databases tolerant maken voor een veel grotere set fouten, waaronder onherstelbare datacentrumstoringen, zonder wijzigingen in de toepassingslogica.

Houd rekening met de volgende beperkingen:

  • Momenteel worden alleen de volgende Azure-regio's ondersteund: VK - zuid, Brazilië - zuid, VS - west 2, Japan - oost, Europa - noord, Azië - zuidoost, Canada - centraal, VS - centraal, VS - zuid-centraal, Frankrijk - centraal, Australië - oost, Duitsland - west- centraal, Azië - oost, Korea - centraal, Noorwegen - oost en VS - west 3.
  • Zoneredundante configuratie kan alleen worden opgegeven tijdens het maken van de database. Deze instelling kan niet worden gewijzigd zodra de resource is ingericht. Gebruik databasekopie, herstel naar een bepaald tijdstip of maak een geo-replica om de zoneredundante configuratie voor een bestaande Hyperscale-database bij te werken. Wanneer u een van deze updateopties gebruikt, als de doeldatabase zich in een andere regio bevindt dan de bron of als de redundantie van de back-upopslag van de database verschilt van de brondatabase, is de kopieerbewerking een grootte van de gegevensbewerking. Als u een van deze updateopties gebruikt, beschikt de doeldatabase bovendien niet over de historische back-upgegevens uit de brondatabase voor herstel naar een bepaald tijdstip.
  • Benoemde replica's worden niet ondersteund.
  • Alleen zone-redundante back-ups worden ondersteund.
  • Alleen Gen5-hardware wordt ondersteund.
  • Geo-herstel wordt momenteel niet ondersteund.
  • Zoneredundantie kan momenteel niet worden opgegeven bij het migreren van een bestaande database van een andere Azure SQL Database-servicelaag naar Hyperscale.

Belangrijk

Ten minste 1 rekenreplica met hoge beschikbaarheid en het gebruik van zone-redundante back-upopslag is vereist voor het inschakelen van de zoneredundante configuratie voor Hyperscale.

Een zoneredundante Hyperscale-database maken

Gebruik Azure PowerShell of de Azure CLI om een zoneredundante Hyperscale-database te maken. Controleer of u de nieuwste versie van de API hebt om ondersteuning te bieden voor recente wijzigingen.

Geef de -ZoneRedundant parameter op om zoneredundantie in te schakelen voor uw Hyperscale-database met behulp van Azure PowerShell. De database moet ten minste 1 replica met hoge beschikbaarheid en zone-redundante back-upopslag hebben.

Gebruik de volgende voorbeeldopdracht om zoneredundantie in te schakelen met Behulp van Azure PowerShell:

New-AzSqlDatabase -ResourceGroupName "ResourceGroup01" -ServerName "Server01" -DatabaseName "Database01" `
    -Edition "Hyperscale" -HighAvailabilityReplicaCount 1 -ZoneRedundant -BackupStorageRedundancy Zone

Een zoneredundante Hyperscale-database maken door een geo-replica te maken

Als u een bestaande Hyperscale-databasezone redundant wilt maken, gebruikt u Azure PowerShell of de Azure CLI om een zoneredundante Hyperscale-database te maken met behulp van actieve geo-replicatie. De geo-replica kan zich in dezelfde of een andere regio bevinden als de bestaande Hyperscale-database.

Geef de -ZoneRedundant parameter op om zoneredundantie in te schakelen voor de secundaire Hyperscale-database. De secundaire database moet ten minste 1 replica met hoge beschikbaarheid en zone-redundante back-upopslag hebben.

Gebruik de volgende voorbeeldopdracht om uw zoneredundante database te maken met behulp van Azure PowerShell:

New-AzSqlDatabaseSecondary -ResourceGroupName "myResourceGroup" -ServerName $sourceserver -DatabaseName "databaseName" -PartnerResourceGroupName "myPartnerResourceGroup" -PartnerServerName $targetserver -PartnerDatabaseName "zoneRedundantCopyOfMySampleDatabase” -ZoneRedundant -BackupStorageRedundancy Zone -HighAvailabilityReplicaCount 1

Een zoneredundante Hyperscale-database maken door een databasekopie te maken

Als u een bestaande Hyperscale-databasezone redundant wilt maken, gebruikt u Azure PowerShell of de Azure CLI om een zoneredundante Hyperscale-database te maken met behulp van databasekopie. De databasekopie kan zich in dezelfde of een andere regio bevinden als de bestaande Hyperscale-database.

Geef de -ZoneRedundant parameter op om zoneredundantie in te schakelen voor het kopiëren van uw Hyperscale-database. De databasekopie moet ten minste 1 replica met hoge beschikbaarheid en zone-redundante back-upopslag hebben.

Gebruik de volgende voorbeeldopdracht om uw zoneredundante database te maken met behulp van Azure PowerShell:

New-AzSqlDatabaseCopy -ResourceGroupName "myResourceGroup" -ServerName $sourceserver -DatabaseName "databaseName" -CopyResourceGroupName "myCopyResourceGroup" -CopyServerName $copyserver -CopyDatabaseName "zoneRedundantCopyOfMySampleDatabase” -ZoneRedundant -BackupStorageRedundancy Zone 

Versneld databaseherstel (ADR)

Versneld databaseherstel (ADR) is een nieuwe functie voor database-engine die de beschikbaarheid van databases aanzienlijk verbetert, met name in de aanwezigheid van langlopende transacties. ADR is momenteel beschikbaar voor Azure SQL Database, Azure SQL Managed Instance en Azure Synapse Analytics.

Fouttolerantie van toepassing testen

Hoge beschikbaarheid is een fundamenteel onderdeel van het SQL Database- en SQL Managed Instance-platform dat transparant werkt voor uw databasetoepassing. We erkennen echter dat u wellicht wilt testen hoe de automatische failoverbewerkingen die worden geïnitieerd tijdens geplande of niet-geplande gebeurtenissen van invloed zijn op een toepassing voordat u deze implementeert voor productie. U kunt handmatig een failover activeren door een speciale API aan te roepen om een database, een elastische pool of een beheerd exemplaar opnieuw te starten. In het geval van een zone-redundante serverloze of ingerichte Algemeen database of elastische pool, zou de API-aanroep ertoe leiden dat clientverbindingen naar de nieuwe primaire server in een beschikbaarheidszone anders worden omgeleid dan de beschikbaarheidszone van de oude primaire. Naast het testen van hoe failover van invloed is op bestaande databasesessies, kunt u ook controleren of de end-to-end-prestaties worden gewijzigd vanwege wijzigingen in de netwerklatentie. Omdat de herstartbewerking opdringerig is en een groot aantal ervan het platform kan benadrukken, wordt elke 15 minuten slechts één failover-aanroep toegestaan voor elke database, elastische pool of beheerd exemplaar.

Een failover kan worden gestart met behulp van PowerShell, REST API of Azure CLI:

Implementatietype PowerShell REST-API Azure CLI
Database Invoke-AzSqlDatabaseFailover Databasefailover az rest may be used to invoke a REST API call from Azure CLI (az rest may be used to invoke a REST API call from Azure CLI)
Elastische pool Invoke-AzSqlElasticPoolFailover Failover van elastische pool az rest may be used to invoke a REST API call from Azure CLI (az rest may be used to invoke a REST API call from Azure CLI)
Beheerd exemplaar Invoke-AzSqlInstanceFailover Beheerde exemplaren - Failover az sql mi failover may be used to invoke a REST API call from Azure CLI

Belangrijk

De failoveropdracht is niet beschikbaar voor leesbare secundaire replica's van Hyperscale-databases.

Conclusie

Azure SQL Database en Azure SQL Managed Instance een ingebouwde oplossing voor hoge beschikbaarheid, die diep is geïntegreerd met het Azure-platform. Het is afhankelijk van Service Fabric voor foutdetectie en -herstel, in Azure Blob-opslag voor gegevensbeveiliging en op Beschikbaarheidszones voor hogere fouttolerantie (zoals eerder vermeld in document dat nog niet van toepassing is op Azure SQL Managed Instance). Daarnaast gebruiken SQL Database en SQL Managed Instance de AlwaysOn-beschikbaarheidsgroeptechnologie uit het SQL Server exemplaar voor replicatie en failover. Dankzij de combinatie van deze technologieën kunnen toepassingen de voordelen van een gemengd opslagmodel volledig realiseren en de meest veeleisende SLA's ondersteunen.

Volgende stappen