Funzioni gruppo di disponibilità elevata per SQL Server in LinuxOperate HA availability group for SQL Server on Linux

QUESTO ARGOMENTO SI APPLICA A: noSQL Server su WindowssìSQL Server su LinuxnoDatabase SQL di AzurenoAzure SQL Data WarehousenoParallel Data Warehouse THIS TOPIC APPLIES TO: noSQL Server on WindowsyesSQL Server on LinuxnoAzure SQL DatabasenoAzure SQL Data WarehousenoParallel Data Warehouse

Gruppo di disponibilità il failoverFail over availability group

Utilizzare 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 availability group managed by an external cluster manager. Ad esempio, se una soluzione Usa Pacemaker per gestire un cluster Linux, usare pcs per eseguire il failover manuale su RHEL o Ubuntu.For example, if a solution uses Pacemaker to manage a Linux cluster, use pcs to perform manual failovers on RHEL or Ubuntu. SLES utilizza crm.On SLES use crm.

Importante

In condizioni normali, non viene eseguito con gli strumenti di gestione di Transact-SQL o SQL Server come 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, l'unico valore accettabile per 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.

Esempi di failover manualeManual failover examples

Eseguire manualmente il failover del gruppo di disponibilità con gli strumenti di gestione del cluster esterno.Manually fail over the availability group with the external cluster management tools. In condizioni normali, non avviare il failover con Transact-SQL.Under normal operations, do not initiate failover with Transact-SQL. Se gli strumenti di gestione del cluster esterno non risponde, è possibile forzare il gruppo di disponibilità per il failover.If the external cluster management tools do not respond, you can force the availability group to fail over. Per istruzioni per forzare il failover manuale, vedere manuale spostare quando gli strumenti di cluster non sono reattivi.For instructions to force the manual failover, see Manual move when cluster tools are not responsive.

Completare il failover manuale in due passaggi.Complete the manual failover in two steps.

  1. Spostare la risorsa del gruppo di disponibilità dal nodo del cluster che sia proprietario delle risorse in un nuovo nodo.Move the availability group resource from the cluster node that owns the resources to a new node.

    Gestione cluster di sposta la risorsa del gruppo di disponibilità e aggiunge un vincolo di percorso.The cluster manager moves the availability group resource and adds a location constraint. Questo vincolo consente di configurare la risorsa per l'esecuzione del nuovo nodo.This constraint configures the resource to run on the new node. Per spostare che una manualmente o automaticamente il failover in futuro, è necessario rimuovere questo vincolo.You must remove this constraint in order to move either manually or automatically fail over in the future.

  2. Rimuovere il vincolo di percorso.Remove the location constraint.

1. Il failover manuale1. Manually fail over

Per eseguire manualmente il failover di una risorsa del gruppo di disponibilità denominata ag_cluster al nodo cluster denominato nodeName2, eseguire il comando appropriato per la distribuzione:To manually fail over an availability group resource named ag_cluster to cluster node named nodeName2, run 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 aver eseguito manualmente su una risorsa, è necessario rimuovere un vincolo di percorso che viene aggiunto automaticamente durante lo spostamento.After you manually fail over a resource, you need to remove a location constraint that is automatically added during the move.

2. Rimuovere il vincolo di posizione2. Remove the location constraint

Durante lo spostamento manuale, il pcs comando move o crm comando migrate aggiunge un vincolo di percorso per la risorsa da inserire nel nuovo nodo di destinazione.During a manual move, 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 --full
    
  • Esempio SLESSLES example

    crm config show
    

È necessario rimuovere il vincolo di posizione per consentire la corretta esecuzione degli spostamenti futuri, incluso il failover automatico.You need to remove the location constraint so future moves - including automatic failover - succeed.

Per rimuovere il vincolo, eseguire il comando seguente.To remove the constraint run the following command.

  • Esempio RHEL/UbuntuRHEL/Ubuntu example

    In questo esempio ag_cluster-master è il nome della risorsa che è stato spostato.In this example ag_cluster-master is the name of the resource that was moved.

    sudo pcs resource clear ag_cluster-master 
    
  • Esempio SLESSLES example

    In questo esempio ag_cluster è il nome della risorsa che è stato spostato.In this example ag_cluster is the name of the resource that was moved.

    crm resource clear ag_cluster
    

In alternativa, è possibile eseguire il comando seguente per rimuovere il vincolo di posizione.Alternatively, you can run the following command to remove the location constraint.

  • 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 --full restituisce questo ID.sudo pcs constraint --full returns this ID.

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

    Il 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:

Manuale spostare quando gli strumenti di cluster non risponde Manual move when cluster tools are not responsive

In casi estremi, se un utente non è possibile utilizzare gli strumenti di gestione di cluster per l'interazione con il cluster (ad esempio il cluster non risponde, gli strumenti di gestione di cluster hanno un comportamento non corretto), l'utente potrebbe essere necessario eseguire il failover manualmente, ignorando la gestione del cluster esterno.In extreme cases, if a user cannot use the cluster management tools for interacting with the cluster (i.e. the cluster is unresponsive, cluster management tools have a faulty behavior), the user might have to fail over manually - bypassing the external cluster manager. Questo non è consigliabile per le normali operazioni e deve essere utilizzato in cluster non riesce a eseguire l'azione di failover utilizzando gli strumenti di Gestione cluster di case.This is not recommended for regular operations, and should be used within cases cluster is failing to execute the failover action using the cluster management tools.

Se è possibile eseguire il failover del gruppo di disponibilità con gli strumenti di gestione di cluster, attenersi alla seguente procedura per eseguire il failover da strumenti di SQL Server:If you cannot fail over the availability group with the cluster management tools, follow these steps to fail over from SQL Server tools:

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

    • Tentativo di impostare la risorsa in modalità non gestita.Attempt to set the resource to unmanaged mode. Segnala l'agente di risorsa per arrestare il monitoraggio delle risorse e la gestione.This 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 risorsa in 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. Impostare manualmente la variabile di contesto di sessione external_cluster.Manually set the session context variable external_cluster.

    EXEC sp_set_session_context @key = N'external_cluster', @value = N'yes';
    
  3. Failover del gruppo di disponibilità con Transact-SQL.Fail over the availability group with Transact-SQL. Nell'esempio seguente sostituire <**MyAg**> con il nome del gruppo di disponibilità.In the example below replace <**MyAg**> with the name of your availability group. 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**> FAILOVER;
    
  4. Riavviare Gestione e monitoraggio delle risorse cluster.Restart cluster resource monitoring and management. Eseguire il comando seguente:Run the following command:

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

Trigger di monitoraggio e failover di livello databaseDatabase level monitoring and failover trigger

Per CLUSTER_TYPE=EXTERNAL, la semantica di trigger di failover è diversa rispetto a WSFC.For CLUSTER_TYPE=EXTERNAL, the failover trigger semantics are different compared to WSFC. Quando il gruppo di disponibilità in un'istanza di SQL Server in un cluster WSFC, la transizione da ONLINE stato per il database fa sì che l'integrità del gruppo di disponibilità segnalare un errore.When the availability group is on an instance of SQL Server in a WSFC, transitioning out of ONLINE state for the database causes the availability group health to report a fault. Questo segnalerà la gestione di cluster per attivare un'azione di failover.This will signal the cluster manager to trigger 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. Monitoraggio per l'integrità del database viene eseguito "esterno in".Monitoring for database health is done "outside-in". Se utente scelto per il monitoraggio del failover di livello database e il failover (impostando l'opzione DB_FAILOVER=ON quando si crea il gruppo di disponibilità), il cluster viene verificato se lo stato del database ONLINE ogni volta che al momento dell'esecuzione di 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 availability group), the cluster will check if the database state is ONLINE every time when it runs a monitoring action. Il cluster esegue query sullo 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 viene aggiornato 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.

Aggiornare il gruppo di disponibilitàUpgrade availability group

Prima di aggiornare un gruppo di disponibilità, esaminare le procedure consigliate in l'aggiornamento di istanze di replica di disponibilità gruppo.Before you upgrade an availability group, review the best practices at Upgrading availability group replica instances.

Le sezioni seguenti illustrano come eseguire un aggiornamento in sequenza con istanze di SQL Server in Linux con gruppi di disponibilità.The following sections explain how to perform a rolling upgrade with SQL Server instances on Linux with availability groups.

Passaggi di aggiornamento su LinuxUpgrade steps on Linux

Quando repliche del gruppo di disponibilità si trovano in istanze di SQL Server in Linux, il tipo di cluster del gruppo di disponibilità è EXTERNAL o NONE.When availability group replicas are on instances of SQL Server in Linux, the cluster type of the availability group is either EXTERNAL or NONE. Un gruppo di disponibilità che è gestito da Gestione cluster di diversi da Windows Server Failover Cluster (WSFC) EXTERNAL.An availability group that is managed by a cluster manager besides Windows Server Failover Cluster (WSFC) is EXTERNAL. Pacemaker con Corosync è riportato un esempio di Gestione cluster esterno.Pacemaker with Corosync is an example of an external cluster manager. Dispone di un gruppo di disponibilità con alcuna Gestione cluster di tipo cluster NONE i passaggi di aggiornamento descritti di seguito sono specifici per i gruppi di disponibilità di tipo cluster EXTERNAL o NONE.An availability group with no cluster manager has cluster type NONE The upgrade steps outlined here are specific for availability groups of cluster type EXTERNAL or NONE.

  1. Prima di iniziare, eseguire il backup ogni database.Before you begin, backup each database.
  2. Aggiornare le istanze di SQL Server di ospitare le repliche secondarie.Upgrade instances of SQL Server that host secondary replicas.

    a.a. Prima di tutto aggiornare repliche secondarie asincrone.Upgrade asynchronous secondary replicas first.

    b.b. Aggiornare le repliche secondarie sincrone.Upgrade synchronous secondary replicas.

    Nota

    Se un gruppo di disponibilità dispone solo di asincrona repliche - per evitare eventuali perdite di dati modificare una replica sincrona e attendere fino a quando viene sincronizzata.If an availability group only has asynchronous replicas - to avoid any data loss change one replica to synchronous and wait until it is synchronized. Quindi aggiornare la replica.Then upgrade this replica.

    b. 1.b.1. Interrompere la risorsa nel nodo che ospita la replica secondaria di destinazione per l'aggiornamentoStop the resource on the node hosting the secondary replica targeted for upgrade

    Prima di eseguire il comando di aggiornamento, è possibile interrompere la risorsa in modo che il cluster non verrà monitorarlo e negativo inutilmente.Before running the upgrade command, stop the resource so the cluster will not monitor it and fail it unnecessarily. Nell'esempio seguente aggiunge un vincolo di percorso sul nodo che si tradurrà sulla risorsa da arrestare.The following example adds a location constraint on the node that will result on the resource to be stopped. Aggiornamento ag_cluster-master con il nome della risorsa e nodeName1 con il nodo che ospita la replica di destinazione per l'aggiornamento.Update ag_cluster-master with the resource name and nodeName1 with the node hosting the replica targeted for upgrade.

    pcs constraint location ag_cluster-master avoids nodeName1
    

    b. 2.b.2. Aggiornamento di SQL Server nella replica secondariaUpgrade SQL Server on the secondary replica

    Nell'esempio seguente viene aggiornata mssql-server e mssql-server-ha pacchetti.The following example upgrades mssql-server and mssql-server-ha packages.

    sudo yum update mssql-server
    sudo yum update mssql-server-ha
    

    b. 3.b.3. Rimuovere il vincolo di posizioneRemove the location constraint

    Prima di eseguire il comando di aggiornamento, è possibile interrompere la risorsa in modo che il cluster non verrà monitorarlo e negativo inutilmente.Before running the upgrade command, stop the resource so the cluster will not monitor it and fail it unnecessarily. Nell'esempio seguente aggiunge un vincolo di percorso sul nodo che si tradurrà sulla risorsa da arrestare.The following example adds a location constraint on the node that will result on the resource to be stopped. Aggiornamento ag_cluster-master con il nome della risorsa e nodeName1 con il nodo che ospita la replica di destinazione per l'aggiornamento.Update ag_cluster-master with the resource name and nodeName1 with the node hosting the replica targeted for upgrade.

    pcs constraint remove location-ag_cluster-master-rhel1--INFINITY
    

    Come procedura consigliata, verificare la risorsa sia stata avviata (utilizzando pcs status comando) e la replica secondaria è connesso e sincronizzato lo stato dopo l'aggiornamento.As a best practice, ensure the resource is started (using pcs status command) and the secondary replica is connected and synchronized state after upgrade.

  3. Dopo avere aggiornate tutte le repliche secondarie, eseguire manualmente il failover a una delle repliche secondarie sincrone.After all secondary replicas are upgraded, manually fail over to one of the synchronous secondary replicas.

    Per i gruppi di disponibilità con EXTERNAL tipo di cluster, utilizzare gli strumenti di gestione di cluster per eseguire il failover; gruppi di disponibilità con NONE tipo di cluster deve utilizzare Transact-SQL per eseguire il failover.For availability groups with EXTERNAL cluster type, use the cluster management tools to fail over; availability groups with NONE cluster type should use Transact-SQL to fail over. Nell'esempio seguente viene eseguito il failover di un gruppo di disponibilità con gli strumenti di gestione di cluster.The following example fails over an availability group with the cluster management tools. Sostituire <targetReplicaName> con il nome della replica sincrona secondaria che diventerà principale:Replace <targetReplicaName> with the name of the synchronous secondary replica that will become primary:

    sudo pcs resource move ag_cluster-master <targetReplicaName> --master  
    

    Importante

    I passaggi seguenti si applicano solo ai gruppi di disponibilità che non dispongono di un gestore cluster.The following steps only apply to availability groups that do not have a cluster manager.
    Se il tipo di cluster di gruppo di disponibilità è NONEmanualmente il failover.If the availability group cluster type is NONE, manually fail over. Completare i passaggi seguenti nell'ordine indicato:Complete the following steps in order:

    a.a. Il comando seguente imposta la replica primaria a secondaria.The following command sets the primary replica to secondary. Sostituire AG1 con il nome del gruppo di disponibilità.Replace AG1 with the name of your availability group. Eseguire il comando Transact-SQL nell'istanza di SQL Server che ospita la replica primaria.Run the Transact-SQL command on the instance of SQL Server that hosts the primary replica.

    ALTER AVAILABILITY GROUP [ag1] SET (ROLE = SECONDARY);
    

    b.b. Il comando seguente imposta una replica secondaria asincrona primario.The following command sets a synchronous secondary replica to primary. Il seguente comando Transact-SQL nell'istanza di destinazione di SQL Server - l'istanza che ospita la replica secondaria asincrona.Run the following Transact-SQL command on the target instance of SQL Server - the instance that hosts the synchronous secondary replica.

    ALTER AVAILABILITY GROUP [ag1] FAILOVER;
    
  4. Dopo il failover, è possibile aggiornare SQL Server nella replica primaria precedente ripetendo la stessa procedura descritta nei passaggi da b. 1-b. 3 punto precedente.After failover, upgrade SQL Server on the old primary replica by repeating the same procedure described in steps b.1-b.3 above.

    Nell'esempio seguente viene aggiornata mssql-server e mssql-server-ha pacchetti.The following example upgrades mssql-server and mssql-server-ha packages.

    # add constraint for the resource to stop on the upgraded node
    # replace 'nodename2' with the name of the cluster node targeted for upgrade
    pcs constraint location ag_cluster-master avoids nodeName2
    sudo yum update mssql-server
    sudo yum update mssql-server-ha
    
    # upgrade mssql-server and mssql-server-ha packages
    sudo yum update mssql-server
    sudo yum update mssql-server-ha
    
    # remove the constraint; make sure the resource is started and replica is connected and synchronized
    pcs constraint remove location-ag_cluster-master-rhel1--INFINITY
    
  5. Per un gruppi di disponibilità con un cluster esterno manager - tipo di cluster in cui è esterno, il vincolo di percorso che è stato causato dal failover manuale di pulizia.For an availability groups with an external cluster manager - where cluster type is EXTERNAL, cleanup the location constraint that was caused by the manual failover.

    sudo pcs constraint remove cli-prefer-ag_cluster-master  
    
  6. Riprendere lo spostamento dei dati per la replica secondaria appena aggiornata - la replica primaria precedente.Resume data movement for the newly upgraded secondary replica - the former primary replica. Ciò è necessario quando un'istanza di versione superiore di SQL Server è il trasferimento di blocchi di log in un'istanza di versione inferiore in un gruppo di disponibilità.This is required when a higher version instance of SQL Server is transferring log blocks to a lower version instance in an availability group. Eseguire il comando seguente nella nuova replica secondaria (la replica primaria precedente).Run the following command on the new secondary replica (the previous primary replica).

    ALTER DATABASE database_name SET HADR RESUME;
    

Dopo l'aggiornamento di tutti i server, è possibile eseguire il failback - failover back alla replica primaria originale, se necessario.After upgrading all servers, you can failback - fail over back to the original primary - if necessary.

Eliminare un gruppo di disponibilitàDrop an availability group

Per eliminare un gruppo di disponibilità, eseguire DROP AVAILABILITY GROUP.To delete an availability group, run DROP AVAILABILITY GROUP. Se il tipo di cluster è EXTERNAL o NONE eseguire il comando in ogni istanza di SQL Server che ospita una replica.If the cluster type is EXTERNAL or NONE run the command on every instance of SQL Server that hosts a replica. Ad esempio, per eliminare un gruppo di disponibilità denominato group_name eseguire il comando seguente:For example, to drop an availability group named group_name run the following command:

DROP AVAILABILITY GROUP group_name

Passaggi successiviNext steps

Configurare i 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 i 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 il Cluster Ubuntu per le risorse Cluster il gruppo di disponibilità di SQL ServerConfigure Ubuntu Cluster for SQL Server Availability Group Cluster Resources