Panoramica: gruppi di failover e replica geografica attivaOverview: Failover groups and active geo-replication

La replica geografica attiva consente di configurare fino a quattro database secondari accessibili in lettura nella stessa posizione del data center o in posizioni (aree) diverse.Active geo-replication enables you to configure up to four readable secondary databases in the same or different data center locations (regions). Sono disponibili database secondari per l'esecuzione di query e per il failover in caso di interruzione di un data center o di impossibilità di connettersi al database primario.Secondary databases are available for querying and for failover if there is a data center outage or the inability to connect to the primary database. Il failover deve essere avviato manualmente dall'applicazione dell'utente.The failover must be initiated manually by the application of the user. Dopo il failover, il nuovo database primario dispone di un endpoint di connessione diverso.After failover, the new primary has a different connection end-point.

Nota

La replica geografica attiva è disponibile per tutti i database in tutti i livelli di servizio in tutte le aree.Active geo-replication is available for all databases in all service tiers in all regions.

I gruppi di failover automatico del database SQL di Azure (in anteprima) costituiscono una funzionalità del database SQL progettata per gestire automaticamente la relazione di replica geografica, la connettività e il failover su vasta scala.Azure SQL Database auto-failover groups (in-preview) is a SQL Database feature designed to automatically manage geo-replication relationship, connectivity, and failover at scale. Grazie a questa funzionalità, i clienti possono ripristinare automaticamente più database correlati nell'area secondaria dopo errori irreversibili a livello di area o altri eventi imprevisti che comportano la perdita parziale o completa di disponibilità del servizio del database SQL nell'area primaria.With it, the customers gain the ability to automatically recover multiple related databases in the secondary region after catastrophic regional failures or other unplanned events that result in full or partial loss of the SQL Database service’s availability in the primary region. È anche possibile usare i database secondari leggibili per l'offload dei carichi di lavoro di sola lettura.Additionally, they can use the readable secondary databases to offload read-only workloads. Poiché coinvolgono più database, i gruppi di failover automatico devono essere configurati nel server primario.Because auto-failover groups involve multiple databases, they must be configured on the primary server. I server primario e secondario devono trovarsi nella stessa sottoscrizione.Both primary and secondary servers must be in the same subscription. I gruppi di failover automatico supportano la replica di tutti i database nel gruppo in un solo server secondario in un'area diversa.Auto-failover groups support replication of all databases in the group to only one secondary server in a different region. La replica geografica attiva, senza gruppi di failover automatico, consente l'uso di un numero massimo di 4 database secondari in tutte le aree.Active geo-replication, without auto-failover groups, allows up to four secondaries in any region.

Se si sta usando la replica geografica attiva e per qualsiasi motivo il database primario restituisce un errore o deve essere portato offline, è possibile avviare il failover in uno dei database secondari.If you are using active geo-replication and for any reason your primary database fails, or simply needs to be taken offline, you can initiate failover to any of your secondary databases. Una volta attivato il failover su uno dei database secondari, tutti gli altri database secondari vengono automaticamente collegati al nuovo database primario.When failover is activated to one of the secondary databases, all other secondaries are automatically linked to the new primary. Se si usano i gruppi di failover automatico (in anteprima) per gestire il ripristino del database ed eventuali interruzioni che influiscono su uno o più database nel gruppo, si otterrà un failover automatico.If you are using auto-failover groups (in-preview) to manage database recovery and any outage that impacts one or several of the databases in the group results in automatic failover. È possibile configurare i criteri di failover automatico che più soddisfano le esigenze dell'applicazione oppure è possibile rifiutarli esplicitamente e usare l'attivazione manuale.You can configure the auto-failover policy that best meets your application needs, or you can opt out and use manual activation. I gruppi di failover automatico (in anteprima) forniscono anche endpoint di listener di sola lettura e di sola scrittura che rimangono invariati durante i failover.In addition, auto-failover groups (in-preview) provide read-write and read-only listener end-points that remain unchanged during failovers. Se si usa l'attivazione di failover manuale o automatica, il failover trasforma tutti i database secondari nel gruppo in database primari.Whether you use manual or automatic failover activation, failover switches all secondary databases in the group to primary. Dopo aver completato il failover del database, viene aggiornato automaticamente il record DNS per reindirizzare gli endpoint nella nuova area.After the database failover is completed, the DNS record is automatically updated to redirect the end-points to the new region.

È possibile gestire la replica e il failover di un singolo database o di un set di database in un server o in un pool elastico tramite la replica geografica attiva.You can manage replication and failover of an individual database or a set of databases on a server or in an elastic pool using active geo-replication. È possibile farlo tramiteYou can do that using

Dopo il failover, verificare che nel nuovo database primario siano configurati i requisiti di autenticazione relativi al server e al database.After failover, ensure the authentication requirements for your server and database are configured on the new primary. Per tutti i dettagli, vedere l'articolo sulla sicurezza del database SQL di Azure dopo il ripristino di emergenza.For details, see SQL Database security after disaster recovery. Si applica sia ai gruppi di replica geografica attiva che ai gruppi di failover automatico (in anteprima).This applies both to active geo-replication and auto-failover groups (in-preview).

La replica geografica attiva sfrutta la tecnologia Always On di SQL Server per replicare in modo asincrono le transazioni di cui è stato eseguito il commit nel database primario nei database secondari tramite Read Committed Snapshot Isolation (RCSI).Active geo-replication leverages the Always On technology of SQL Server to asynchronously replicate committed transactions on the primary database to a secondary database using read committed snapshot isolation (RCSI). I gruppi di failover automatico forniscono la semantica del gruppo sulla replica geografica attiva, ma viene usato lo stesso meccanismo di replica asincrona.Auto-failover groups provide the group semantics on top of active geo-replication but the same asynchronous replication mechanism is used. Anche se a un certo punto i dati del database secondario possono essere leggermente indietro rispetto al database primario, per tali dati sono sempre garantite transazioni complete.While at any given point, the secondary database might be slightly behind the primary database, the secondary data is guaranteed to never have partial transactions. La ridondanza tra aree consente il ripristino rapido delle applicazioni dalla perdita definitiva di un intero data center o di parti di esso causata da calamità naturali, errori umani irreversibili o atti dolosi.Cross-region redundancy enables applications to quickly recover from a permanent loss of an entire datacenter or parts of a datacenter caused by natural disasters, catastrophic human errors, or malicious acts. È possibile consultare i dati RPO specifici in Panoramica della continuità aziendale.The specific RPO data can be found at Overview of Business Continuity.

La figura seguente illustra un esempio di replica geografica attiva configurata con il database primario nell'area Stati Uniti centro-settentrionali e il database secondario nell'area Stati Uniti centro-meridionali.The following figure shows an example of active geo-replication configured with a primary in the North Central US region and secondary in the South Central US region.

relazione di replica geografica

Poiché i database secondari sono leggibili, possono essere usati per l'offload dei carichi di lavoro di sola lettura, ad esempio i processi di creazione di rapporti.Because the secondary databases are readable, they can be used to offload read-only workloads such as reporting jobs. Se si usa la replica geografica attiva, è possibile creare il database secondario nella stessa area del database primario, ma non si incrementa la resilienza dell'applicazione in caso di errori irreversibili.If you are using active geo-replication, it is possible to create the secondary database in the same region with the primary, but it does not increase the application's resilience to catastrophic failures. Se si usano i gruppi di failover automatico (in anteprima), i database secondari vengono sempre creati in un'area diversa.If you are using auto-failover groups (in-preview), your secondary database is always created in a different region.

Oltre al ripristino di emergenza, la replica geografica attiva può essere usata negli scenari seguenti:In addition to disaster recovery active geo-replication can be used in the following scenarios:

  • Migrazione di un database: è possibile usare la replica geografica attiva per eseguire la migrazione di un database da un server a un altro online con un tempo di inattività minimo.Database migration: You can use active geo-replication to migrate a database from one server to another online with minimum downtime.
  • Aggiornamenti dell'applicazione: è possibile creare un database secondario aggiuntivo come copia di failback durante gli aggiornamenti dell'applicazione.Application upgrades: You can create an extra secondary as a fail back copy during application upgrades.

Per ottenere una reale continuità aziendale, l'aggiunta di ridondanza dei database tra i data center rappresenta solo una parte della soluzione.To achieve real business continuity, adding database redundancy between datacenters is only part of the solution. Per ripristinare un'applicazione (servizio) end-to-end dopo un problema grave, è necessario effettuare il ripristino di tutti i componenti del servizio e gli eventuali servizi dipendenti.Recovering an application (service) end-to-end after a catastrophic failure requires recovery of all components that constitute the service and any dependent services. Esempi di questi componenti includono il software client (ad esempio, un browser con JavaScript personalizzato), front-end Web, spazio di archiviazione e DNS.Examples of these components include the client software (for example, a browser with a custom JavaScript), web front ends, storage, and DNS. È fondamentale che tutti i componenti siano resilienti agli stessi problemi e diventino disponibili entro I'obiettivo del tempo di ripristino (RTO) dell'applicazione.It is critical that all components are resilient to the same failures and become available within the recovery time objective (RTO) of your application. È perciò necessario identificare tutti i servizi dipendenti e comprendere quali garanzie e funzionalità vengono fornite.Therefore, you need to identify all dependent services and understand the guarantees and capabilities they provide. È quindi necessario intraprendere le azioni appropriate per assicurare il funzionamento del servizio durante il failover dei servizi da cui dipende.Then, you must take adequate steps to ensure that your service functions during the failover of the services on which it depends. Per altre informazioni sulla progettazione di soluzioni per il ripristino di emergenza, vedere Progettazione di applicazioni per il ripristino di emergenza cloud con la replica geografica attiva in database SQL.For more information about designing solutions for disaster recovery, see Designing Cloud Solutions for Disaster Recovery Using active geo-replication.

Funzionalità della replica geografica attivaActive geo-replication capabilities

La funzionalità di replica geografica attiva fornisce i seguenti elementi essenziali:The active geo-replication feature provides the following essential capabilities:

  • Replica asincrona automatica: è possibile creare un database secondario solo aggiungendolo a un database esistente.Automatic Asynchronous Replication: You can only create a secondary database by adding to an existing database. Il database secondario può essere creato in qualsiasi server di database SQL di Azure.The secondary can be created in any Azure SQL Database server. Dopo avere creato il database secondario, è necessario popolarlo con i dati copiati dal database primario.Once created, the secondary database is populated with the data copied from the primary database. Questo processo è noto come seeding.This process is known as seeding. Dopo aver creato ed eseguito il seeding del database secondario, gli aggiornamenti al database primario vengono replicati automaticamente in modo asincrono nel database secondario.After secondary database has been created and seeded, updates to the primary database are asynchronously replicated to the secondary database automatically. Replica asincrona significa che le transazioni vengono sottoposte a commit nel database primario prima di essere replicate nel database secondario.Asynchronous replication means that transactions are committed on the primary database before they are replicated to the secondary database.
  • Database secondari accessibili in lettura: un'applicazione può accedere a un database secondario per le operazioni di sola lettura usando le stesse entità di sicurezza usate per l'accesso al database primario.Readable secondary databases: An application can access a secondary database for read-only operations using the same or different security principals used for accessing the primary database. I database secondari operano in modalità di isolamento dello snapshot per garantire che la replica degli aggiornamenti del database primario (riesecuzione del log) non venga ritardata da query eseguite sul database secondario.The secondary databases operate in snapshot isolation mode to ensure replication of the updates of the primary (log replay) is not delayed by queries executed on the secondary.

    Nota

    La riesecuzione del log viene ritardata nel database secondario se è in corso la ricezione di aggiornamenti dello schema dal database primarioThe log replay is delayed on the secondary database if there are schema updates on the Primary. perché richiede un blocco dello schema nel database secondario.The latter requires a schema lock on the secondary database.

  • Più database secondari leggibili: due o più database secondari aumentano la ridondanza e il livello di protezione per il database primario e l'applicazione.Multiple readable secondaries: Two or more secondary databases increase redundancy and level of protection for the primary database and application. Se sono presenti più database secondari, l'applicazione resta protetta anche se uno dei database secondari non funziona.If multiple secondary databases exist, the application remains protected even if one of the secondary databases fails. Se è presente un solo database secondario e questo smette di funzionare, l'applicazione rimane esposta a maggiori rischi finché non viene creato un nuovo database secondario.If there is only one secondary database, and it fails, the application is exposed to higher risk until a new secondary database is created.

    Nota

    Se si usa la replica geografica attiva per compilare un'applicazione distribuita a livello globale ed è necessario fornire l'accesso in sola lettura ai dati in più di 4 aree, è possibile creare il database secondario di un database secondario. Questo processo è noto come concatenamento.If you are using active geo-replication to build a globally distributed application and need to provide read-only access to data in more than four segions, you can create secondary of a secondary (a process known as chaining). In questo modo è possibile ottenere una scalabilità virtualmente illimitata della replica del database.This way you can achieve virtually unlimited scale of database replication. Il concatenamento riduce anche il sovraccarico della replica dal database primario.In addition, chaining reduces the overhead of replication from the primary database. Il compromesso è l'intervallo di replica aumentato nei database secondari a più strati.The trade-off is the increased replication lag on the leaf-most secondary databases.

  • Supporto dei database del pool elastico: la replica geografica attiva può essere configurata per qualsiasi database in qualsiasi pool elastico.Support of elastic pool databases: Active geo-replication can be configured for any database in any elastic pool. Il database secondario può trovarsi in un altro pool elastico.The secondary database can be in another elastic pool. Per i database normali, il database secondario può essere un pool elastico e viceversa, purché i livelli di servizio restino invariati.For regular databases, the secondary can be an elastic pool and vice versa as long as the service tiers are the same.

  • Livello di prestazioni configurabile del database secondario: i database primari e secondari devono avere lo stesso livello di servizio (Basic, Standard, Premium).Configurable performance level of the secondary database: Both primary and secondary databases are required to have the same service tier (Basic, Standard, Premium). Un database secondario può essere creato con un livello di prestazioni (DTU) inferiore rispetto al database primario.A secondary database can be created with lower performance level (DTUs) than the primary. Questa opzione non è consigliata per le applicazioni con attività di scrittura nel database elevate perché il maggiore intervallo di replica aumenta il rischio di perdita di dati sostanziali dopo il failover.This option is not recommended for applications with high database write activity because the increased replication lag increases the risk of substantial data loss after a failover. Inoltre, dopo il failover ci saranno delle ripercussioni sulle prestazioni dell'applicazione fino a quando il nuovo database primario non verrà aggiornato a un livello di prestazioni superiore.In addition, after failover the application’s performance is impacted until the new primary is upgraded to a higher performance level. Il grafico della percentuale IO del log nel portale di Azure fornisce un buon metodo per stimare il livello di prestazioni minimo del database secondario che deve sostenere il carico della replica.The log IO percentage chart on Azure portal provides a good way to estimate the minimal performance level of the secondary that is required to sustain the replication load. Ad esempio, se il database primario è P6 (1000 DTU) e la percentuale IO del log è del 50%, il database secondario deve essere almeno P4 (500 DTU).For example, if your Primary database is P6 (1000 DTU) and its log IO percent is 50% the secondary needs to be at least P4 (500 DTU). È anche possibile recuperare i dati di I/O del log usando la vista di database sys.resource_stats o sys.dm_db_resource_stats.You can also retrieve the log IO data using sys.resource_stats or sys.dm_db_resource_stats database views. Per altre informazioni sui livelli di prestazioni del database SQL, vedere Opzioni e prestazioni disponibili in ogni livello di servizio del database SQL.For more information on the SQL Database performance levels, see SQL Database options and performance.
  • Failover e failback controllati dall'utente: un database secondario può essere impostato esplicitamente sul ruolo di database primario in qualsiasi momento dall'applicazione o dall'utente.User-controlled failover and failback: A secondary database can explicitly be switched to the primary role at any time by the application or the user. Durante un'interruzione reale, deve essere usata l'opzione "non pianificato", che alza immediatamente il livello di un database secondario a primario.During a real outage the “unplanned” option should be used, which immediately promotes a secondary to be the primary. Quando il database primario viene ripristinato ed è nuovamente disponibile, il sistema lo contrassegna automaticamente come database secondario e lo aggiorna con il nuovo database primario.When the failed primary recovers and is available again, the system automatically marks the recovered primary as a secondary and bring it up-to-date with the new primary. A causa della natura asincrona della replica, una piccola quantità di dati può andare perduta durante i failover non pianificati se il database primario si interrompe prima di replicare le modifiche più recenti al database secondario.Due to the asynchronous nature of replication, a small amount of data can be lost during unplanned failovers if a primary fails before it replicates the most recent changes to the secondary. Quando un database primario con più database secondari esegue il failover, il sistema riconfigura automaticamente le relazioni di replica e collega i database secondari rimanenti al nuovo database primario appena alzato di livello senza alcun intervento da parte dell'utente.When a primary with multiple secondaries fails over, the system automatically reconfigures the replication relationships and links the remaining secondaries to the newly promoted primary without requiring any user intervention. Dopo aver risolto l'interruzione del servizio che ha causato il failover, è opportuno ripristinare l'applicazione nell'area primaria.After the outage that caused the failover is mitigated, it may be desirable to return the application to the primary region. A tale scopo, richiamare il comando di failover con l'opzione "pianificato".To do that, the failover command should be invoked with the “planned” option.
  • Mantenere sincronizzate le credenziali e le regole del firewall: per i database con replica geografica è consigliabile usare le regole del firewall a livello di database, in modo che tali regole possano essere replicate con il database, per garantire che tutti i database secondari abbiano le stesse regole del firewall del database primario.Keeping credentials and firewall rules in sync: We recommend using database firewall rules for geo-replicated databases so these rules can be replicated with the database to ensure all secondary databases have the same firewall rules as the primary. In questo modo non è più necessario configurare e gestire le regole del firewall manualmente nei server che ospitano sia il database primario che i secondari.This approach eliminates the need for customers to manually configure and maintain firewall rules on servers hosting both the primary and secondary databases. Analogamente, l'accesso ai dati come utenti di database indipendente fa sì che i database primari e secondari abbiano sempre le stesse credenziali utente. Durante un failover, quindi, non si verificano interruzioni dovute a una mancata corrispondenza tra account di accesso e password.Similarly, using contained database users for data access ensures both primary and secondary databases always have the same user credentials so during a failover, there is no disruptions due to mismatches with logins and passwords. Con l'aggiunta di Azure Active Directory i clienti possono gestire l'accesso utente ai database primari e secondari, eliminando completamente la necessità di gestire le credenziali nei database.With the addition of Azure Active Directory, customers can manage user access to both primary and secondary databases and eliminating the need for managing credentials in databases altogether.

Funzionalità dei gruppi di failover automaticoAuto-failover group capabilities

La funzionalità dei gruppi di failover automatico fornisce un'astrazione potente della replica geografica attiva grazie al supporto della replica a livello di gruppo e al failover automatico.Auto-failover groups feature provides a powerful abstraction of active geo-replication by supporting group level replication and automatic failover. Rimuove anche la necessità di modificare la stringa di connessione SQL dopo il failover, fornendo gli endpoint di listener aggiuntivi.In addition, it removes the necessity to change the SQL connection string after failover by providing the additional listener end-points.

  • Gruppo di failover: è possibile creare uno o più gruppi di failover tra due server in aree diverse (server primario e secondario).Failover group: One or many failover groups can be created between two servers in different regions (primary and secondary servers). Ogni gruppo può includere uno o più database che vengono ripristinati come unità nel caso in cui tutti o alcuni database primari diventino non disponibili a causa di un'interruzione nell'area primaria.Each group can include one or several databases that are recovered as a unit in case all or some primary databases become unavailable due to an outage in the primary region.
  • Server primario: un server che ospita i database primari nel gruppo di failover.Primary server: A server that hosts the primary databases in the failover group.
  • Server secondario: un server che ospita i database secondari nel gruppo di failover.Secondary server: A server that hosts the secondary databases in the failover group. Il server secondario non può essere nella stessa area del server primario.The secondary server cannot be in the same region as the primary server.
  • Aggiunta di database al gruppo di failover: è possibile inserire diversi database all'interno di un server o di un pool elastico nello stesso gruppo di failover.Adding databases to failover group: You can put several databases within a server or within an elastic pool into the same failover group. Se si aggiunge un database autonomo al gruppo, viene creato automaticamente un database secondario usando la stessa edizione e lo stesso livello di prestazione.If you add a standalone database to the group, it automatically creates a secondary database using the same edition and performance level. Se il database primario si trova in un pool elastico, il database secondario viene creato automaticamente nel pool elastico con lo stesso nome.If the primary database is in an elastic pool, the secondary is automatically created in the elastic pool with the same name. Se si aggiunge un database che dispone già di un database secondario nel server secondario, tale replica geografica viene ereditata dal gruppo.If you add a database that already has a secondary database in the secondary server, that geo-replication is inherited by the group.

    Nota

    Quando si aggiunge un database che dispone già di un database secondario in un server che non fa parte del gruppo di failover, viene creato un nuovo database secondario nel server secondario.When adding a database that already has a secondary database in a server that is not part of the failover group, a new secondary is created in the secondary server.

  • Listener di lettura/scrittura del gruppo di failover: record CNAME DNS in formato <nome-gruppo-failover>.database.windows.net che punta all'URL del server primario corrente.Failover group read-write listener: A DNS CNAME record formed as <failover-group-name>.database.windows.net that points to the current primary server URL. Consente alle applicazioni SQL di lettura/scrittura di riconnettersi al database primario in modo trasparente quando viene modificato il database primario dopo il failover.It allows the read-write SQL applications to transparently reconnect to the primary database when the primary changes after failover.

  • Listener di sola lettura del gruppo di failover: record CNAME DNS in formato <nome-gruppo-failover>.secondary.database.windows.net che punta all'URL del server secondario.Failover group read-only listener: A DNS CNAME record formed as <failover-group-name>.secondary.database.windows.net that points to the secondary server’s URL. Consente alle applicazioni SQL di sola lettura di connettersi in modo trasparente nel database secondario usando le regole di bilanciamento del carico specificate.It allows the read-only SQL applications to transparently connect to the secondary database using the specified load-balancing rules. Facoltativamente, è possibile specificare se si desidera che il traffico di sola lettura sia reindirizzato automaticamente verso il server primario quando il server secondario non è disponibile.Optionally you can specify if you want the read-only traffic to be automatically redirected to the primary server when the secondary server is not available.
  • Criteri di failover automatico: per impostazione predefinita, il gruppo di failover è configurato con un criterio di failover automatico.Automatic failover policy: By default, the failover group is configured with an automatic failover policy. Il sistema attiva il failover non appena viene rilevato l'errore.The system triggers failover as soon as the failure is detected. Se si desidera controllare il flusso di lavoro del failover dall'applicazione, è possibile disattivare il failover automatico.If you want to control the failover workflow from the application, you can turn off automatic failover.
  • Failover manuale: è possibile avviare manualmente il failover in qualsiasi momento, indipendentemente dalla configurazione del failover automatico.Manual failover: You can initiate failover manually at any time regardless of the automatic failover configuration. Se i criteri di failover automatico non sono configurati, è necessario eseguire il failover manuale per ripristinare i database nel gruppo di failover.If automatic failover policy is not configured, manual failover is required to recover databases in the failover group. È possibile avviare il failover forzato o semplice (con sincronizzazione completa dei dati).You can initiate forced or friendly failover (with full data synchronization). Quest'ultimo può essere usato per spostare il server attivo nell'area primaria.The latter could be used to relocate the active server to the primary region. Quando il failover viene completato, i record DNS vengono aggiornati automaticamente per garantire la connettività al server corretto.When failover is completed, the DNS records are automatically updated to ensure connectivity to the correct server.
  • Periodo di tolleranza con perdita di dati: poiché i database primario e secondario vengono sincronizzati tramite la replica asincrona, il failover può comportare la perdita di dati.Grace period with data loss: Because the primary and secondary databases are synchronized using asynchronous replication, the failover may result in data loss. È possibile personalizzare i criteri di failover automatico per riflettere la tolleranza dell'applicazione verso la perdita dei dati.You can customize the automatic failover policy to reflect your application’s tolerance to data loss. Configurando GracePeriodWithDataLossHours, è possibile verificare la lunghezza del periodo di attesa del sistema prima che venga avviato il failover che comporterà probabilmente la perdita dei dati.By configuring GracePeriodWithDataLossHours, you can control how long the system waits before initiating the failover that is likely to result data loss.

    Nota

    Quando il sistema rileva che i database del gruppo sono ancora online (ad esempio, l'interruzione del servizio ha interessato solo il piano di controllo del servizio), attiva immediatamente il failover con la sincronizzazione completa dei dati (failover semplice) indipendentemente dal valore impostato con GracePeriodWithDataLossHours.When system detects that the databases in the group are still online (for example, the outage only impacted the service control plane), it immediately activates the failover with full data synchronization (friendly failover) regardless of the value set by GracePeriodWithDataLossHours. Questo comportamento assicura che non avvenga alcuna perdita di dati durante il ripristino.This behavior ensures that there is no data loss during the recovery. Il periodo di tolleranza ha effetto solo quando non è possibile che si verifichi il failover semplice.The grace period takes effect only when a friendly failover is not possible. Se l'interruzione del servizio è stata risolta prima che scada il periodo di tolleranza, il failover non viene attivato.If the outage is mitigated before the grace period expires, the failover is not activated.

  • Più gruppi di failover: è possibile configurare più gruppi di failover per la stessa coppia di server per controllare la scalabilità di failover.Multiple failover groups: You can configure multiple failover groups for the same pair of servers to control the scale of failovers. Ogni gruppo esegue il failover in modo indipendente.Each group fails over independently. Se l'applicazione multi-tenant fa uso di pool elastici, è possibile usare questa funzionalità per combinare i database primari e secondari in ogni pool.If your multi-tenant application uses elastic pools, you can use this capability to mix primary and secondary databases in each pool. In questo modo è possibile ridurre l'impatto di un'interruzione a solo la metà dei tenant.This way you can reduce the impact of an outage to only half of the tenants.

Procedure consigliate per la creazione di un servizio a disponibilità elevataBest practices of building highly available service

Per creare un servizio a disponibilità elevata che usa il database SQL di Azure, è consigliabile attenersi alle indicazioni seguenti:To build a highly available service that uses Azure SQL database, you should follow these guidelines:

  • Usare gruppi di failover: è possibile creare uno o più gruppi di failover tra due server in aree diverse (server primario e secondario).Use failover group: One or many failover groups can be created between two servers in different regions (primary and secondary servers). Ogni gruppo può includere uno o più database che vengono ripristinati come unità nel caso in cui tutti o alcuni database primari diventino non disponibili a causa di un'interruzione nell'area primaria.Each group can include one or several databases that are recovered as a unit in case all or some primary databases become unavailable due to an outage in the primary region. Il gruppo di failover crea un database di replica geografica secondaria con lo stesso obiettivo di servizio di quello primario.The failover group creates geo-secondary database with the same service objective as the primary. Se si aggiunge una relazione di replica geografica esistente al gruppo di failover, verificare che il database di replica geografica secondario sia configurato con lo stesso obiettivo di livello di servizio del database primario.If you add an existing geo-replication relationship to the failover group, make sure the geo-secondary is configured with the same service level objective as the primary.
  • Usare il listener di lettura/scrittura per il carico di lavoro OLTP: quando si eseguono operazioni OLTP, usare <nome-gruppo-failover>.database.windows.net come URL del server per indirizzare automaticamente le connessioni al database primario.Use read-write listener for OLTP workload: When performing OLTP operations, use <failover-group-name>.database.windows.net as the server URL and the connections are automatically directed to the primary. Questo URL non cambia dopo il failover.This URL does not change after the failover.
    Si noti che il failover comporta l'aggiornamento del record DNS in modo che le connessioni client vengano reindirizzate al nuovo database primario solo dopo l'aggiornamento della cache DNS del client.Note the failover involves updating the DNS record so the client connections are redirected to the new primary only after the client DNS cache is refreshed.
  • Usare il listener di sola lettura per il carico di lavoro di sola lettura: se è presente un carico di lavoro di sola lettura isolato logicamente che tollera un certo grado di obsolescenza dei dati, è possibile usare il database secondario nell'applicazione.Use read-only listener for read-only workload: If you have a logically isolated read-only workload that is tolerant to certain staleness of data, you can use the secondary database in the application. Per le sessioni di sola lettura, usare <nome-gruppo-failover>.secondary.database.windows.net come URL del server per indirizzare automaticamente la connessione al database secondario.For read-only sessions, use <failover-group-name>.secondary.database.windows.net as the server URL and the connection is automatically directed to the secondary. È consigliabile anche indicare la finalità di lettura nella stringa di connessione usando ApplicationIntent=ReadOnly.It is also recommended that you indicate in connection string read intent by using ApplicationIntent=ReadOnly.
  • Prepararsi a un calo delle prestazioni: la decisione di failover di SQL è indipendente dal resto dell'applicazione o dagli altri servizi usati.Be prepared for perf degradation: SQL failover decision is independent from the rest of the application or other services used. L'applicazione potrebbe essere "mista" con alcuni componenti in un'area e alcuni componenti in un'altra.The application may be “mixed” with some components in one region and some in another. Per evitare il calo, verificare la distribuzione dell'applicazione ridondante nell'area di ripristino di emergenza, quindi seguire le istruzioni in questo articolo.To avoid the degradation, ensure the redundant application deployment in the DR region and follow the guidelines in this article.
    Si noti che l'applicazione nell'area di ripristino di emergenza non deve usare una stringa di connessione diversa.Note the application in the DR region does not have to use a different connection string.
  • Prepararsi a una perdita di dati: se viene rilevata un'interruzione, SQL attiva automaticamente il failover di lettura/scrittura se è prevedibile una perdita di dati nulla.Prepare for data loss: If an outage is detected, SQL automatically triggers read-write failover if there is zero data loss to the best of our knowledge. In caso contrario, attende il periodo specificato da GracePeriodWithDataLossHours.Otherwise, it waits for the period you specified by GracePeriodWithDataLossHours. Se è stato specificato GracePeriodWithDataLossHours, prepararsi a una perdita di dati.If you specified GracePeriodWithDataLossHours, be prepared for data loss. Durante le interruzioni del servizio, generalmente Azure predilige la disponibilità.In general, during outages, Azure favors availability. Se non ci si può permettere una perdita di dati, assicurarsi di impostare GracePeriodWithDataLossHours su un numero sufficientemente elevato, ad esempio 24 ore.If you cannot afford data loss, make sure to set GracePeriodWithDataLossHours to a sufficiently large number, such as 24 hours.

Importante

I pool elastici con 800 o meno DTU e più di 250 database con replica geografica possono riscontrare problemi quali failover pianificati più lunghi e un peggioramento delle prestazioni.Elastic pools with 800 or less DTUs and more than 250 databases using geo-replication may encounter issues including longer planned failovers and degraded performance. Questi problemi si verificano con maggiore probabilità nella scrittura di carichi di lavoro con utilizzo intensivo, quando gli endpoint con replica geografica sono ampiamente separati per area geografica o quando vengono utilizzati più endpoint secondari per ogni database.These issues are more likely to occur for write intensive workloads, when geo-replication endpoints are widely separated by geography, or when multiple secondary endpoints are used for each database. I sintomi di questi problemi emergono quando il ritardo della replica geografica aumenta nel tempo.Symptoms of these issues are indicated when the geo-replication lag increases over time. Questo ritardo può essere monitorato mediante sys.dm_geo_replication_link_status.This lag can be monitored using sys.dm_geo_replication_link_status. Se si verificano questi problemi, per prevenirli si può aumentare il numero di DTU nel pool o ridurre il numero di database replicati geograficamente nello stesso pool.If these issues occur, then mitigations include increasing the number of pool DTUs, or reducing the number of geo-replicated databases in the same pool.

Aggiornamento o downgrade di un database primarioUpgrading or downgrading a primary database

È possibile eseguire l'aggiornamento o il downgrade di un database primario a un livello di prestazioni diverso entro lo stesso livello di servizio, senza disconnettere eventuali database secondari.You can upgrade or downgrade a primary database to a different performance level (within the same service tier) without disconnecting any secondary databases. Quando si esegue l'aggiornamento, è consigliabile aggiornare prima di tutto il database secondario e quindi il database primario.When upgrading, we recommend that you upgrade the secondary database first, and then upgrade the primary. Quando si esegue il downgrade, seguire l'ordine inverso, ovvero eseguire prima di tutto il downgrade del database primario e quindi del database secondario.When downgrading, reverse the order: downgrade the primary first, and then downgrade the secondary. Quando si aggiorna o si effettua il downgrade del database a un livello di servizio diverso, viene applicata questa raccomandazione.When you upgrade or downgrade the database to a different service tier, this recommendation is enforced.

Nota

Se è stato creato il database secondario come parte della configurazione del gruppo di failover, non è consigliabile eseguire il downgrade del database secondario.If you created secondary database as part of the failover group configuration it is not recommended to downgrade the secondary database. In questo modo si garantisce che il livello dei dati abbia una capacità sufficiente per elaborare il carico di lavoro normale dopo che il failover viene attivato.This is to ensure your data tier has sufficient capacity to process your regular workload after failover is activated.

Evitare la perdita di dati criticiPreventing the loss of critical data

A causa della latenza elevata delle reti WAN, per la copia continua viene usato un meccanismo di replica asincrona.Due to the high latency of wide area networks, continuous copy uses an asynchronous replication mechanism. La replica asincrona rende inevitabile una perdita parziale dei dati nel caso si verifichi un problema.Asynchronous replication makes some data loss unavoidable if a failure occurs. Tuttavia, alcune applicazione potrebbero non essere soggette alla perdita dei dati.However, some applications may require no data loss. Per proteggere questi aggiornamenti critici, uno sviluppatore di applicazioni può chiamare la procedura di sistema sp_wait_for_database_copy_sync subito dopo il commit della transazione.To protect these critical updates, an application developer can call the sp_wait_for_database_copy_sync system procedure immediately after committing the transaction. La chiamata a sp_wait_for_database_copy_sync blocca il thread chiamante finché non viene completata la trasmissione dell'ultima transazione di cui è stato eseguito il commit nel database secondario.Calling sp_wait_for_database_copy_sync blocks the calling thread until the last committed transaction has been transmitted to the secondary database. Tuttavia, non attende che le transazioni trasmesse vengano riprodotta e che ne venga eseguito il commit nel database secondario.However, it does not wait for the transmitted transactions to be replayed and committed on the secondary. sp_wait_for_database_copy_sync ha come ambito un collegamento di copia continua specifico.sp_wait_for_database_copy_sync is scoped to a specific continuous copy link. La procedura può essere chiamata da qualsiasi utente che abbia diritti di connessione al database primario.Any user with the connection rights to the primary database can call this procedure.

Nota

sp_wait_for_database_copy_sync impedisce la perdita di dati dopo il failover, ma non garantisce la sincronizzazione completa per l'accesso in lettura.sp_wait_for_database_copy_sync prevents data loss after failover, but does not guarantee full synchronization for read access. Il ritardo causato da una chiamata di routine sp_wait_for_database_copy_sync può essere significativo e dipende dalle dimensioni del log delle transazioni al momento della chiamata.The delay caused by a sp_wait_for_database_copy_sync procedure call can be significant and depends on the size of the transaction log at the time of the call.

Gestione a livello di codice dei gruppi di failover e della replica geografica attivaProgrammatically managing failover groups and active geo-replication

Come indicato in precedenza, i gruppi di failover automatico (in anteprima) e la replica geografica attiva possono anche essere gestiti a livello di codice usando Azure PowerShell e l'API REST.As discussed previously, auto-failover groups (in-preview) and active geo-replication can also be managed programmatically using Azure PowerShell and the REST API. Le tabelle seguenti descrivono il set di comandi disponibili.The following tables describe the set of commands available.

API di Azure Resource Manager e sicurezza basata sui ruoli: la replica geografica attiva include un set di API di Azure Resource Manager per la gestione, compresa l'API REST del Database SQL di Azure e i cmdlet di Azure PowerShell.Azure Resource Manager API and role-based security: Active geo-replication includes a set of Azure Resource Manager APIs for management, including the Azure SQL Database REST API and Azure PowerShell cmdlets. Queste API richiedono l'uso di gruppi di risorse e supportano la sicurezza basata sui ruoli (Controllo degli accessi in base al ruolo).These APIs require the use of resource groups and support role-based security (RBAC). Per altre informazioni su come implementare i ruoli di accesso, vedere Controllo degli accessi in base al ruolo di Azure.For more information on how to implement access roles, see Azure Role-Based Access Control.

Gestire il failover del database SQL con Transact-SQLManage SQL database failover using Transact-SQL

ComandoCommand DescrizioneDescription
ALTER DATABASE (database SQL di Azure)ALTER DATABASE (Azure SQL Database) Usare l'argomento ADD SECONDARY ON SERVER per creare un database secondario per un database esistente e avviare la replica dei datiUse ADD SECONDARY ON SERVER argument to create a secondary database for an existing database and starts data replication
ALTER DATABASE (database SQL di Azure)ALTER DATABASE (Azure SQL Database) Usare FAILOVER o FORCE_FAILOVER_ALLOW_DATA_LOSS per passare un database secondario al ruolo di database primario per avviare il failoverUse FAILOVER or FORCE_FAILOVER_ALLOW_DATA_LOSS to switch a secondary database to be primary to initiate failover
ALTER DATABASE (database SQL di Azure)ALTER DATABASE (Azure SQL Database) Usare REMOVE SECONDARY ON SERVER per terminare la replica dei dati tra un database SQL e il database secondario specificato.Use REMOVE SECONDARY ON SERVER to terminate a data replication between a SQL Database and the specified secondary database.
sys.geo_replication_links (database SQL di Azure)sys.geo_replication_links (Azure SQL Database) Restituisce informazioni su tutti i collegamenti di replica esistenti per ogni database nel server logico del database SQL di Azure.Returns information about all existing replication links for each database on the Azure SQL Database logical server.
sys.dm_geo_replication_link_status (database SQL di Azure)sys.dm_geo_replication_link_status (Azure SQL Database) Ottiene l'ultima ora di replica, l'ultimo intervallo di replica e altre informazioni sul collegamento di replica per un database SQL specificato.Gets the last replication time, last replication lag, and other information about the replication link for a given SQL database.
sys.dm_operation_status (database SQL di Azure)sys.dm_operation_status (Azure SQL Database) Mostra lo stato per tutte le operazioni di database, incluso lo stato dei collegamenti di replica.Shows the status for all database operations including the status of the replication links.
sp_wait_for_database_copy_sync (database SQL di Azure)sp_wait_for_database_copy_sync (Azure SQL Database) fa sì che l'applicazione rimanga in attesa finché tutte le transazioni vengono replicate e riconosciute dal database secondario attivo.causes the application to wait until all committed transactions are replicated and acknowledged by the active secondary database.

Gestire il failover del database SQL con PowerShellManage SQL database failover using PowerShell

CmdletCmdlet DescrizioneDescription
Get-AzureRmSqlDatabaseGet-AzureRmSqlDatabase Ottiene uno o più database.Gets one or more databases.
New-AzureRmSqlDatabaseSecondaryNew-AzureRmSqlDatabaseSecondary Crea un database secondario per un database esistente e avvia la replica dei dati.Creates a secondary database for an existing database and starts data replication.
Set-AzureRmSqlDatabaseSecondarySet-AzureRmSqlDatabaseSecondary Consente di passare un database secondario al ruolo di database primario per avviare il failover.Switches a secondary database to be primary to initiate failover.
Remove-AzureRmSqlDatabaseSecondaryRemove-AzureRmSqlDatabaseSecondary Termina la replica dei dati tra un database SQL e il database secondario specificato.Terminates data replication between a SQL Database and the specified secondary database.
Get-AzureRmSqlDatabaseReplicationLinkGet-AzureRmSqlDatabaseReplicationLink Ottiene i collegamenti di replica geografica tra un database di SQL Azure e un gruppo di risorse o SQL Server.Gets the geo-replication links between an Azure SQL Database and a resource group or SQL Server.
New-AzureRmSqlDatabaseFailoverGroupNew-AzureRmSqlDatabaseFailoverGroup Questo comando crea un gruppo di failover e lo registra nei server primario e secondarioThis command creates a failover group and registers it on both primary and secondary servers
Remove-AzureRmSqlDatabaseFailoverGroupRemove-AzureRmSqlDatabaseFailoverGroup Rimuove il gruppo di failover dal server ed elimina tutti i database secondari incluso il gruppoRemoves the failover group from the server and deletes all secondary databases included the group
Get-AzureRmSqlDatabaseFailoverGroupGet-AzureRmSqlDatabaseFailoverGroup Recupera la configurazione del gruppo di failoverRetrieves the failover group configuration
Set-AzureRmSqlDatabaseFailoverGroupSet-AzureRmSqlDatabaseFailoverGroup Modifica la configurazione del gruppo di failoverModifies the configuration of the failover group
Switch-AzureRMSqlDatabaseFailoverGroupSwitch-AzureRMSqlDatabaseFailoverGroup Attiva il failover del gruppo di failover per il server secondarioTriggers failover of the failover group to the secondary server

Gestire il failover del database SQL con L'API RESTManage SQL database failover using the REST API

APIAPI DescrizioneDescription
Creare o aggiornare database (createMode=Restore)Create or Update Database (createMode=Restore) Crea, aggiorna o ripristina un database primario o secondario.Creates, updates, or restores a primary or a secondary database.
Get Create or Update Database StatusGet Create or Update Database Status Restituisce lo stato durante un'operazione di creazione.Returns the status during a create operation.
Impostazione del database secondario come primario (failover pianificato)Set Secondary Database as Primary (Planned Failover) Imposta il database di replica primario eseguendo il failover dal database di replica primaria corrente.Sets which replica database is primary by failing over from the current primary replica database.
Set Secondary Database as Primary (Unplanned Failover)Set Secondary Database as Primary (Unplanned Failover) Imposta il database di replica primario eseguendo il failover dal database di replica primaria corrente.Sets which replica database is primary by failing over from the current primary replica database. Questa operazione potrebbe comportare la perdita di dati.This operation might result in data loss.
Get Replication LinkGet Replication Link Ottiene tutti i collegamenti di replica specifici per un database SQL specificato in una relazione di replica geografica.Gets a specific replication link for a given SQL database in a geo-replication partnership. Recupera le informazioni visibili nella vista del catalogo sys.geo_replication_links.It retrieves the information visible in the sys.geo_replication_links catalog view.
Replication Links - List By DatabaseReplication Links - List By Database Ottiene tutti i collegamenti di replica per un database SQL specificato in una relazione di replica geografica.Gets all replication links for a given SQL database in a geo-replication partnership. Recupera le informazioni visibili nella vista del catalogo sys.geo_replication_links.It retrieves the information visible in the sys.geo_replication_links catalog view.
Delete Replication LinkDelete Replication Link Elimina un collegamento alla replica del database.Deletes a database replication link. Non può essere eseguito durante il failover.Cannot be done during failover.
Create or Update Failover GroupCreate or Update Failover Group Crea o aggiorna un gruppo di failover.Creates or updates a failover group
Delete Failover GroupDelete Failover Group Rimuove il gruppo di failover dal serverRemoves the failover group from the server
Failover (Planned)Failover (Planned) Viene eseguito il failover dal server primario corrente a questo server.Fails over from the current primary server to this server.
Force Failover Allow Data LossForce Failover Allow Data Loss Viene eseguito il failover dal server primario corrente a questo server.ails over from the current primary server to this server. Questa operazione potrebbe comportare la perdita di dati.This operation might result in data loss.
Get Failover GroupGet Failover Group Crea un gruppo di failover.Gets a failover group.
List Failover Groups By ServerList Failover Groups By Server Elenca i gruppi di failover in un server.Lists the failover groups in a server.
Update Failover GroupUpdate Failover Group Aggiorna un gruppo di failover.Updates a failover group.

Passaggi successiviNext steps