Disponibilità elevata e database SQL di AzureHigh-availability and Azure SQL Database

L'obiettivo dell'architettura a disponibilità elevata nel database SQL di Azure è garantire che il database sia operativo per almeno il 99,99% del tempo. per altre informazioni su un contratto di sicurezza specifico per i diversi livelli, vedere il contratto di contratto per il database SQLdi Azure, senza preoccuparsi dell'effetto delle operazioni di manutenzione e delle interruzioni.The goal of the High Availability architecture in Azure SQL Database is to guarantee that your database is up and running minimum of 99.99% of time (For more information regarding specific SLA for different tiers, Please refer SLA for Azure SQL Database), without worrying about the impact of maintenance operations and outages. Azure gestisce automaticamente le attività di manutenzione critiche, ad esempio l'applicazione di patch, i backup, gli aggiornamenti di Windows e SQL, nonché eventi non pianificati, ad esempio hardware, software o errori di rete sottostanti.Azure automatically handles critical servicing tasks, such as patching, backups, Windows and SQL upgrades, as well as unplanned events such as underlying hardware, software, or network failures. Quando l'istanza di SQL sottostante viene patchata o viene eseguito il failover, il tempo di inattività non è evidente se si Usa la logica di ripetizione dei tentativi nell'app.When the underlying SQL instance is patched or fails over, the downtime is not noticeable if you employ retry logic in your app. Database SQL di Azure può effettuare rapidamente il recupero anche nei casi più critici garantendo che i dati siano sempre disponibili.Azure SQL Database can quickly recover even in the most critical circumstances ensuring that your data is always available.

La soluzione a disponibilità elevata è progettata per garantire che i dati di cui è stato eseguito il commit non vengano mai persi a causa di errori, che le operazioni di manutenzione non influiscano sul carico di lavoro e che il database non sia un singolo punto di guasto nell'architettura software.The high availability solution is designed to ensure that committed data is never lost due to failures, that maintenance operations do not affect your workload, and that the database will not be a single point of failure in your software architecture. Non ci sono finestre di manutenzione o tempi di inattività che richiedono l'arresto del carico di lavoro mentre il database viene aggiornato o se ne esegue la manutenzione.There are no maintenance windows or downtimes that should require you to stop the workload while the database is upgraded or maintained.

Sono disponibili due modelli architetturali a disponibilità elevata usati nel database SQL di Azure:There are two high-availability architectural models that are used in Azure SQL Database:

  • Modello di disponibilità standard basato su una separazione tra calcolo e archiviazione.Standard availability model that is based on a separation of compute and storage. Si basa sull'affidabilità e sulla disponibilità elevata del livello di archiviazione remoto.It relies on high availability and reliability of the remote storage tier. Questa architettura è destinata alle applicazioni aziendali orientate al budget che possono tollerare un calo delle prestazioni durante le attività di manutenzione.This architecture targets budget-oriented business applications that can tolerate some performance degradation during maintenance activities.
  • Modello di disponibilità Premium basato su un cluster di processi del motore di database.Premium availability model that is based on a cluster of database engine processes. Si basa sul fatto che esiste sempre un quorum dei nodi del motore di database disponibili.It relies on the fact that there is always a quorum of available database engine nodes. Questa architettura è destinata alle applicazioni mission-critical con prestazioni di i/o elevate, velocità elevata delle transazioni e garantisce un effetto minimo sulle prestazioni del carico di lavoro durante le attivitàThis architecture targets mission critical applications with high IO performance, high transaction rate and guarantees minimal performance impact to your workload during maintenance activities.

Il database SQL di Azure viene eseguito sulla versione stabile più recente di SQL Server motore di database e sul sistema operativo Windows e la maggior parte degli utenti non noterà che gli aggiornamenti vengono eseguiti in modo continuo.Azure SQL Database runs on the latest stable version of SQL Server Database Engine and Windows OS, and most users would not notice that upgrades are performed continuously.

Disponibilità dei livelli di servizio Basic, Standard e Utilizzo genericoBasic, Standard, and General Purpose service tier availability

Questi livelli di servizio sfruttano l'architettura di disponibilità standard.These service tiers leverage the standard availability architecture. Nella figura seguente sono illustrati quattro nodi diversi con i livelli di calcolo e archiviazione separati.The following figure shows four different nodes with the separated compute and storage layers.

Separazione di calcolo e archiviazione

Il modello di disponibilità standard include due livelli:The standard availability model includes two layers:

  • Livello di calcolo senza stato che esegue il processo di sqlservr.exe e contiene solo dati temporanei e memorizzati nella cache, ad esempio TempDB, i database modello nell'unità SSD collegata e la cache dei piani, il pool di buffer e il pool columnstore in memoria.A stateless compute layer that runs the sqlservr.exe process and contains only transient and cached data, such as TempDB, model databases on the attached SSD, and plan cache, buffer pool, and columnstore pool in memory. Questo nodo senza stato viene gestito da Azure Service Fabric che Inizializza sqlservr.exe, controlla l'integrità del nodo ed esegue il failover in un altro nodo, se necessario.This stateless node is operated by Azure Service Fabric that initializes sqlservr.exe, controls health of the node, and performs failover to another node if necessary.
  • Un livello dati con stato con i file di database (con estensione MDF/ldf) archiviati nell'archivio BLOB di Azure.A stateful data layer with the database files (.mdf/.ldf) that are stored in Azure Blob storage. Archiviazione BLOB di Azure include funzionalità integrate di disponibilità e ridondanza dei dati.Azure blob storage has built-in data availability and redundancy feature. Garantisce che tutti i record nel file di log o nella pagina del file di dati verranno conservati anche se SQL Server processo si arresta in modo anomalo.It guarantees that every record in the log file or page in the data file will be preserved even if SQL Server process crashes.

Ogni volta che il motore di database o il sistema operativo viene aggiornato o viene rilevato un errore, Azure Service Fabric sposterà il processo di SQL Server senza stato in un altro nodo di calcolo senza stato con capacità sufficiente.Whenever the database engine or the operating system is upgraded, or a failure is detected, Azure Service Fabric will move the stateless SQL Server process to another stateless compute node with sufficient free capacity. I dati nell'archivio BLOB di Azure non sono interessati dallo spostamento e i file di dati e di log vengono associati al processo di SQL Server appena inizializzato.Data in Azure Blob storage is not affected by the move, and the data/log files are attached to the newly initialized SQL Server process. Questo processo garantisce una disponibilità del 99,99%, ma un carico di lavoro elevato può subire un calo delle prestazioni durante la transizione, perché la nuova istanza di SQL Server inizia con la cache a freddo.This process guarantees 99.99% availability, but a heavy workload may experience some performance degradation during the transition since the new SQL Server instance starts with cold cache.

Disponibilità dei livelli di servizio Premium e Business criticalPremium and Business Critical service tier availability

I livelli di servizio Premium e business critical sfruttano il modello di disponibilità Premium, che integra le risorse di calcolo (SQL Server processo di motore di database) e l'archiviazione (SSD collegato localmente) in un singolo nodo.Premium and Business Critical service tiers leverage the Premium availability model, which integrates compute resources (SQL Server Database Engine process) and storage (locally attached SSD) on a single node. Per ottenere la disponibilità elevata, è possibile eseguire la replica di risorse di calcolo e di archiviazione in nodi aggiuntivi creando un cluster da tre a quattro nodi.High availability is achieved by replicating both compute and storage to additional nodes creating a three to four-node cluster.

Cluster di nodi di motore di database

I file di database sottostanti (con estensione MDF/ldf) vengono inseriti nell'archivio SSD collegato per fornire i/o a latenza molto bassa per il carico di lavoro.The underlying database files (.mdf/.ldf) are placed on the attached SSD storage to provide very low latency IO to your workload. La disponibilità elevata viene implementata utilizzando una tecnologia simile a SQL Server Always on gruppi di disponibilità.High availability is implemented using a technology similar to SQL Server Always On Availability Groups. Il cluster include una singola replica primaria (SQL Server processo) accessibile per i carichi di lavoro dei clienti in lettura/scrittura e fino a tre repliche secondarie (calcolo e archiviazione) contenenti copie di dati.The cluster includes a single primary replica (SQL Server process) that is accessible for read-write customer workloads, and up to three secondary replicas (compute and storage) containing copies of data. Il nodo primario esegue costantemente il push delle modifiche nei nodi secondari in ordine e garantisce che i dati vengano sincronizzati con almeno una replica secondaria prima di eseguire il commit di ogni transazione.The primary node constantly pushes changes to the secondary nodes in order and ensures that the data is synchronized to at least one secondary replica before committing each transaction. Questo processo garantisce che in caso di arresto anomalo del nodo primario per qualsiasi motivo, è sempre presente un nodo completamente sincronizzato in cui eseguire il failover.This process guarantees that if the primary node crashes for any reason, there is always a fully synchronized node to fail over to. Il failover viene avviato dal Service Fabric di Azure.The failover is initiated by the Azure Service Fabric. Quando la replica secondaria diventa il nuovo nodo primario, viene creata un'altra replica secondaria per garantire che il cluster disponga di un numero sufficiente di nodi (set di quorum).Once the secondary replica becomes the new primary node, another secondary replica is created to ensure the cluster has enough nodes (quorum set). Al termine del failover, le connessioni SQL vengono reindirizzate automaticamente al nuovo nodo primario.Once failover is complete, SQL connections are automatically redirected to the new primary node.

Come vantaggio aggiuntivo, il modello di disponibilità Premium include la possibilità di reindirizzare le connessioni SQL di sola lettura a una delle repliche secondarie.As an extra benefit, the premium availability model includes the ability to redirect read-only SQL connections to one of the secondary replicas. Questa funzionalità è chiamata scalabilità in lettura. Offre una capacità di calcolo aggiuntiva del 100% senza costi aggiuntivi per le operazioni di sola lettura non caricate, ad esempio i carichi di lavoro analitici, dalla replica primaria.This feature is called Read Scale-Out. It provides 100% additional compute capacity at no extra charge to off-load read-only operations, such as analytical workloads, from the primary replica.

Disponibilità del livello di servizio con iperscalabilitàHyperscale service tier availability

L'architettura del livello di servizio con iperscalabilità è descritta in architettura di funzioni distribuite.The Hyperscale service tier architecture is described in Distributed functions architecture.

Architettura funzionale iperscalabile

Il modello di disponibilità in iperscalabilità include quattro livelli:The availability model in Hyperscale includes four layers:

  • Livello di calcolo senza stato che esegue i processi di sqlservr.exe e contiene solo dati temporanei e memorizzati nella cache, ad esempio la cache RBPEX non coprente, TempDB, il database modello e così via, nell'unità SSD collegata e nella cache dei piani, nel pool di buffer e nel pool columnstore in memoria.A stateless compute layer that runs the sqlservr.exe processes and contains only transient and cached data, such as non-covering RBPEX cache, TempDB, model database, etc. on the attached SSD, and plan cache, buffer pool, and columnstore pool in memory. Questo livello senza stato include la replica di calcolo primaria e, facoltativamente, un numero di repliche di calcolo secondarie che possono fungere da destinazioni di failover.This stateless layer includes the primary compute replica and optionally a number of secondary compute replicas that can serve as failover targets.
  • Livello di archiviazione senza stato formato da server di pagine.A stateless storage layer formed by page servers. Questo livello è il motore di archiviazione distribuito per i processi di sqlservr.exe in esecuzione sulle repliche di calcolo.This layer is the distributed storage engine for the sqlservr.exe processes running on the compute replicas. Ogni server della pagina contiene solo dati temporanei e memorizzati nella cache, ad esempio la copertura della cache RBPEX nell'unità SSD collegata e le pagine di dati memorizzate nella cache.Each page server contains only transient and cached data, such as covering RBPEX cache on the attached SSD, and data pages cached in memory. Ogni server di pagina dispone di un server di paging associato in una configurazione Active-Active per fornire bilanciamento del carico, ridondanza e disponibilità elevata.Each page server has a paired page server in an active-active configuration to provide load balancing, redundancy, and high availability.
  • Un livello di archiviazione del log delle transazioni con stato formato dal nodo di calcolo che esegue il processo del servizio di log, l'area di destinazione del log delle transazioni e l'archiviazione a lungo termine del log delle transazioni.A stateful transaction log storage layer formed by the compute node running the Log service process, the transaction log landing zone, and transaction log long term storage. La zona di destinazione e l'archiviazione a lungo termine usano archiviazione di Azure, che fornisce disponibilità e ridondanza per il log delle transazioni, garantendo la durabilità dei dati per le transazioni di cuiLanding zone and long term storage use Azure Storage, which provides availability and redundancy for transaction log, ensuring data durability for committed transactions.
  • Un livello di archiviazione dati con stato con i file di database (con estensione MDF/NDF) archiviati in archiviazione di Azure e aggiornati dai server delle pagine.A stateful data storage layer with the database files (.mdf/.ndf) that are stored in Azure Storage and are updated by page servers. Questo livello usa le funzionalità di disponibilità e ridondanza dei dati di archiviazione di Azure.This layer uses data availability and redundancy features of Azure Storage. Garantisce che ogni pagina di un file di dati venga mantenuta anche se i processi in altri livelli di architettura iperscalare si arrestano in modo anomalo o se i nodi di calcolo hanno esito negativo.It guarantees that every page in a data file will be preserved even if processes in other layers of Hyperscale architecture crash, or if compute nodes fail.

I nodi di calcolo in tutti i livelli di iperscalabilità vengono eseguiti in Service Fabric di Azure, che controlla l'integrità di ogni nodo ed esegue i failover ai nodi integri disponibili se necessario.Compute nodes in all Hyperscale layers run on Azure Service Fabric, which controls health of each node and performs failovers to available healthy nodes as necessary.

Per altre informazioni sulla disponibilità elevata in iperscalabilità, vedere disponibilità elevata del database in iperscalabilità.For more information on high availability in Hyperscale, see Database High Availability in Hyperscale.

Configurazione con ridondanza della zonaZone redundant configuration

Per impostazione predefinita, il cluster di nodi per il modello di disponibilità Premium viene creato nello stesso data center.By default, the cluster of nodes for the premium availability model is created in the same datacenter. Con l'introduzione di zone di disponibilità di Azure, il database SQL può inserire repliche diverse del database di business critical a diverse zone di disponibilità nella stessa area.With the introduction of Azure Availability Zones, SQL Database can place different replicas of the Business Critical database to different availability zones in the same region. Per eliminare un singolo punto di guasto, viene duplicato anche l'anello di controllo in più zone come tre anelli gateway.To eliminate a single point of failure, the control ring is also duplicated across multiple zones as three gateway rings (GW). Il routing a un anello gateway specifico è controllato da Gestione traffico di Azure.The routing to a specific gateway ring is controlled by Azure Traffic Manager (ATM). Poiché la configurazione con ridondanza della zona nei livelli di servizio Premium o business critical non crea ridondanza aggiuntiva del database, è possibile abilitarla senza costi aggiuntivi.Because the zone redundant configuration in the Premium or Business Critical service tiers does not create additional database redundancy, you can enable it at no extra cost. Selezionando una configurazione con ridondanza della zona, è possibile rendere i database Premium o business critical resilienti a un set molto più ampio di errori, incluse interruzioni irreversibili del Data Center, senza apportare modifiche alla logica dell'applicazione.By selecting a zone redundant configuration, you can make your Premium or Business Critical databases resilient to a much larger set of failures, including catastrophic datacenter outages, without any changes to the application logic. È anche possibile convertire qualsiasi pool o database premium o business critical alla configurazione con ridondanza della zona.You can also convert any existing Premium or Business Critical databases or pools to the zone redundant configuration.

Poiché i database con ridondanza della zona hanno repliche in data center diversi con una certa distanza tra di essi, la latenza di rete aumentata può aumentare il tempo di commit e quindi influisca sulle prestazioni di alcuni carichi di lavoro OLTP.Because the zone redundant databases have replicas in different datacenters with some distance between them, the increased network latency may increase the commit time and thus impact the performance of some OLTP workloads. È sempre possibile tornare alla configurazione a singola zona disabilitando l'impostazione di ridondanza della zona.You can always return to the single-zone configuration by disabling the zone redundancy setting. Questo processo è un'operazione online simile al normale aggiornamento del livello di servizio.This process is an online operation similar to the regular service tier upgrade. Al termine del processo, viene eseguita la migrazione del database o del pool da un anello con ridondanza della zona a un anello a singola zona o viceversa.At the end of the process, the database or pool is migrated from a zone redundant ring to a single zone ring or vice versa.

Importante

I database con ridondanza della zona e i pool elastici sono attualmente supportati solo nei livelli di servizio Premium e business critical in aree selezionate.Zone redundant databases and elastic pools are currently only supported in the Premium and Business Critical service tiers in select regions. Quando si usa il livello di business critical, la configurazione con ridondanza della zona è disponibile solo quando è selezionato l'hardware di calcolo quinta generazione.When using the Business Critical tier, zone redundant configuration is only available when the Gen5 compute hardware is selected. Per informazioni aggiornate sulle aree che supportano i database con ridondanza della zona, vedere supporto dei servizi in base all'area.For up to date information about the regions that support zone redundant databases, see Services support by region.
Questa funzionalità non è disponibile nell'istanza gestita.This feature is not available in Managed instance.

La versione con ridondanza della zona dell'architettura a disponibilità elevata è illustrata nel diagramma seguente:The zone redundant version of the high availability architecture is illustrated by the following diagram:

architettura a disponibilità elevata con ridondanza della zona

Ripristino accelerato del databaseAccelerated Database Recovery (ADR)

Accelerated Database Recovery (ADR) è una nuova funzionalità del motore di database SQL che migliora notevolmente la disponibilità dei database, soprattutto in presenza di transazioni a esecuzione prolungata.Accelerated Database Recovery (ADR) is a new SQL database engine feature that greatly improves database availability, especially in the presence of long running transactions. Questa funzionalità è attualmente disponibile per database singoli, pool elastici e Azure SQL Data Warehouse.ADR is currently available for single databases, elastic pools, and Azure SQL Data Warehouse.

Test della resilienza degli errori delle applicazioniTesting application fault resiliency

La disponibilità elevata è una parte fondamentale della piattaforma del database SQL di Azure che funziona in modo trasparente per l'applicazione di database.High availability is a fundamental part of Azure SQL Database platform that works transparently for your database application. Tuttavia, è possibile che si desideri testare il modo in cui le operazioni di failover automatico avviate durante gli eventi pianificati o non pianificati avranno un effetto sull'applicazione prima di distribuirla nell'ambiente di produzione.However, we recognize that you may want to test how the automatic failover operations initiated during planned or unplanned events would impact the application before you deploy it to production. È possibile chiamare un'API speciale per riavviare un database o un pool elastico, che attiverà a sua volta un failover.You can call a special API to restart a database or an elastic pool, which will in turn trigger a failover. Nel caso di un database con ridondanza della zona o di un pool elastico, la chiamata API comporterebbe il reindirizzamento delle connessioni client al nuovo primario in una zona di disponibilità diversa dalla zona di disponibilità della replica primaria precedente.In the case of a zone redundant database or elastic pool, the API call would result in redirecting client connections to the new primary in an Availability Zone different from the Availability Zone of the old primary. Quindi, oltre a testare il modo in cui il failover influisca sulle sessioni di database esistenti, è anche possibile verificare se le prestazioni end-to-end vengono modificate a causa di modifiche alla latenza di rete.So in addition to testing how failover impacts existing database sessions, you can also verify if it changes the end-to-end performance due to changes in network latency. Poiché l'operazione di riavvio è intrusiva e un numero elevato di questi potrebbe sottolineare la piattaforma, viene consentita una sola chiamata di failover ogni 30 minuti per ogni database o pool elastico.Because the restart operation is intrusive and a large number of them could stress the platform, only one failover call is allowed every 30 minutes for each database or elastic pool.

È possibile avviare un failover usando l'API REST o PowerShell.A failover can be initiated using REST API or PowerShell. Per l'API REST, vedere failover del database e failover del pool elastico.For REST API, see Database failover and Elastic pool failover. Per PowerShell, vedere Invoke-AzSqlDatabaseFailover e Invoke-AzSqlElasticPoolFailover.For PowerShell, see Invoke-AzSqlDatabaseFailover and Invoke-AzSqlElasticPoolFailover. Le chiamate all'API REST possono anche essere effettuate dall'interfaccia della riga di comando di Azure usando il comando AZ Rest .The REST API calls can also be made from Azure CLI using az rest command.

Importante

Il comando di failover non è al momento disponibile nel livello di servizio con iperscalabilità e per Istanza gestita.The Failover command is currently not available in the Hyperscale service tier and for Managed Instance.

ConclusioniConclusion

Il database SQL di Azure offre una soluzione di disponibilità elevata incorporata che è strettamente integrata con la piattaforma Azure.Azure SQL Database features a built-in high availability solution, that is deeply integrated with the Azure platform. Dipende da Service Fabric per il rilevamento e il ripristino degli errori, sull'archiviazione BLOB di Azure per la protezione dei dati e su zone di disponibilità per una maggiore tolleranza di errore.It is dependent on Service Fabric for failure detection and recovery, on Azure Blob storage for data protection, and on Availability Zones for higher fault tolerance. Inoltre, il database SQL di Azure sfrutta la Always On tecnologia del gruppo di disponibilità SQL Server per la replica e il failover.In addition, Azure SQL database leverages the Always On Availability Group technology from SQL Server for replication and failover. La combinazione di queste tecnologie consente alle applicazioni di realizzare in modo completo i vantaggi di un modello di archiviazione mista e supportare i contratti di servizio più complessi.The combination of these technologies enables applications to fully realize the benefits of a mixed storage model and support the most demanding SLAs.

Passaggi successiviNext steps