Hoge beschikbaarheid voor Azure SQL Database

Van toepassing op: Azure SQL Database

In dit artikel wordt de architectuur voor hoge beschikbaarheid in Azure SQL Database beschreven.

Overzicht

Het doel van de architectuur voor hoge beschikbaarheid in Azure SQL Database is het minimaliseren van de impact op workloads van klanten van serviceonderhoudsbewerkingen en storingen. Zie sla voor Azure SQL Database voor informatie over specifieke SLA's voor verschillende servicelagen.

SQL Database wordt uitgevoerd op de nieuwste stabiele versie van de SQL Server Database Engine op het Windows-besturingssysteem met alle toepasselijke patches. SQL Database verwerkt automatisch kritieke onderhoudstaken, zoals patching, back-ups, Windows- en SQL-engine-upgrades en niet-geplande gebeurtenissen, zoals onderliggende hardware, software of netwerkfouten. Wanneer een database of elastische pool in SQL Database is gepatcht of een failover-overschakeling uitvoert, is de downtime niet van invloed als u logica voor opnieuw proberen in uw app gebruikt. SQL Database kan snel worden hersteld, zelfs in de meest kritieke omstandigheden, zodat uw gegevens altijd beschikbaar zijn. De meeste gebruikers merken niet dat upgrades continu worden uitgevoerd.

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 is in uw softwarearchitectuur.

Er zijn drie architectuurmodellen voor hoge beschikbaarheid:

  • Extern opslagmodel dat is gebaseerd op een scheiding van rekenkracht en opslag. Het is afhankelijk van de hoge beschikbaarheid en betrouwbaarheid van de externe opslaglaag. Deze architectuur is gericht op budgetgerichte zakelijke toepassingen die prestatievermindering tijdens onderhoudsactiviteiten kunnen tolereren.
  • Lokaal opslagmodel 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.
  • Hyperscale-model dat gebruikmaakt van een gedistribueerd systeem met maximaal beschikbare onderdelen, zoals rekenknooppunten, paginaservers, logboekservice en permanente opslag. Elk onderdeel dat een Hyperscale-database ondersteunt, biedt een eigen redundantie en tolerantie voor fouten. Rekenknooppunten, paginaservers en logboekservice worden uitgevoerd in Azure Service Fabric, waarmee de status van elk onderdeel wordt beheerd en waar nodig failovers worden uitgevoerd naar beschikbare gezonde knooppunten. Permanente opslag maakt gebruik van Azure Storage met de systeemeigen mogelijkheden voor hoge beschikbaarheid en redundantie. Zie de Hyperscale-architectuur voor meer informatie.

Binnen elk van de drie beschikbaarheidsmodellen ondersteunt SQL Database lokale redundantie en zonegebonden redundantieopties. Lokale redundantie biedt tolerantie binnen een datacenter, terwijl zonegebonden redundantie de tolerantie verder verbetert door te beschermen tegen storingen in een beschikbaarheidszone binnen een regio.

In de volgende tabel ziet u de beschikbaarheidsopties op basis van servicelagen:

Servicelaag Model voor hoge beschikbaarheid lokaal redundante beschikbaarheid Zone-redundante beschikbaarheid
Algemeen gebruik (vCore) Externe opslag Ja Ja
Bedrijfskritiek (vCore) Lokale opslag Ja Ja
Hyperscale (vCore) Hyperscale Ja Ja
Basic (DTU) Externe opslag Ja Nr.
Standard (DTU) Externe opslag Ja Nr.
Premium (DTU) Lokale opslag Ja Ja

Lokaal redundante beschikbaarheid

Lokaal redundante beschikbaarheid is gebaseerd op het opslaan van uw database naar lokaal redundante opslag (LRS), waarmee uw gegevens drie keer worden gekopieerd binnen één datacenter in de primaire regio en uw gegevens worden beschermd in het geval van lokale storingen, zoals een klein netwerk of stroomstoring. LRS is de laagst mogelijke redundantieoptie en biedt de minst duurzaamheid in vergelijking met andere opties. Als een grootschalige ramp, zoals brand of overstroming, zich in een regio voordoet, kunnen alle replica's van een opslagaccount met LRS verloren of onherstelbaar zijn. Als zodanig kunt u uw gegevens verder beveiligen wanneer u de optie voor lokaal redundante beschikbaarheid gebruikt, overwegen om een tolerantere opslagoptie te gebruiken voor uw databaseback-ups. Dit geldt niet voor Hyperscale-databases, waarbij dezelfde opslag wordt gebruikt voor zowel gegevensbestanden als back-ups.

Lokaal redundante beschikbaarheid is beschikbaar voor alle databases in alle servicelagen en RPO (Recovery Point Objective), wat aangeeft dat de hoeveelheid gegevensverlies nul is.

Servicelagen Basic, Standard en Algemeen gebruik

De servicelagen Basic, Standard en Algemeen gebruik maken gebruik van het beschikbaarheidsmodel voor externe opslag voor zowel serverloze als ingerichte berekeningen. In de volgende afbeelding ziet u vier verschillende knooppunten met de gescheiden lagen voor berekening en opslag.

Diagram showing separation of compute and storage.

Het beschikbaarheidsmodel voor externe opslag bevat twee lagen:

  • Een staatloze rekenlaag die het database-engineproces uitvoert en alleen tijdelijke en in de cache opgeslagen gegevens bevat, zoals de tempdb en model databases op de gekoppelde SSD, en plan cache, buffergroep en columnstore-pool in het geheugen. Dit staatloze knooppunt wordt beheerd door Azure Service Fabric waarmee de database-engine wordt geïnitialiseerd, de status van het knooppunt wordt beheerd en indien nodig een failover naar een ander knooppunt wordt uitgevoerd.
  • Een stateful gegevenslaag met de databasebestanden (.mdf en .ldf) die zijn opgeslagen in Azure Blob Storage. Azure Blob Storage heeft ingebouwde functies voor gegevensbeschikbaarheid en redundantie. Het garandeert dat elke record in het logboekbestand of de pagina in het gegevensbestand behouden blijft, zelfs als het proces van de database-engine vastloopt.

Wanneer de database-engine of het besturingssysteem wordt bijgewerkt of er een fout wordt gedetecteerd, verplaatst Azure Service Fabric het stateless database-engineproces 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 database-engineproces. Dit proces garandeert hoge beschikbaarheid, maar een zware workload kan tijdens de overgang enige prestatievermindering ervaren omdat het nieuwe database-engineproces begint met koude cache.

Premium- en Bedrijfskritiek-servicelaag

Premium- en Bedrijfskritiek-servicelagen maken gebruik van het lokale opslagbeschikbaarheidsmodel, dat rekenresources (database-engineproces) en opslag (lokaal gekoppelde SSD) op één knooppunt integreert. Hoge beschikbaarheid wordt bereikt door zowel rekenkracht als opslag te repliceren naar extra knooppunten.

Diagram of a 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 lees-/schrijfwerkbelastingen van klanten en maximaal drie secundaire replica's (compute en opslag) die kopieën van gegevens bevatten. De primaire replica pusht voortdurend wijzigingen naar de secundaire replica's op volgorde en zorgt ervoor dat de gegevens op een voldoende aantal secundaire replica's worden bewaard voordat elke transactie wordt doorgevoerd. Dit proces garandeert dat als de primaire replica of een leesbare secundaire replica om welke reden dan ook vastloopt, er altijd een volledig gesynchroniseerde replica is om een failover naar uit te voeren. De failover wordt gestart door Azure Service Fabric. Zodra een secundaire replica de nieuwe primaire replica wordt, wordt er een andere secundaire replica gemaakt om ervoor te zorgen dat het cluster voldoende replica's heeft om quorum te behouden. Zodra een failover is voltooid, worden Azure SQL-verbindingen automatisch omgeleid naar de nieuwe primaire replica of leesbare secundaire replica.

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

Hyperscale-servicelaag

De architectuur van de Hyperscale-servicelaag wordt beschreven in de architectuur van gedistribueerde functies.

Diagram showing Hyperscale functional architecture.

Het beschikbaarheidsmodel in Hyperscale bevat vier lagen:

  • Een staatloze rekenlaag waarop de database-engine wordt uitgevoerd, verwerkt en bevat alleen tijdelijke en in de cache opgeslagen gegevens, zoals niet-bedekte RBPEX-cache tempdb en model databases, 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 gevormd door paginaservers. Deze laag is de gedistribueerde opslagengine voor de database-engineprocessen 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-actief-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 van het transactielogboek 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 de 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 waar nodig failovers worden uitgevoerd naar beschikbare gezonde knooppunten.

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

Zone-redundante beschikbaarheid

Zone-redundante beschikbaarheid is gebaseerd op het opslaan van uw database naar zone-redundante opslag (ZRS), waarmee uw gegevens worden gekopieerd naar drie Azure-beschikbaarheidszones in de primaire regio. Elke beschikbaarheidszone is een afzonderlijke fysieke locatie met onafhankelijke voeding, koeling en netwerken.

Zone-redundante beschikbaarheid is beschikbaar voor databases in de servicelagen Algemeen gebruik, Premium, Bedrijfskritiek en Hyperscale van het vCore-aankoopmodel, en niet voor de Basic- en Standard-servicelagen van het aankoopmodel op basis van DTU. Zone-redundante beschikbaarheid zorgt ervoor dat Recovery Point Objective (RPO) aangeeft dat de hoeveelheid gegevensverlies nul is.

Servicelaag voor Algemeen gebruik

Zone-redundante configuratie voor de servicelaag Algemeen gebruik wordt aangeboden voor zowel serverloze als ingerichte rekenkracht voor databases in het vCore-aankoopmodel. 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 storingen, inclusief catastrofale datacenterstoringen, zonder wijzigingen in de toepassingslogica.

Zone-redundante configuratie voor de laag 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 de tempdb en model databases op de gekoppelde SSD, en plancache, buffergroep 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 indien nodig een failover naar een ander knooppunt wordt uitgevoerd. 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 Algemeen gebruik wordt geïllustreerd in het volgende diagram:

Diagram of Zone redundant configuration for General Purpose.

Houd rekening met het volgende bij het configureren van uw algemene databases met zoneredundantie:

  • Voor de laag Algemeen gebruik is de zone-redundante configuratie algemeen beschikbaar in de volgende regio's:
    • (Afrika) Zuid-Afrika - noord
    • (Azië en Stille Oceaan) Australië - oost
    • (Azië en Stille Oceaan) Azië - oost
    • (Azië en Stille Oceaan) Japan - oost
    • (Azië en Stille Oceaan) Korea - centraal
    • (Azië en Stille Oceaan) Azië - zuidoost
    • (Azië en Stille Oceaan) India - centraal
    • (Azië en Stille Oceaan) China - noord 3
    • (Azië en Stille Oceaan) UAE - noord
    • (Europa) Frankrijk - centraal
    • (Europa) Duitsland - west-centraal
    • (Europa) Italië - noord
    • (Europa) Europa - noord
    • (Europa) Noorwegen - oost
    • (Europa) Polen - centraal
    • (Europa) Europa - west
    • (Europa) UK - zuid
    • (Europa) Zwitserland - noord
    • (Europa) Zweden - centraal
    • (Midden-Oosten) Israël - centraal
    • (Midden-Oosten) Qatar - centraal
    • (Noord-Amerika) Canada - centraal
    • (Noord-Amerika) VS - oost
    • (Noord-Amerika) VS - oost 2
    • (Noord-Amerika) VS - zuid-centraal
    • (Noord-Amerika) VS - west 2
    • (Noord-Amerika) VS - west 3
    • (Zuid-Amerika) Brazilië - zuid
  • Voor zone-redundante beschikbaarheid is het kiezen van een ander onderhoudsvenster dan de standaardinstelling momenteel beschikbaar in bepaalde regio's.
  • Zone-redundante configuratie is alleen beschikbaar in SQL Database wanneer standaardreekshardware (Gen5) is geselecteerd.
  • Zoneredundantie is niet beschikbaar voor Basic- en Standard-servicelagen in het DTU-aankoopmodel.

Premium- en Bedrijfskritiek-servicelagen

Standaard wordt het cluster met knooppunten voor het lokale opslag beschikbaarheidsmodel gemaakt in hetzelfde datacenter. Met de introductie van Azure Beschikbaarheidszones kan SQL Database verschillende replica's van een Premium- of Bedrijfskritiek-database in verschillende beschikbaarheidszones in dezelfde regio plaatsen. Als u een single point of failure wilt 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. 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 en elastische pools tolerant maken voor een veel grotere set fouten, inclusief catastrofale datacenterstoringen, zonder wijzigingen in de toepassingslogica. U kunt ook bestaande Premium- of Bedrijfskritiek-databases of elastische pools converteren naar zone-redundante configuratie.

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

Diagram of the zone-redundant high availability architecture.

Houd rekening met het volgende bij het configureren van uw Premium- of Bedrijfskritiek-databases met zoneredundantie:

Hyperscale-servicelaag

Het is mogelijk om zoneredundantie te configureren voor databases in de Hyperscale-servicelaag. Raadpleeg zoneredundante Hyperscale-database maken voor meer informatie.

Als u deze configuratie inschakelt, zorgt u 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 catastrofale storingen in datacentrums, zonder wijzigingen in de toepassingslogica. Alle Azure-regio's met Beschikbaarheidszones ondersteuning voor zoneredundante Hyperscale-database.

In het volgende diagram ziet u de onderliggende architectuur voor zoneredundante Hyperscale-databases:

Diagram showing the underlying architecture of zone redundant Hyperscale databases.

Overweeg de volgende beperkingen:

  • Zone-redundante 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 zone-redundante 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 databaseback-upopslag van het doel verschilt van de brondatabase, is de kopieerbewerking een grootte van de gegevensbewerking.

  • Voor zone-redundante beschikbaarheid is het kiezen van een ander onderhoudsvenster dan de standaardinstelling momenteel beschikbaar in bepaalde regio's.

  • Benoemde replica's worden momenteel niet ondersteund.

  • Er is momenteel geen optie om zoneredundantie op te geven bij het migreren van een database naar Hyperscale met behulp van Azure Portal. Zoneredundantie kan echter worden opgegeven met behulp van Azure PowerShell, Azure CLI of de REST API bij het migreren van een bestaande database van een andere Azure SQL Database-servicelaag naar Hyperscale. Hier volgt een voorbeeld met Azure CLI:

    az sql db update --resource-group "myRG" --server "myServer" --name "myDB" --edition Hyperscale --zone-redundant true

  • 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 zone-redundante configuratie voor Hyperscale.

Redundante beschikbaarheid van databasezone

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, verificatiemethode, firewallregels, controleregels, beleidsregels voor bedreigingsdetectie en failovergroepen beheren. Gegevens met betrekking tot sommige van deze functies, zoals aanmeldingen en firewallregels, worden opgeslagen in de master database. Op dezelfde manier worden gegevens voor sommige DMV's, bijvoorbeeld sys.resource_stats, ook opgeslagen in de master database.

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

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

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

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

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

Fouttolerantie van toepassing testen

Hoge beschikbaarheid is een fundamenteel onderdeel van het SQL Database-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 een failover handmatig activeren door een speciale API aan te roepen om een database of een elastische pool opnieuw te starten. In het geval van een zone-redundante serverloze of ingerichte database voor algemeen gebruik of elastische pool, zou de API-aanroep ertoe leiden dat clientverbindingen naar de nieuwe primaire 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 intrusief is en een groot aantal ervan het platform kan belasten, wordt er elke 15 minuten slechts één failover-aanroep toegestaan voor elke database of elastische pool.

Raadpleeg de controlelijst voor hoge beschikbaarheid en herstel na noodgevallen in Azure SQL Database voor meer informatie over hoge beschikbaarheid en herstel na noodgevallen in Azure SQL Database.

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 kan worden gebruikt om een REST API-aanroep vanuit Azure CLI aan te roepen
Elastische pool Invoke-AzSqlElasticPoolFailover Failover van elastische pool az rest kan worden gebruikt om een REST API-aanroep vanuit Azure CLI aan te roepen

Belangrijk

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

Conclusie

Azure SQL Database biedt 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. Daarnaast maakt SQL Database gebruik van de AlwaysOn-beschikbaarheidsgroeptechnologie van SQL Server voor gegevenssynchronisatie 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