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 de 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 ongeplande 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 downtimes waarvoor u de workload moet stoppen 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 IO-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 het Windows-besturingssysteem. De meeste gebruikers merken niet dat er continu upgrades 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 rekenkracht. In de volgende afbeelding ziet u vier verschillende knooppunten met de gescheiden reken- en opslaglagen.

Scheiding van rekenkracht en opslag

Het standaard beschikbaarheidsmodel bevat twee lagen:

  • Een staatloze rekenlaag waarmee het sqlservr.exe proces wordt uitgevoerd en alleen tijdelijke en in de cache opgeslagen gegevens bevat, zoals TempDB, modeldatabases op de gekoppelde SSD, en plancache, buffergroep en columnstore-pool in het geheugen. Dit staatloze knooppunt wordt beheerd door Azure Service Fabric waarmee de status van het knooppunt wordt geïnitialiseerd sqlservr.exe, beheerd en zo nodig een failover naar een ander knooppunt wordt uitgevoerd.
  • 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 99,99% beschikbaarheid, maar een zware workload kan tijdens de overgang enige prestatievermindering ervaren sinds het nieuwe sqlservr.exe proces begint met koude cache.

Algemeen zone-redundante beschikbaarheid van servicelagen

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

Zone-redundante configuratie voor de laag Algemeen 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 in 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, bufferpool en columnstore-pool in het geheugen. Dit staatloze knooppunt wordt beheerd door Azure Service Fabric waarmee sqlservr.exe wordt geïnitialiseerd, de status van het knooppunt wordt beheerd en zo nodig failover naar een ander knooppunt wordt uitgevoerd. Voor zone-redundante serverloze en ingerichte Algemeen databases zijn knooppunten met reservecapaciteit direct beschikbaar in andere Beschikbaarheidszones voor failover.

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

Zoneredundante configuratie voor Algemeen

Belangrijk

Voor Algemeen laag 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 is deze functie alleen beschikbaar wanneer de Gen5-hardware is geselecteerd.

Premium- en Bedrijfskritiek-servicelaag lokaal redundante beschikbaarheid

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

Cluster van database-engineknooppunten

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 lees-schrijfwerkbelastingen van klanten en maximaal drie secundaire replica's (compute en opslag) met kopieën van gegevens. Het primaire knooppunt pusht voortdurend wijzigingen naar de secundaire knooppunten in de 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 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 van 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 één storingspunt te voorkomen, wordt de besturingsring ook gedupliceerd in meerdere zones als drie gateway-ringen (GW). De routering naar een specifieke gatewayring wordt beheerd door Azure Traffic Manager (ATM). Omdat de zone-redundante configuratie in de Premium- of Bedrijfskritiek-servicelagen 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, inclusief catastrofale 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 verhoogde 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 upgrade van de reguliere servicelaag. Aan het einde van het proces wordt de database of pool gemigreerd van een zone-redundante ring naar één zonering of omgekeerd.

Belangrijk

Deze functie is niet beschikbaar in SQL Managed Instance. In SQL Database, wanneer u 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 door het volgende diagram:

Zone-redundante architectuur met hoge beschikbaarheid

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.

Functionele Hyperscale-architectuur

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-dekkende RBPEX-cache, TempDB, modeldatabase, enzovoort op de gekoppelde SSD, en plan cache, buffergroep en columnstore-pool in het geheugen. Deze staatloze laag bevat de primaire rekenreplica en eventueel een aantal secundaire rekenreplica's die kunnen fungeren als failoverdoelen.
  • 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 het dekken van 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 de langetermijnopslag van het transactielogboek worden uitgevoerd. Landingszone en langetermijnopslag maken gebruik van Azure Storage, dat 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 hyperscale-architectuur vastlopen of als rekenknooppunten mislukken.

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

Zie Database hoge beschikbaarheid in Hyperscale voor meer informatie over hoge beschikbaarheid in Hyperscale.

Zone-redundante beschikbaarheid van hyperscale-servicelaag

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, inclusief catastrofale datacentrumstoringen, zonder wijzigingen in de toepassingslogica. Alle Azure-regio's met Beschikbaarheidszones ondersteuning bieden voor zoneredundante Hyperscale-database.

Houd rekening met de volgende beperkingen:

  • 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.
  • Alleen Gen5-hardware wordt ondersteund.
  • Benoemde replica's worden 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 of geografisch 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 -RequestedServiceObjectiveName HS_Gen5_2'

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 

Redundante beschikbaarheid van hoofddatabasezone

In Azure SQL Database is een server een logische constructie die fungeert als een centraal beheerpunt voor een verzameling databases. Op serverniveau kunt u aanmeldingen, Azure Active Directory-verificatie, firewallregels, controleregels, beleid voor detectie van bedreigingen en groepen voor automatische failover beheren. Gegevens met betrekking tot sommige van deze functies, zoals aanmeldingen en firewallregels, worden opgeslagen in de hoofddatabase. Op dezelfde manier worden gegevens voor sommige DMV's, bijvoorbeeld sys.resource_stats, ook opgeslagen in de hoofddatabase.

Wanneer een database met een zone-redundante configuratie wordt gemaakt op een logische server, wordt de hoofddatabase die aan de server is gekoppeld, ook automatisch zone-redundant gemaakt. Dit zorgt ervoor dat toepassingen die gebruikmaken van de database in een zonegebonden storing niet worden beïnvloed omdat functies die afhankelijk zijn van de hoofddatabase, zoals aanmeldingen en firewallregels, nog steeds beschikbaar zijn. Het maken van zone-redundante hoofddatabases is een asynchroon proces en het duurt enige tijd om op de achtergrond te voltooien.

Wanneer geen van de databases op een server zone-redundant is of wanneer u een lege server maakt, is de hoofddatabase die is gekoppeld aan de server niet zone-redundant.

U kunt Azure PowerShell of de Azure CLI of de REST API gebruiken om de ZoneRedundant eigenschap voor de hoofddatabase te controleren:

Gebruik de volgende voorbeeldopdracht om de waarde van de eigenschap ZoneRedundant voor de hoofddatabase te controleren.

Get-AzSqlDatabase -ResourceGroupName "myResourceGroup" -ServerName "myServerName" -DatabaseName "master"

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 beschikken over een ingebouwde oplossing voor hoge beschikbaarheid, die nauw is geïntegreerd met het Azure-platform. Het is afhankelijk van Service Fabric voor foutdetectie en herstel, in Azure Blob Storage voor gegevensbeveiliging en op Beschikbaarheidszones voor hogere fouttolerantie (zoals eerder vermeld in het 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