Questo articolo illustra come riavviare Istanza gestita di SQL di Azure eseguendo un failover manuale avviato dall'utente in un nodo di calcolo secondario usando PowerShell, l'interfaccia della riga di comando di Azure o l'API REST.
Questo articolo spiega come eseguire il failover manuale di un nodo primario nei livelli di servizio Utilizzo generico (GP) e Business Critical (BC) ed eseguire il failover manuale di un nodo secondario di replica di sola lettura in un livello di servizio soltanto BC.
Nota
Il failover in questo articolo fa riferimento all'avvio del processo del motore di database di SQL Server in un nodo secondario e non è correlato al failover tra aree di un gruppo di failover.
Quando usare il failover manuale
La disponibilità, una parte fondamentale della piattaforma Istanza gestita di SQL, funziona in modo trasparente per le applicazioni di database fornendo nodi di calcolo standby locali per ospitare il processo del motore di database di SQL Server. Un failover si verifica quando il processo del motore di database di SQL Server viene portato offline nel nodo di calcolo primario e viene portato online in un nodo di calcolo secondario. In genere, i failover tra i nodi di calcolo dell'istanza gestita di SQL sono automatici e gestiti dalla piattaforma quando viene rilevato un errore, un nodo è danneggiato o durante gli aggiornamenti software mensili regolari.
L'intera operazione di failover consiste nel portare online il processo del motore di database di SQL Server in un nodo secondario, convalidando lo stato del database e quindi reindirizzando infine le connessioni client al nuovo nodo primario. Le connessioni client hanno esito negativo solo per un breve periodo di tempo, in genere inferiore a un minuto, durante il passaggio finale dell'operazione di failover.
È possibile eseguire un failover manuale per riavviare il processo del motore in un nodo diverso per i motivi seguenti:
Accessi non riusciti o lentezza a causa di problemi di prestazioni.
Testare la resilienza al failover dell'applicazione prima della distribuzione nell'ambiente di produzione.
Testare la resilienza agli errori dei sistemi end-to-end nei failover automatici.
Testare l'impatto del failover sulle sessioni di database esistenti.
Riduzione delle prestazioni delle query (il riavvio dell'istanza può contribuire a ridurre il problema di prestazioni).
Assicurarsi che le applicazioni siano resilienti al failover prima della distribuzione nell'ambiente di produzione consente di ridurre il rischio di errori dell'applicazione nell'ambiente di produzione e contribuisce alla disponibilità delle applicazioni per i clienti. Per altre informazioni sul test delle applicazioni per la conformità al cloud, vedere il video seguente:
La tabella seguente descrive il comportamento previsto di Istanza gestita di SQL durante un'operazione di failover in base al livello di servizio e al modello di disponibilità:
La versione minima di Az.Sql deve essere v2.9.0. Prendere in considerazione l'uso di Azure Cloud Shell dal portale di Azure per la versione più recente di PowerShell disponibile.
Come prerequisito, usare lo script di PowerShell seguente per installare i moduli di Azure necessari. Selezionare anche la sottoscrizione in cui si trova Istanza gestita di SQL per il posizionamento del failover.
PowerShell
$subscription = 'enter your subscription ID here'Install-Module -Name Az
Import-Module Az.Accounts
Import-Module Az.Sql
Connect-AzAccountSelect-AzSubscription -SubscriptionId$subscription
Usare il comando Invoke-AzSqlInstanceFailover di PowerShell con il seguente esempio per avviare il failover del nodo primario, applicabile al livello di servizio BC e GP.
PowerShell
$ResourceGroup = 'enter resource group of your MI'$ManagedInstanceName = 'enter MI name'Invoke-AzSqlInstanceFailover -ResourceGroupName$ResourceGroup -Name$ManagedInstanceName
Usare il seguente comando di PowerShell per eseguire il failover del nodo secondario in lettura, applicabile solo al livello di servizio BC.
PowerShell
$ResourceGroup = 'enter resource group of your MI'$ManagedInstanceName = 'enter MI name'Invoke-AzSqlInstanceFailover -ResourceGroupName$ResourceGroup -Name$ManagedInstanceName -ReadableSecondary
Assicurarsi di aver installato gli script più recenti dell'interfaccia della riga di comando.
Usare il comando az sql mi failover CLI con il seguente esempio per avviare il failover del nodo primario, applicabile al livello di servizio BC e GP.
cli
az sql mi failover -g myresourcegroup -n myinstancename
Usare il seguente comando della CLI per eseguire il failover del nodo secondario in lettura, applicabile solo al livello di servizio BC.
cli
az sql mi failover -g myresourcegroup -n myinstancename --replica-type ReadableSecondary
Per gli utenti avanzati che potrebbero dover automatizzare i failover della propria Istanza gestita di SQL ai fini dell'implementazione di pipeline di test continui o di mitigazioni automatizzate delle prestazioni, questa funzione può essere eseguita tramite l'avvio del failover tramite una chiamata API. Per informazioni dettagliate, vedere Istanza gestita di SQL - API REST di failover.
Per avviare il failover usando la chiamata API REST, generare innanzitutto il token di autenticazione usando il client API preferito. Il token di autenticazione generato viene usato come proprietà Authorization nell'intestazione della richiesta API, ed è obbligatorio.
Il codice seguente è un esempio di URI dell'API da chiamare:
HTTP
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/managedInstances/{managedInstanceName}/failover?api-version=2019-06-01-preview
Le seguenti proprietà devono essere trasferite alla chiamata API:
Proprietà API
Parametro
subscriptionId
ID sottoscrizione in cui viene distribuita l'istanza gestita
resourceGroupName
Gruppo di ricorse che contiene l'istanza gestita
managedInstanceName
Nome dell'istanza gestita
replicaType
(Facoltativo) (Primary o ReadableSecondary). Questi parametri rappresentano il tipo di replica di cui eseguire il failover: primario o secondario leggibile. Se non specificato il failover viene avviato nella replica primaria per impostazione predefinita.
api-version
Il valore statico deve attualmente essere "2019-06-01-preview"
L'API risponde con uno dei due valori seguenti:
202 - Accettato
Uno degli errori di richiesta 400.
Lo stato dell'operazione può essere monitorato tramite la revisione delle risposte API nelle intestazioni di risposta. Per ulteriori informazioni, vedere Stato delle operazioni asincrone di Azure.
Monitorare il failback
Il monitoraggio dello stato di avanzamento di un failover avviato dall'utente differisce per le istanze nei livelli di servizio Business Critical e Utilizzo generico.
Per monitorare lo stato di avanzamento di un failover avviato dall'utente, usare:
sys.dm_os_sys_info per controllare il tempo di attività del sistema per il livello di servizio Utilizzo generico.
sys.dm_hadr_fabric_replica_states per controllare le repliche disponibili per il livello di servizio Business Critical.
Il passaggio finale del processo di failover è il reindirizzamento delle connessioni client al nuovo nodo primario. La breve perdita di connettività dal client durante il failover, che in genere dura meno di un minuto, indica che il failover è riuscito correttamente indipendentemente dal livello di servizio.
Livello di servizio Utilizzo generico
L'esempio T-SQL seguente mostra il tempo di attività per il processo SQL nel nodo per il livello di servizio Utilizzo generico:
SQL
SELECT sqlserver_start_time, sqlserver_start_time_ms_ticks FROM sys.dm_os_sys_info
L'ora di inizio del processo SQL è l'ora in cui il processo del motore di database di SQL Server è stato avviato nel nodo. Il tempo viene riavviato al termine del failover. Eseguire questa query prima e dopo aver avviato un failover di un'istanza nel livello di servizio Utilizzo generico per monitorare lo stato di avanzamento dell'operazione di failover.
Livello di servizio Business Critical
L'esempio T-SQL seguente indica quale nodo è attualmente la replica primaria per il livello di servizio Business Critical:
SQL
SELECTDISTINCT replication_endpoint_url, fabric_replica_role_desc FROM sys.dm_hadr_fabric_replica_states
Il nodo che ospita la replica primaria cambia dopo il completamento del failover. Eseguire questa query prima e dopo aver avviato un failover di un'istanza nel livello di servizio Business Critical per monitorare lo stato di avanzamento dell'operazione di failover.
Nota
Il completamento del processo di failover completo potrebbe richiedere alcuni minuti durante carichi di lavoro ad alta intensità perché il motore di istanze garantisce che le transazioni nel nodo secondario vengano intercettati nelle transazioni dal nodo primario prima di avviare il failover.
Limiti
Le limitazioni funzionali del failover manuale avviato dall'utente sono:
Potrebbe esservi un (1) failover avviato nella stessa Istanza gestita di SQL ogni 15 minuti.
I failover non sono consentiti:
Finché il primo backup completo di un nuovo database non viene completato dai sistemi di backup automatizzati.
se è in corso il ripristino del database.
Per le istanze nel livello di servizio Business Critical:
Deve esistere un quorum di repliche affinché la richiesta di failover venga accettata.
Non è possibile specificare la replica secondaria leggibile in cui avviare il failover.
Amministrare un'infrastruttura di database SQL Server per database relazionali, ibridi, locali e cloud con le offerte di database relazionali Microsoft PaaS.