Strategie di ripristino di emergenza per applicazioni che usano i pool elastici del database SQLDisaster recovery strategies for applications using SQL Database elastic pools

Nel corso degli anni è stato riscontrato che i servizi cloud non sono infallibili e che si verificano incidenti catastrofici.Over the years we have learned that cloud services are not foolproof and catastrophic incidents happen. Il database SQL offre diverse funzionalità utili per la continuità aziendale dell'applicazione in caso di eventi imprevisti.SQL Database provides several capabilities to provide for the business continuity of your application when these incidents occur. Pool elastici e i database singoli supportano lo stesso tipo di funzionalità per il ripristino di emergenza.Elastic pools and single databases support the same kind of disaster recovery capabilities. Questo articolo illustra alcune strategie di ripristino di emergenza per i pool elastici che sfruttano i vantaggi di queste funzionalità per la continuità aziendale del database SQL.This article describes several DR strategies for elastic pools that leverage these SQL Database business continuity features.

In questo articolo viene usato il modello classico di applicazione ISV SaaS:This article uses the following canonical SaaS ISV application pattern:

Un'applicazione Web moderna basata sul cloud effettua il provisioning di un database SQL per ogni utente finale. L'ISV ha un numero elevato di clienti e usa quindi molti database, definiti database tenant. Poiché i database tenant presentano in genere modelli di attività imprevedibili, l'ISV usa un pool elastico per rendere molto prevedibili i costi del database in periodi estesi di tempo. Il pool elastico semplifica anche la gestione delle prestazioni in caso di picchi dell'attività degli utenti. Oltre ai database tenant, l'applicazione usa anche alcuni database per gestire i profili utente e la sicurezza e per raccogliere i modelli di utilizzo e altro ancora. La disponibilità dei singoli tenant non influisce sulla disponibilità complessiva dell'applicazione. La disponibilità e le prestazioni dei database di gestione, tuttavia, sono essenziali per il funzionamento dell'applicazione e se i database di gestione sono offline, l'intera applicazione è offline.A modern cloud-based web application provisions one SQL database for each end user. The ISV has many customers and therefore uses many databases, known as tenant databases. Because the tenant databases typically have unpredictable activity patterns, the ISV uses an elastic pool to make the database cost very predictable over extended periods of time. The elastic pool also simplifies the performance management when the user activity spikes. In addition to the tenant databases the application also uses several databases to manage user profiles, security, collect usage patterns etc. Availability of the individual tenants does not impact the application’s availability as whole. However, the availability and performance of management databases is critical for the application’s function and if the management databases are offline the entire application is offline.

Questo articolo illustra le strategie di ripristino di emergenza in diversi scenari, dalle applicazioni per start-up attente ai costi a quelle con requisiti di disponibilità rigorosi.This article discusses DR strategies covering a range of scenarios from cost sensitive startup applications to ones with stringent availability requirements.

Scenario 1.Scenario 1. Start-up attente ai costiCost sensitive startup

Una start-up estremamente attenta ai costi vuole semplificare la distribuzione e la gestione dell'applicazione e può avere un contratto di servizio limitato per singoli clienti. Vuole tuttavia assicurarsi che l'applicazione nel suo complesso non sia mai offline.I am a startup business and am extremely cost sensitive. I want to simplify deployment and management of the application and I can have a limited SLA for individual customers. But I want to ensure the application as a whole is never offline.

Per rispettare il requisito relativo alla semplicità, distribuire tutti i database tenant in un pool elastico nell'area di Azure scelta e quindi distribuire i database di gestione come database singoli con replica geografica.To satisfy the simplicity requirement, deploy all tenant databases into one elastic pool in the Azure region of your choice and deploy management databases as geo-replicated single databases. Per il ripristino di emergenza dei tenant, usare il ripristino geografico, disponibile senza costi aggiuntivi.For the disaster recovery of tenants, use geo-restore, which comes at no additional cost. Per assicurare la disponibilità dei database di gestione, configurarne la replica geografica in un'altra area usando un gruppo di failover automatico (in anteprima), come illustrato nel passaggio 1.To ensure the availability of the management databases, geo-replicate them to another region using an auto-failover group (in-preview) (step 1). In questo scenario, i costi di esercizio della configurazione per il ripristino di emergenza equivalgono al costo totale dei database secondari.The ongoing cost of the disaster recovery configuration in this scenario is equal to the total cost of the secondary databases. Questa configurazione è illustrata nel diagramma seguente.This configuration is illustrated on the next diagram.

Figura 1

In caso di interruzione nell'area primaria, la procedura di ripristino per riportare online l'applicazione è illustrata nel diagramma seguente.If an outage occurs in the primary region, the recovery steps to bring your application online are illustrated by the next diagram.

  • Il gruppo di failover avvia il failover automatico del database di gestione per l'area di ripristino di emergenza.The failover group initiates automatic failover of the management database to the DR region. L'applicazione viene riconnessa automaticamente al nuovo account primario e a tutti i nuovi account e vengono creati i database tenant nell'area di ripristino di emergenza.The application is automatically reconnected to the new primary and all new accounts and tenant databases are created in the DR region. I dati risultano temporaneamente non disponibili per i clienti esistenti.The existing customers see their data temporarily unavailable.
  • Creare il pool elastico con la stessa configurazione del pool originale (2).Create the elastic pool with the same configuration as the original pool (2).
  • Usare il ripristino geografico per creare copie dei database tenant (3).Use geo-restore to create copies of the tenant databases (3). È possibile prendere in considerazione l'attivazione dei singoli ripristini in base alle connessioni degli utenti finali oppure l'uso di un altro schema di priorità specifico dell'applicazione.You can consider triggering the individual restores by the end-user connections or use some other application-specific priority scheme.

A questo punto l'applicazione è di nuovo online nell'area di ripristino di emergenza, ma alcuni clienti riscontrano un ritardo nell'accesso ai dati.At this point your application is back online in the DR region, but some customers experience delay when accessing their data.

Figura 2

Se l'interruzione è stata temporanea, l'area primaria potrebbe essere ripristinata da Azure prima del completamento di tutti i ripristini dei database nell'area di ripristino di emergenza.If the outage was temporary, it is possible that the primary region is recovered by Azure before all the database restores are complete in the DR region. In questo caso, orchestrare il ritorno dell'applicazione all'area primaria.In this case, orchestrate moving the application back to the primary region. Il processo esegue la procedura illustrata nel diagramma seguente.The process takes the steps illustrated on the next diagram.

  • Annullare tutte le richieste di ripristino geografico in sospeso.Cancel all outstanding geo-restore requests.
  • Effettuare il failover dei database di gestione nell'area primaria (5).Fail over the management databases to the primary region (5). Dopo il ripristino dell'area, gli elementi primari precedenti sono diventati automaticamente secondari.After the region’s recovery, the old primaries have automatically become secondaries. Ora i ruoli vengono nuovamente invertiti.Now they switch roles again.
  • Modificare la stringa di connessione dell'applicazione in modo che faccia di nuovo riferimento all'area primaria.Change the application's connection string to point back to the primary region. Tutti i nuovi account e database tenant verranno ora creati nell'area primaria.Now all new accounts and tenant databases are created in the primary region. I dati risultano temporaneamente non disponibili per alcuni clienti esistenti.Some existing customers see their data temporarily unavailable.
  • Impostare tutti i database nel pool di ripristino di emergenza su sola lettura, per assicurare che non possano essere modificati nell'area di ripristino di emergenza (6).Set all databases in the DR pool to read-only to ensure they cannot be modified in the DR region (6).
  • Per ogni database nel pool di ripristino di emergenza modificato dopo il ripristino, rinominare o eliminare i database corrispondenti nel pool primario (7).For each database in the DR pool that has changed since the recovery, rename or delete the corresponding databases in the primary pool (7).
  • Copiare i database aggiornati dal pool di ripristino di emergenza al pool primario (8).Copy the updated databases from the DR pool to the primary pool (8).
  • Eliminare il pool di ripristino di emergenza (9).Delete the DR pool (9)

A questo punto l'applicazione è online nell'area primaria con tutti i database tenant disponibili nel pool primario.At this point your application is online in the primary region with all tenant databases available in the primary pool.

Figura 3

Il vantaggio principale di questa strategia è costituito dai costi di esercizio ridotti per la ridondanza a livello dati.The key benefit of this strategy is low ongoing cost for data tier redundancy. I backup vengono eseguiti automaticamente dal servizio database SQL, senza riscrittura di applicazioni e senza costi aggiuntivi.Backups are taken automatically by the SQL Database service with no application rewrite and at no additional cost. I costi vengono addebitati solo quando i database elastici vengono ripristinati.The cost is incurred only when the elastic databases are restored. Lo svantaggio consiste nel fatto che il ripristino completo di tutti i database tenant richiede molto tempo,The trade-off is that the complete recovery of all tenant databases takes significant time. in base al numero totale di ripristini avviati nell'area di ripristino di emergenza e alle dimensioni complessive dei database tenant.The length of time depends on the total number of restores you initiate in the DR region and overall size of the tenant databases. Anche se si attribuisce priorità maggiore ai ripristini di alcuni tenant rispetto ad altri, si verificano conflitti con tutti gli altri ripristini avviati nella stessa area, perché il servizio esegue l'arbitraggio e applica la limitazione per ridurre al minimo l'impatto complessivo sui database dei clienti esistenti.Even if you prioritize some tenants' restores over others, you are competing with all the other restores that are initiated in the same region as the service arbitrates and throttles to minimize the overall impact on the existing customers' databases. Il ripristino dei database tenant, inoltre, può essere avviato solo dopo la creazione del nuovo pool elastico nell'area di ripristino di emergenza.In addition, the recovery of the tenant databases cannot start until the new elastic pool in the DR region is created.

Scenario 2.Scenario 2. Applicazione matura con più livelli di servizioMature application with tiered service

Un'applicazione SaaS matura con più livelli di offerte del servizio e diversi contratti di servizio per i clienti delle versioni di valutazione e i clienti delle versioni a pagamento deve ridurre il più possibile i costi per i clienti delle versioni di valutazione. Questi clienti possono accettare i tempi di inattività, ma si vuole ridurne la probabilità. Per i clienti delle versioni a pagamento, i tempi di inattività possono costituire un rischio inaccettabile. Si vuole quindi assicurare che i clienti delle versioni a pagamento siano sempre in grado di accedere ai propri dati.I am a mature SaaS application with tiered service offers and different SLAs for trial customers and for paying customers. For the trial customers, I have to reduce the cost as much as possible. Trial customers can take downtime but I want to reduce its likelihood. For the paying customers, any downtime is a flight risk. So I want to make sure that paying customers are always able to access their data.

Per supportare questo scenario, separare i tenant delle versioni di valutazione dai tenant delle versioni a pagamento, inserendoli in pool elastici separati.To support this scenario, separate the trial tenants from paid tenants by putting them into separate elastic pools. I clienti delle versioni di valutazione avranno valori di eDTU per tenant inferiori e un contratto di servizio inferiore con tempi di ripristino più lunghi.The trial customers have lower eDTU per tenant and lower SLA with a longer recovery time. I clienti delle versioni a pagamento saranno inclusi in un pool con valori di eDTU per tenant superiori e un contratto di servizio superiore.The paying customers are in a pool with higher eDTU per tenant and a higher SLA. Per garantire tempi di ripristino minimi, i database tenant dei clienti delle versioni a pagamento sono sottoposti a replica geografica.To guarantee the lowest recovery time, the paying customers' tenant databases are geo-replicated. Questa configurazione è illustrata nel diagramma seguente.This configuration is illustrated on the next diagram.

Figura 4

Come nel primo scenario, i database di gestione sono abbastanza attivi, quindi si usa allo scopo un database singolo con replica geografica (1).As in the first scenario, the management databases are quite active so you use a single geo-replicated database for it (1). In questo modo si assicurano prestazioni prevedibili per le sottoscrizioni dei nuovi clienti, gli aggiornamenti dei profili e altre operazioni di gestione.This ensures the predictable performance for new customer subscriptions, profile updates, and other management operations. L'area in cui risiedono gli elementi primari dei database di gestione è l'area primaria e quella in cui si trovano gli elementi secondari dei database di gestione è l'area di ripristino di emergenza.The region in which the primaries of the management databases reside is the primary region and the region in which the secondaries of the management databases reside is the DR region.

I database tenant dei clienti delle versioni a pagamento hanno database attivi nel pool "a pagamento" sottoposto a provisioning nell'area primaria.The paying customers’ tenant databases have active databases in the “paid” pool provisioned in the primary region. Effettuare il provisioning di un pool secondario con lo stesso nome nell'area di ripristino di emergenza.Provision a secondary pool with the same name in the DR region. Ogni tenant viene sottoposto a replica geografica nel pool secondario (2).Each tenant is geo-replicated to the secondary pool (2). Ciò consente un ripristino rapido di tutti i database tenant con il failover.This enables quick recovery of all tenant databases using failover.

In caso di interruzione nell'area primaria, la procedura di ripristino per riportare online l'applicazione è illustrata nel diagramma seguente.If an outage occurs in the primary region, the recovery steps to bring your application online are illustrated in the next diagram:

Figura 5

  • Effettuare immediatamente il failover dei database di gestione nell'area di ripristino di emergenza (3).Immediately fail over the management databases to the DR region (3).
  • Modificare la stringa di connessione dell'applicazione in modo che faccia riferimento all'area di ripristino di emergenza.Change the application’s connection string to point to the DR region. Tutti i nuovi account e database tenant verranno ora creati nell'area di ripristino di emergenza.Now all new accounts and tenant databases are created in the DR region. I dati risulteranno temporaneamente non disponibili per i clienti esistenti delle versioni di valutazione.The existing trial customers see their data temporarily unavailable.
  • Effettuare il failover dei database tenant a pagamento nel pool nell'area di ripristino di emergenza per ripristinarne immediatamente la disponibilità (4).Fail over the paid tenant's databases to the pool in the DR region to immediately restore their availability (4). Dato che il failover è una rapida modifica a livello di metadati, prendere in considerazione un'ottimizzazione con attivazione su richiesta dei singoli failover da parte delle connessioni degli utenti finali.Since the failover is a quick metadata level change, consider an optimization where the individual failovers are triggered on demand by the end-user connections.
  • Se le dimensioni eDTU del pool secondario sono inferiori a quelle del pool primario perché i database secondari richiedevano solo le funzionalità necessarie per elaborare i log delle modifiche durante l'impostazione come secondari, aumentare immediatamente la capacità del pool per adeguarla all'intero carico di lavoro di tutti i tenant (5).If your secondary pool eDTU size was lower than the primary because the secondary databases only required the capacity to process the change logs while they were secondaries, immediately increase the pool capacity now to accommodate the full workload of all tenants (5).
  • Creare il nuovo pool elastico con lo stesso nome e la stessa configurazione nell'area di ripristino di emergenza per i database dei clienti della versione di valutazione (6).Create the new elastic pool with the same name and the same configuration in the DR region for the trial customers' databases (6).
  • Dopo la creazione del pool dei clienti della versione di valutazione, usare il ripristino geografico per ripristinare i singoli database tenant della versione di valutazione nel nuovo pool (7).Once the trial customers’ pool is created, use geo-restore to restore the individual trial tenant databases into the new pool (7). Prendere in considerazione l'attivazione dei singoli ripristini in base alle connessioni degli utenti finali oppure l'uso di un altro schema di priorità specifico dell'applicazione.Consider triggering the individual restores by the end-user connections or use some other application-specific priority scheme.

A questo punto l'applicazione è di nuovo online nell'area di ripristino di emergenza.At this point your application is back online in the DR region. Tutti i clienti delle versioni a pagamento possono accedere ai propri dati, mentre i clienti delle versioni di valutazione riscontrano un ritardo nell'accesso ai dati.All paying customers have access to their data while the trial customers experience delay when accessing their data.

Quando l'area primaria viene ripristinata da Azure dopo il ripristino dell'applicazione nell'area di ripristino di emergenza, è possibile continuare a eseguire l'applicazione in tale area oppure eseguire il failback nell'area primaria.When the primary region is recovered by Azure after you have restored the application in the DR region you can continue running the application in that region or you can decide to fail back to the primary region. Se l'area primaria viene ripristinata prima che il processo di failover sia completato, valutare la possibilità di effettuare immediatamente il failback.If the primary region is recovered before the failover process is completed, consider failing back right away. Il failback prevede la procedura illustrata nel diagramma seguente:The failback takes the steps illustrated in the next diagram:

Figura 6

  • Annullare tutte le richieste di ripristino geografico in sospeso.Cancel all outstanding geo-restore requests.
  • Effettuare il failover dei database di gestione (8).Fail over the management databases (8). Dopo il ripristino dell'area, l'elemento primario precedente diventa automaticamente l'elemento secondario.After the region’s recovery, the old primary automatically become the secondary. Ora diventa di nuovo primario.Now it becomes the primary again.
  • Effettuare il failover dei database tenant delle versioni a pagamento (9).Fail over the paid tenant databases (9). Analogamente, dopo il ripristino dell'area, gli elementi primari precedenti diventano automaticamente secondari.Similarly, after the region’s recovery, the old primaries automatically become the secondaries. Ora diventano di nuovo primari.Now they become the primaries again.
  • Impostare su sola lettura i database della versione di valutazione ripristinati che hanno subito modifiche nell'area di ripristino di emergenza (10).Set the restored trial databases that have changed in the DR region to read-only (10).
  • Per ogni database nel pool di ripristino di emergenza dei clienti della versione di valutazione modificato dopo il ripristino, rinominare o eliminare il database corrispondente nel pool primario dei clienti della versione di valutazione (11).For each database in the trial customers DR pool that changed since the recovery, rename or delete the corresponding database in the trial customers primary pool (11).
  • Copiare i database aggiornati dal pool di ripristino di emergenza al pool primario (12).Copy the updated databases from the DR pool to the primary pool (12).
  • Eliminare il pool di ripristino di emergenza (13).Delete the DR pool (13)

Nota

L'operazione di failover è asincrona.The failover operation is asynchronous. Per ridurre al minimo il tempo necessario per il ripristino, è importante eseguire il comando di failover dei database tenant in batch di almeno 20 database.To minimize the recovery time it is important that you execute the tenant databases' failover command in batches of at least 20 databases.

Il vantaggio principale di questa strategia consiste nel fatto che offre il Contratto di servizio migliore per i clienti a pagamento.The key benefit of this strategy is that it provides the highest SLA for the paying customers. Garantisce anche che le nuove versioni di valutazione vengano sbloccate non appena viene creato il pool di ripristino di emergenza della versione di valutazione.It also guarantees that the new trials are unblocked as soon as the trial DR pool is created. Lo svantaggio consiste nel fatto che questa configurazione aumenta il costo totale dei database tenant in base al costo del pool di ripristino di emergenza secondario per i clienti a pagamento.The trade-off is that this setup increases the total cost of the tenant databases by the cost of the secondary DR pool for paid customers. Se il pool secondario ha dimensioni diverse, inoltre, i clienti delle versioni a pagamento riscontrano prestazioni inferiori dopo il failover fino al completamento dell'aggiornamento del pool nell'area di ripristino di emergenza.In addition, if the secondary pool has a different size, the paying customers experience lower performance after failover until the pool upgrade in the DR region is completed.

Scenario 3.Scenario 3. Applicazione geograficamente distribuita con più livelli di servizioGeographically distributed application with tiered service

Un'applicazione SaaS matura con offerte di più livelli di servizio vuole offrire un Contratto di servizio molto aggressivo ai clienti della versione a pagamento e vuole ridurre al minimo il rischio di impatto di eventuali interruzioni, perché anche una breve interruzione può causare l'insoddisfazione dei clienti. È essenziale che i clienti della versione a pagamento possano accedere sempre ai propri dati. Le versioni di valutazione sono gratuite e non è disponibile alcun Contratto di servizio durante il periodo di valutazione. I have a mature SaaS application with tiered service offers. I want to offer a very aggressive SLA to my paid customers and minimize the risk of impact when outages occur because even brief interruption can cause customer dissatisfaction. It is critical that the paying customers can always access their data. The trials are free and an SLA is not offered during the trial period.

Per supportare questo scenario, usare tre pool elastici separati.To support this scenario, use three separate elastic pools. È necessario effettuare il provisioning di due pool di dimensioni uguali con valori eDTU elevati per ogni database in due aree diverse per includere i database tenant dei clienti della versione a pagamento.Provision two equal size pools with high eDTUs per database in two different regions to contain the paid customers' tenant databases. Il terzo pool contenente i tenant delle versioni di valutazione può avere valori eDTU inferiori per ogni database e viene sottoposto a provisioning in una delle due aree.The third pool containing the trial tenants can have lower eDTUs per database and be provisioned in one of the two regions.

Per garantire tempi di ripristino minimi durante le interruzioni, i database tenant dei clienti della versione a pagamento sono sottoposti a replica geografica con il 50% dei database primari in ognuna delle due aree.To guarantee the lowest recovery time during outages, the paying customers' tenant databases are geo-replicated with 50% of the primary databases in each of the two regions. Analogamente, ogni area include il 50% dei database secondari.Similarly, each region has 50% of the secondary databases. In questo modo, lo stato offline di un'area influisce solo sul 50% dei database dei clienti a pagamento, di cui viene effettuato il failover.This way, if a region is offline, only 50% of the paid customers' databases are impacted and have to fail over. Gli altri database rimangono inalterati.The other databases remain intact. Questa configurazione è illustrata nel diagramma seguente:This configuration is illustrated in the following diagram:

Figura 4

Come nello scenario precedente, i database di gestione sono abbastanza attivi, quindi devono essere configurati come database singoli con replica geografica (1).As in the previous scenarios, the management databases are quite active so configure them as single geo-replicated databases (1). In questo modo si assicurano prestazioni prevedibili per le sottoscrizioni dei nuovi clienti, gli aggiornamenti dei profili e altre operazioni di gestione.This ensures the predictable performance of the new customer subscriptions, profile updates and other management operations. L'area A è l'area primaria per i database di gestione e l'area B viene usata per il ripristino dei database di gestione.Region A is the primary region for the management databases and the region B is used for recovery of the management databases.

I database tenant dei clienti della versione a pagamento vengono sottoposti anche a replica geografica, ma con suddivisione degli elementi primari e secondari tra area A e area B (2).The paying customers’ tenant databases are also geo-replicated but with primaries and secondaries split between region A and region B (2). In questo modo, i database tenant primari interessati dall'interruzione possono essere sottoposti a failover nell'altra area e risultare disponibili.This way, the tenant primary databases impacted by the outage can fail over to the other region and become available. Sull'altra metà dei database tenant non si verifica alcun impatto.The other half of the tenant databases are not be impacted at all.

Il diagramma seguente illustra la procedura di ripristino da eseguire in caso di interruzione nell'area A.The next diagram illustrates the recovery steps to take if an outage occurs in region A.

Figura 5

  • Eseguire immediatamente il failover dei database di gestione nell'area B (3).Immediately fail over the management databases to region B (3).
  • Modificare la stringa di connessione dell'applicazione in modo che faccia riferimento ai database di gestione nell'area B. Modificare i database di gestione affinché i nuovi account e database tenant vengano creati nell'area B e i database tenant esistenti siano disponibili in tale area.Change the application’s connection string to point to the management databases in region B. Modify the management databases to make sure the new accounts and tenant databases are created in region B and the existing tenant databases are found there as well. I dati risulteranno temporaneamente non disponibili per i clienti esistenti delle versioni di valutazione.The existing trial customers see their data temporarily unavailable.
  • Effettuare il failover dei database tenant a pagamento nel pool 2 nell'area B per ripristinarne immediatamente la disponibilità (4).Fail over the paid tenant's databases to pool 2 in region B to immediately restore their availability (4). Dato che il failover è una rapida modifica a livello di metadati, è possibile prendere in considerazione un'ottimizzazione con attivazione su richiesta dei singoli failover da parte delle connessioni degli utenti finali.Since the failover is a quick metadata level change, you may consider an optimization where the individual failovers are triggered on demand by the end-user connections.
  • Dato che il pool 2 ora contiene solo database primari, il carico di lavoro totale nel pool aumenta ed è possibile incrementarne immediatamente le dimensioni eDTU (5).Since now pool 2 contains only primary databases, the total workload in the pool increases and can immediately increase its eDTU size (5).
  • Creare il nuovo pool elastico con lo stesso nome e la stessa configurazione nell'area B per i database dei clienti della versione di valutazione (6).Create the new elastic pool with the same name and the same configuration in the region B for the trial customers' databases (6).
  • Dopo la creazione del pool, usare il ripristino geografico per ripristinare il singolo database tenant della versione di valutazione nel pool (7).Once the pool is created use geo-restore to restore the individual trial tenant database into the pool (7). È possibile prendere in considerazione l'attivazione dei singoli ripristini in base alle connessioni degli utenti finali oppure l'uso di un altro schema di priorità specifico dell'applicazione.You can consider triggering the individual restores by the end-user connections or use some other application-specific priority scheme.

Nota

L'operazione di failover è asincrona.The failover operation is asynchronous. Per ridurre al minimo i tempi di ripristino, è importante eseguire il comando di failover dei database tenant in batch di almeno 20 database.To minimize the recovery time, it is important that you execute the tenant databases' failover command in batches of at least 20 databases.

A questo punto l'applicazione è di nuovo online nell'area B. Tutti i clienti a pagamento possono accedere ai propri dati, mentre i clienti delle versioni di valutazione riscontrano un ritardo nell'accesso ai dati.At this point your application is back online in region B. All paying customers have access to their data while the trial customers experience delay when accessing their data.

Al termine del ripristino dell'area A, è necessario decidere se si vuole usare l'area B per i clienti della versione di valutazione o eseguire il failback e usare di nuovo il pool dei clienti della versione di valutazione nell'area A. Un criterio per la decisione potrebbe essere rappresentato dalla percentuale di database tenant della versione di valutazione modificati dopo il ripristino.When region A is recovered you need to decide if you want to use region B for trial customers or failback to using the trial customers pool in region A. One criteria could be the % of trial tenant databases modified since the recovery. Indipendentemente da questa decisione, è necessario ribilanciare i tenant della versione a pagamento tra i due pool.Regardless of that decision, you need to re-balance the paid tenants between two pools. Il diagramma seguente illustra il processo di failback dei database tenant della versione di valutazione nell'area A.the next diagram illustrates the process when the trial tenant databases fail back to region A.

Figura 6

  • Annullare tutte le richieste di ripristino geografico in sospeso verso il pool di ripristino di emergenza della versione di valutazione.Cancel all outstanding geo-restore requests to trial DR pool.
  • Effettuare il failover del database di gestione (8).Fail over the management database (8). Dopo il ripristino dell'area, l'elemento primario precedente è diventato automaticamente l'elemento secondario.After the region’s recovery, the old primary automatically became the secondary. Ora diventa di nuovo primario.Now it becomes the primary again.
  • Selezionare i database tenant della versione a pagamento di cui verrà effettuato il failback nel pool 1 e avviare il failover negli elementi secondari (9).Select which paid tenant databases fail back to pool 1 and initiate failover to their secondaries (9). Dopo il ripristino dell'area, tutti i database nel pool 1 sono diventati automaticamente secondari.After the region’s recovery, all databases in pool 1 automatically became secondaries. Ora il 50% dei database diventa di nuovo primario.Now 50% of them become primaries again.
  • Ridurre le dimensioni del pool 2 al valore eDTU originale (10).Reduce the size of pool 2 to the original eDTU (10).
  • Impostare su sola lettura tutti i database della versione di valutazione ripristinati nell'area B (11).Set all restored trial databases in the region B to read-only (11).
  • Per ogni database nel pool di ripristino di emergenza delle versioni di valutazione modificato dopo il ripristino, rinominare o eliminare il database corrispondente nel pool primario delle versioni di valutazione (12).For each database in the trial DR pool that has changed since the recovery, rename or delete the corresponding database in the trial primary pool (12).
  • Copiare i database aggiornati dal pool di ripristino di emergenza al pool primario (13).Copy the updated databases from the DR pool to the primary pool (13).
  • Eliminare il pool di ripristino di emergenza (14).Delete the DR pool (14)

Ecco i vantaggi principali di questa strategia:The key benefits of this strategy are:

  • Supporta il Contratto di servizio più aggressivo per i clienti della versione a pagamento, perché assicura che un'interruzione non possa influire su oltre il 50% dei database tenant.It supports the most aggressive SLA for the paying customers because it ensures that an outage cannot impact more than 50% of the tenant databases.
  • Garantisce che le nuove versioni di valutazione vengano sbloccate non appena viene creato il pool di ripristino di emergenza della versione di valutazione durante il ripristino.It guarantees that the new trials are unblocked as soon as the trail DR pool is created during the recovery.
  • Consente un uso più efficiente della capacità dei pool, perché il 50% dei database secondari nel pool 1 e nel pool 2 risulta sicuramente meno attiva rispetto ai database primari.It allows more efficient use of the pool capacity as 50% of secondary databases in pool 1 and pool 2 are guaranteed to be less active than the primary databases.

Ecco gli svantaggi principali:The main trade-offs are:

  • Le operazioni CRUD sui database di gestione hanno una latenza minore per gli utenti finali connessi all'area A rispetto agli utenti finali connessi all'area B, perché verranno eseguite sui database di gestione primari.The CRUD operations against the management databases have lower latency for the end users connected to region A than for the end users connected to region B as they are executed against the primary of the management databases.
  • Richiede una progettazione più complessa per il database di gestione.It requires more complex design of the management database. Ogni record dei tenant, ad esempio, ha un tag di posizione che deve essere modificato durante il failover e il failback.For example, each tenant record has a location tag that needs to be changed during failover and failback.
  • I clienti della versione a pagamento potrebbero notare prestazioni inferiori al consueto fino al completamento dell'aggiornamento del pool nell'area B.The paying customers may experience lower performance than usual until the pool upgrade in region B is completed.

RiepilogoSummary

Questo articolo illustra le strategie di ripristino di emergenza per il livello database usato da un'applicazione multi-tenant ISV SaaS.This article focuses on the disaster recovery strategies for the database tier used by a SaaS ISV multi-tenant application. La scelta della strategia si basa sulle esigenze dell'applicazione, ad esempio il modello aziendale, il contratto di servizio da offrire ai clienti, i vincoli di budget e così via. Ogni strategia descritta illustra i vantaggi e gli svantaggi, per consentire una decisione consapevole.The strategy you choose is based on the needs of the application, such as the business model, the SLA you want to offer to your customers, budget constraint etc. Each described strategy outlines the benefits and trade-off so you could make an informed decision. È anche probabile che l'applicazione specifica includa altri componenti di Azure.Also, your specific application likely includes other Azure components. Esaminare quindi le rispettive indicazioni relative alla continuità aziendale e orchestrare il ripristino del livello database con tali componenti.So you review their business continuity guidance and orchestrate the recovery of the database tier with them. Per altre informazioni sulla gestione del ripristino di applicazioni di database in Azure, vedere l'articolo relativo alla progettazione di soluzioni cloud per il ripristino di emergenza.To learn more about managing recovery of database applications in Azure, refer to Designing cloud solutions for disaster recovery.

Passaggi successiviNext steps