Failover gruppo di disponibilità AlwaysOn in LinuxAlways On Availability Group failover on Linux

QUESTO ARGOMENTO SI APPLICA A: SìSQL Server (solo Linux)nonDatabase SQL di AzurenonAzure SQL Data Warehousenon Parallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (Linux only)noAzure SQL DatabasenoAzure SQL Data WarehousenoParallel Data Warehouse

Nel contesto di un gruppo di disponibilità (AG), il ruolo primario e il ruolo secondario delle repliche di disponibilità sono generalmente intercambiabili in un processo noto come failover.Within the context of an availability group (AG), the primary role and secondary role of availability replicas are typically interchangeable in a process known as failover. Sono disponibili tre tipi di failover: failover automatico (senza perdita di dati), failover manuale pianificato (senza perdita di dati) e failover manuale forzato (con possibile perdita di dati), in genere chiamato failover forzato.Three forms of failover exist: automatic failover (without data loss), planned manual failover (without data loss), and forced manual failover (with possible data loss), typically called forced failover. Failover manuale automatico e pianificato vengono conservati tutti i dati.Automatic and planned manual failovers preserve all your data. Un gruppo di disponibilità di failover a livello di replica di disponibilità.An AG fails over at the availability-replica level. Vale a dire, un gruppo di disponibilità viene eseguito in una delle relative repliche secondarie (la destinazione del failover corrente).That is, an AG fails over to one of its secondary replicas (the current failover target).

Per informazioni generali sul failover, vedere Failover e modalità di failover.For background information about failover, see Failover and failover modes.

Failover manualeManual failover

Usare gli strumenti di Gestione cluster di failover a un gruppo di disponibilità gestito da un gestore cluster esterno.Use the cluster management tools to fail over an AG managed by an external cluster manager. Ad esempio, se una soluzione Usa Pacemaker per gestire un cluster Linux, usare pcs per eseguire i failover manuali in Ubuntu o RHEL.For example, if a solution uses Pacemaker to manage a Linux cluster, use pcs to perform manual failovers on RHEL or Ubuntu. In SLES usare crm.On SLES use crm.

Importante

In condizioni normali, non eseguire il failover con gli strumenti di gestione di Transact-SQL o SQL Server, ad esempio SQL Server Management Studio o PowerShell.Under normal operations, do not fail over with Transact-SQL or SQL Server management tools like SSMS or PowerShell. Quando CLUSTER_TYPE = EXTERNAL, il jedinou platnou hodnotu Pro FAILOVER_MODE è EXTERNAL.When CLUSTER_TYPE = EXTERNAL, the only acceptable value for FAILOVER_MODE is EXTERNAL. Con queste impostazioni, tutte le azioni di failover manuale o automatica vengono eseguite dal gestore del cluster esterno.With these settings, all manual or automatic failover actions are executed by the external cluster manager. Per istruzioni su come forzare il failover con potenziale perdita di dati, vedere forzare il failover.For instructions to force failover with potential data loss, see Force failover.

Passaggi del failover manualeManual failover steps

Per eseguire il failover, la replica secondaria che diventerà la replica primaria deve essere sincrona.To fail over, the secondary replica that will become the primary replica must be synchronous. Se una replica secondaria è asincrona, modificare la modalità di disponibilità.If a secondary replica is asynchronous, change the availability mode.

Eseguire il failover manuale in due passaggi.Manually fail over in two steps.

Prima di tutto effettuare manualmente il failover lo spostamento di risorse del gruppo di disponibilità dal nodo del cluster che è proprietario delle risorse in un nuovo nodo.First, manually fail over by moving AG resource from the cluster node that owns the resources to a new node.

Il cluster di failover della risorsa del gruppo di disponibilità e aggiunge un vincolo di posizione.The cluster fails the AG resource over and adds a location constraint. Questo vincolo consente di configurare la risorsa per l'esecuzione nel nuovo nodo.This constraint configures the resource to run on the new node. Per eseguire il failover in futuro, rimuovere il vincolo.Remove this constraint in order to successfully fail over in the future.

Secondo, rimuovere il vincolo di percorso.Second, remove the location constraint.

Passaggio 1.Step 1. Effettuare manualmente il failover lo spostamento di risorsa del gruppo di disponibilitàManually fail over by moving availability group resource

Per eseguire manualmente il failover una risorsa del gruppo di disponibilità denominata ag_cluster al nodo del cluster denominata nodeName2, eseguire il comando appropriato per la distribuzione:To manually fail over an AG resource named ag_cluster to cluster node named nodeName2, run the appropriate command for your distribution:

  • Esempio RHEL/UbuntuRHEL/Ubuntu example

    sudo pcs resource move ag_cluster-master nodeName2 --master
    
  • Esempio SLESSLES example

    crm resource migrate ag_cluster nodeName2
    

Importante

Dopo il failover manuale su una risorsa, è necessario rimuovere un vincolo di posizione aggiunto automaticamente.After you manually fail over a resource, you need to remove a location constraint that is automatically added.

Passaggio 2. Step 2. Rimuovere il vincolo di posizioneRemove the location constraint

Durante un failover manuale, il pcs comandi move oppure crm comando migrate aggiunge un vincolo di posizione per la risorsa da inserire nel nuovo nodo di destinazione.During a manual failover, the pcs command move or crm command migrate adds a location constraint for the resource to be placed on the new target node. Per visualizzare il nuovo vincolo, eseguire il comando seguente dopo aver spostato manualmente la risorsa:To see the new constraint, run the following command after manually moving the resource:

  • Esempio RHEL/UbuntuRHEL/Ubuntu example

    sudo pcs constraint list --full
    
  • Esempio SLESSLES example

    crm config show
    

Un esempio del vincolo che viene creato a causa di un failover manuale.An example of the constraint which gets created becuase of a manual failover. Enabled on: Node1 (score:INFINITY) (role: Master) (id:cli-prefer-ag_cluster-master)

  • Esempio RHEL/UbuntuRHEL/Ubuntu example

    Nel comando seguente cli-prefer-ag_cluster-master è l'ID del vincolo che deve essere rimosso.In the following command cli-prefer-ag_cluster-master is the ID of the constraint that needs to be removed. sudo pcs constraint list --full restituisce questo ID.sudo pcs constraint list --full returns this ID.

    sudo pcs constraint remove cli-prefer-ag_cluster-master  
    
  • Esempio SLESSLES example

    Nel comando seguente cli-prefer-ms-ag_cluster è l'ID del vincolo.In the following command cli-prefer-ms-ag_cluster is the ID of the constraint. crm config show restituisce questo ID.crm config show returns this ID.

    crm configure
    delete cli-prefer-ms-ag_cluster 
    commit
    

Nota

Il failover automatico non comporta l'aggiunta di un vincolo di posizione, quindi non è necessaria alcuna operazione di pulizia.Automatic failover does not add a location constraint, so no cleanup is necessary.

Per ulteriori informazioni:For more information:

Forzare il failoverForce failover

Un failover forzato è deve essere utilizzato esclusivamente per il ripristino di emergenza.A forced failover is intended strictly for disaster recovery. In questo caso, è possibile eseguire il failover con gli strumenti di gestione di cluster perché il Data Center primario è inattivo.In this case, you cannot fail over with cluster management tools because the primary datacenter is down. Se si forza il failover in una replica secondaria non sincronizzata, è possibile che vengano persi alcuni dati.If you force failover to an unsynchronized secondary replica, some data loss is possible. Forzare il failover solo se è necessario ripristinare il servizio al gruppo di disponibilità immediatamente e sono disposti a rischiare la perdita di dati.Only force failover if you must restore service to the AG immediately and are willing to risk losing data.

Se è possibile usare gli strumenti di gestione di cluster per l'interazione con il cluster, ad esempio, se il cluster è non risponde a causa di un evento di emergenza nel data center primario, potrebbe essere necessario forzare il failover per ignorare la gestione di cluster external.If you cannot use the cluster management tools for interacting with the cluster - for example, if the cluster is unresponsive due to a disaster event in the primary data center, you might have to force failover to bypass the external cluster manager. Questa procedura non è consigliabile per le normali operazioni, perché si rischia di perdita di dati.This procedure is not recommended for regular operations because it risks data loss. Usarlo quando gli strumenti di gestione di cluster non riescono a eseguire l'azione di failover.Use it when the cluster management tools fail to execute the failover action. A livello funzionale, questa procedura è simile a esegue un failover manuale forzato in un gruppo di disponibilità in Windows.Functionally, this procedure is similar to performing a forced manual failover on an AG in Windows.

Questo processo per il failover forzato è specifico di SQL Server in Linux.This process for forcing failover is specific to SQL Server on Linux.

  1. Verificare che la risorsa del gruppo di disponibilità non è gestita dal cluster più.Verify that the AG resource is not managed by the cluster any more.

    • Impostare la risorsa in modalità non gestita nel nodo del cluster di destinazione.Set the resource to unmanaged mode on the target cluster node. Questo comando segnala l'agente delle risorse alla gestione e monitoraggio delle risorse significative.This command signals the resource agent to stop resource monitoring and management. Esempio:For example:

      sudo pcs resource unmanage <resourceName>
      
    • Se il tentativo di impostare la modalità di risorse per la modalità non gestita non riesce, eliminare la risorsa.If the attempt to set the resource mode to unmanaged mode fails, delete the resource. Esempio:For example:

      sudo pcs resource delete <resourceName>
      

      Nota

      Quando si elimina una risorsa, verranno inoltre eliminati tutti i vincoli associati.When you delete a resource, it also deletes all of the associated constraints.

  2. Nell'istanza di SQL Server che ospita la replica secondaria, impostare la variabile di contesto di sessione external_cluster.On the instance of SQL Server that hosts the secondary replica, set the session context variable external_cluster.

    EXEC sp_set_session_context @key = N'external_cluster', @value = N'yes';
    
  3. Eseguire il failover del gruppo di disponibilità con Transact-SQL.Fail over the AG with Transact-SQL. Nell'esempio seguente, sostituire <MyAg> con il nome del gruppo di disponibilità.In the following example, replace <MyAg> with the name of your AG. Connettersi all'istanza di SQL Server che ospita la replica secondaria di destinazione ed eseguire il comando seguente:Connect to the instance of SQL Server that hosts the target secondary replica and run the following command:

    ALTER AVAILABILITY GROUP <MyAg> FORCE_FAILOVER_ALLOW_DATA_LOSS;
    
  4. Dopo un failover forzato, portare il gruppo di disponibilità in uno stato integro prima di riavviare il monitoraggio delle risorse cluster e la gestione o ricreare la risorsa del gruppo di disponibilità.After a forced failover, bring the AG to a healthy state before either restarting the cluster resource monitoring and management or recreating the AG resource. Rivedere le attività essenziali dopo un Failover forzato.Review the Essential Tasks After a Forced Failover.

  5. Riavviare Gestione e monitoraggio delle risorse cluster:Either restart cluster resource monitoring and management:

    Per riavviare la gestione e monitoraggio delle risorse cluster, eseguire il comando seguente:To restart the cluster resource monitoring and management, run the following command:

    sudo pcs resource manage <resourceName>
    sudo pcs resource cleanup <resourceName>
    

    Se si elimina la risorsa cluster, è necessario ricrearla.If you deleted the cluster resource, recreate it. Per ricreare la risorsa cluster, seguire le istruzioni in creare una risorsa del gruppo di disponibilità.To recreate the cluster resource, follow the instructions at Create availability group resource.

Importante

Non usare i passaggi precedenti per le esercitazioni sul ripristino di emergenza perché è il rischio di perdita di dati.Do not use the preceding steps for disaster recovery drills because they risk data loss. Invece di modificare la replica asincrona diventa sincrona e le istruzioni relative failover manuale normale.Instead change the asynchronous replica to synchronous, and the instructions for normal manual failover.

Database trigger a livello di monitoraggio e failoverDatabase level monitoring and failover trigger

Per CLUSTER_TYPE=EXTERNAL, la semantica di trigger di failover è diversa rispetto al cluster WSFC.For CLUSTER_TYPE=EXTERNAL, the failover trigger semantics are different compared to WSFC. Quando il gruppo di disponibilità si trova in un'istanza di SQL Server in un cluster WSFC, la transizione di ONLINE sullo stato per il database fa sì che l'integrità del gruppo di disponibilità segnalare un errore.When the AG is on an instance of SQL Server in a WSFC, transitioning out of ONLINE state for the database causes the AG health to report a fault. In risposta, la gestione di cluster attiva un'azione di failover.In response, the cluster manager triggers a failover action. In Linux, l'istanza di SQL Server non può comunicare con il cluster.On Linux, the SQL Server instance cannot communicate with the cluster. Il monitoraggio per l'integrità del database viene eseguita esterno a interno.Monitoring for database health is done outside-in. Se utente scelto per il monitoraggio di failover a livello di database e failover (impostando l'opzione DB_FAILOVER=ON durante la creazione del gruppo di disponibilità), il cluster viene verificato se lo stato del database ONLINE ogni volta che esegue un'azione di monitoraggio.If user opted in for database level failover monitoring and failover (by setting the option DB_FAILOVER=ON when creating the AG), the cluster will check if the database state is ONLINE every time it runs a monitoring action. Il cluster esegue una query lo stato in sys.databases.The cluster queries the state in sys.databases. Per qualsiasi stato diverso da quello ONLINE, attiverà un failover automaticamente (se vengono soddisfatte le condizioni di failover automatico).For any state different than ONLINE, it will trigger a failover automatically (if automatic failover conditions are met). Il tempo effettivo del failover dipende dalla frequenza dell'azione di monitoraggio, nonché lo stato del database in corso l'aggiornamento in sys. Databases.The actual time of the failover depends on the frequency of the monitoring action as well as the database state being updated in sys.databases.

Il failover automatico richiede almeno una replica sincrona.Automatic failover requires at least one synchronous replica.

Passaggi successiviNext steps

Configurare Cluster di Red Hat Enterprise Linux per le risorse Cluster il gruppo di disponibilità di SQL ServerConfigure Red Hat Enterprise Linux Cluster for SQL Server Availability Group Cluster Resources

Configurare Cluster di SUSE Linux Enterprise Server per le risorse Cluster il gruppo di disponibilità di SQL ServerConfigure SUSE Linux Enterprise Server Cluster for SQL Server Availability Group Cluster Resources

Configurare Cluster di Ubuntu per le risorse Cluster il gruppo di disponibilità di SQL ServerConfigure Ubuntu Cluster for SQL Server Availability Group Cluster Resources