Eseguire un failover manuale pianificato di un gruppo di disponibilità (SQL Server)Perform a planned manual failover of an availability group (SQL Server)

In questo argomento si applica a: SìSQL ServernonDatabase SQL di AzurenonAzure SQL Data Warehouse non Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse In questo argomento viene illustrato come eseguire un failover manuale senza perdite di dati (failover manuale pianificato) in un gruppo di disponibilità AlwaysOn tramite SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, o PowerShell in SQL Server 2017SQL Server 2017. This topic describes how to perform a manual failover without data loss (a planned manual failover) on an AlwaysOn availability group by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, or PowerShell in SQL Server 2017SQL Server 2017. Per un gruppo di disponibilità il failover si verifica al livello di una replica di disponibilità.An availability group fails over at the level of an availability replica. Un failover manuale pianificato, ad esempio un failover del gruppo di disponibilità AlwaysOn, comporta il passaggio della replica primaria precedente al ruolo secondario.A planned manual failover, like any AlwaysOn availability group failover, transitions a secondary replica to primary role. Il failover attualmente comporta il passaggio della replica primaria precedente al ruolo secondario.Concurrently, the failover transitions the former primary replica to the secondary role.

Un failover manuale pianificato è supportato solo quando la replica principale e la replica secondaria di destinazione sono in esecuzione in modalità commit sincrono e sono attualmente sincronizzate.A planned manual failover is supported only when the primary replica and the target secondary replica are running in synchronous-commit mode and are currently synchronized. Un failover manuale pianificato mantiene tutti i dati presenti nel database secondario che appartengono al gruppo di disponibilità sulla replica secondaria di destinazione.A planned manual failver preserves all the data in the secondary databases that are joined to the availability group on the target secondary replica. Dopo che la replica primaria precedente è passata al ruolo secondario, i relativi database diventano database secondari.After the former primary replica transitions to the secondary role, its databases become secondary databases. Iniziano quindi a eseguire la sincronizzazione con i nuovi database primari.Then they begin to synchronize with the new primary databases. Dopo la transizione di tutti i database allo stato SYNCHRONIZED, la nuova replica secondaria diventa idonea a fungere da destinazione di un futuro failover manuale pianificato.After they all transition into the SYNCHRONIZED state, the new secondary replica becomes eligible to serve as the target of a future planned manual failover.

Nota

Se la replica primaria e le repliche secondarie sono configurate per la modalità di failover automatico, dopo la sincronizzazione, la replica secondaria può anche fungere da destinazione per un failover automatico.If the secondary and primary replicas are both configured for automatic failover mode, after the secondary replica is synchronized, it also can serve as the target for an automatic failover. Per altre informazioni, vedere Modalità di disponibilità (gruppi di disponibilità AlwaysOn).For more information, see Availability modes (AlwaysOn availability groups).

Operazioni preliminariBefore you begin

Importante

Esistono procedure specifiche per eseguire il failover di un gruppo di disponibilità per la scalabilità in lettura senza usare uno strumento di gestione cluster.There are specific procedures to fail over a read-scale availability group with no cluster manager. Quando un gruppo di disponibilità contiene CLUSTER_TYPE = NONE, seguire le procedure descritte in Eseguire il failover di una replica primaria in un gruppo di disponibilità per scalabilità in lettura.When an availability group has CLUSTER_TYPE = NONE, follow the procedures under Fail over the primary replica on a read-scale availability group.

Limitazioni e restrizioniLimitations and restrictions

Prerequisiti e restrizioniPrerequisites and restrictions

  • La replica secondaria di destinazione e la replica primaria devono essere entrambe in esecuzione in modalità di disponibilità con commit sincrono.Both the target secondary replica and the primary replica must be running in synchronous-commit availability mode.
  • La replica secondaria di destinazione deve essere attualmente sincronizzata con la replica primaria.Currently, the target secondary replica must be synchronized with the primary replica. Per tutti i database secondari della replica secondaria deve esser creato un join al gruppo di disponibilità.All the secondary databases on this secondary replica must be joined to the availability group. Devono essere sincronizzati anche con i database primari corrispondenti (ovvero i database secondari locali devono essere SINCRONIZZATI).They also must be synchronized with their corresponding primary databases (that is, the local secondary databases must be SYNCHRONIZED).

    Suggerimento

    Per determinare la conformità del failover di una replica secondaria, eseguire una query della colonna is_failover_ready nella DMV sys.dm_hadr_database_cluster_states.To determine the failover readiness of a secondary replica, query the is_failover_ready column in the sys.dm_hadr_database_cluster_states dynamic management view. Oppure è possibile esaminare la colonna Conformità Failover del dashboard del gruppo AlwaysOn.Or you can look at the Failover Readiness column of the AlwaysOn group dashboard.

  • Questa attività è supportata solo nella replica secondaria di destinazione.This task is supported only on the target secondary replica. È necessario essere connessi all'istanza del server che ospita la replica secondaria di destinazione.You must be connected to the server instance that hosts the target secondary replica.

SicurezzaSecurity

AutorizzazioniPermissions

È necessaria l'autorizzazione ALTER AVAILABILITY GROUP nel gruppo di disponibilità.The ALTER AVAILABILITY GROUP permission is required on the availability group. È necessaria anche l'autorizzazione CONTROL AVAILABILITY GROUP, l'autorizzazione ALTER ANY AVAILABILITY GROUP oppure l'autorizzazione CONTROL SERVER.The CONTROL AVAILABILITY GROUP permission, the ALTER ANY AVAILABILITY GROUP permission, or the CONTROL SERVER permission also is required.

Utilizzo di SQL Server Management StudioUse SQL Server Management Studio

Per eseguire manualmente il failover di un gruppo di disponibilità:To manually fail over an availability group:

  1. In Esplora oggetti connettersi a un'istanza del server che ospita una replica secondaria del gruppo di disponibilità di cui eseguire il failover.In Object Explorer, connect to a server instance that hosts a secondary replica of the availability group that needs to be failed over. Espandere l'albero di server.Expand the server tree.

  2. Espandere il nodo Disponibilità elevata AlwaysOn e il nodo Gruppi di disponibilità .Expand the AlwaysOn High Availability node and the Availability Groups node.

  3. Fare clic con il pulsante destro del mouse sul gruppo di disponibilità di cui eseguire il failover e selezionare Failover.Right-click the availability group to be failed over, and select Failover.

  4. Avvio della procedura guidata Gruppo di disponibilità di failover.The Failover Availability Group wizard starts. Per altre informazioni, vedere Usare la procedura guidata Failover gruppo di disponibilità (SQL Server Management Studio).For more information, see Use the Failover Availability Group wizard (SQL Server Management Studio).

Usare Transact-SQLUse Transact-SQL

Per eseguire manualmente il failover di un gruppo di disponibilità:To manually fail over an availability group:

  1. Connettersi all'istanza del server che ospita la replica secondaria di destinazione.Connect to the server instance that hosts the target secondary replica.

  2. Utilizzare l'istruzione ALTER AVAILABILITY GROUP , come indicato di seguito:Use the ALTER AVAILABILITY GROUP statement, as follows:

    ALTER AVAILABILITY GROUP nome_gruppo FAILOVERALTER AVAILABILITY GROUP group_name FAILOVER

    Nell'istruzione nome_gruppo è il nome del gruppo di disponibilità.In the statement, group_name is the name of the availability group.

    Nell'esempio seguente viene eseguito il failover manuale del gruppo di disponibilità MyAg alla replica secondaria connessa:The following example manually fails over the MyAg availability group to the connected secondary replica:

    ALTER AVAILABILITY GROUP MyAg FAILOVER;  
    

Usare PowerShellUse PowerShell

Per eseguire manualmente il failover di un gruppo di disponibilità:To manually fail over an availability group:

  1. Cambiare la directory (cd) impostandola sull'istanza del server che ospita la replica secondaria di destinazione.Change the directory (cd) to the server instance that hosts the target secondary replica.

  2. Usare il cmdlet Switch-SqlAvailabilityGroup .Use the Switch-SqlAvailabilityGroup cmdlet.

    Nota

    Per visualizzare la sintassi di un cmdlet, usare il cmdlet Get-Help nell'ambiente SQL Server 2017SQL Server 2017 PowerShell.To view the syntax of a cmdlet, use the Get-Help cmdlet in the SQL Server 2017SQL Server 2017 PowerShell environment. Per altre informazioni, vedere la guida SQL Server PowerShell.For more information, see Get help for SQL Server PowerShell.

    Nell'esempio seguente viene eseguito il failover manuale del gruppo di disponibilità MyAg alla replica secondaria con il percorso specificato:The following example manually fails over the MyAg availability group to the secondary replica with the specified path:

    Switch-SqlAvailabilityGroup -Path SQLSERVER:\Sql\SecondaryServer\InstanceName\AvailabilityGroups\MyAg  
    

    Per impostare e usare il provider PowerShell per SQL Server:To set up and use the SQL Server PowerShell provider:

Completamento: dopo il failover manuale su un gruppo di disponibilitàFollow up: After you manually fail over an availability group

Se è stato eseguito il failover al di fuori del failover automatico impostatoautomatic failover set del gruppo di disponibilità, modificare i voti del quorum dei nodi di clustering di failover Windows Server per riflettere la nuova configurazione del gruppo di disponibilità.If you failed over outside the failover automatico impostatoautomatic failover set of the availability group, adjust the quorum votes of the Windows Server failover clustering nodes to reflect your new availability group configuration. Per altre informazioni, vedere Clustering di failover Windows Server (WSFC) con SQL Server.For more information, see Windows Server failover clustering (WSFC) with SQL Server.

Eseguire il failover della replica primaria in un gruppo di disponibilità per scalabilità in letturaFail over the primary replica on a read-scale availability group

Ogni gruppo di disponibilità include solo una replica primaria, cheEach availability group has only one primary replica. consente operazioni di lettura e scrittura.The primary replica allows reads and writes. Per modificare la replica primaria, è possibile eseguire il failover.To change which replica is primary, you can fail over. In un gruppo di disponibilità per disponibilità elevata, il processo di failover è automatizzato da Gestione cluster.In an availability group for high availability, the cluster manager automates the failover process. In un gruppo di disponibilità con scalabilità in lettura, il processo di failover è invece manuale.In a read-scale availability group, the failover process is manual.

Esistono due modi per eseguire il failover la replica primaria in un gruppo di disponibilità a livello di lettura:There are two ways to fail over the primary replica in a read-scale availability group:

  • Failover manuale forzato con perdita di datiForced manual failover with data loss
  • Failover manuale senza perdita di datiManual failover without data loss

Failover manuale forzato con perdita di datiForced manual failover with data loss

Utilizzare questo metodo quando la replica primaria non è disponibile e non può essere recuperata.Use this method when the primary replica isn't available and can't be recovered.

Per forzare il failover con perdita di dati, connettersi all'istanza di SQL Server che ospita la replica secondaria di destinazione ed eseguire:To force failover with data loss, connect to the SQL Server instance that hosts the target secondary replica and run:

ALTER AVAILABILITY GROUP [ag1] FORCE_FAILOVER_ALLOW_DATA_LOSS;

Failover manuale senza perdita di datiManual failover without data loss

Usare questo metodo quando la replica primaria è disponibile, ma è necessario modificare temporaneamente o definitivamente la configurazione e l'istanza SQL Server che ospita la replica primaria.Use this method when the primary replica is available, but you need to temporarily or permanently change the configuration and change the SQL Server instance that hosts the primary replica. Prima di eseguire il failover manuale, assicurarsi che la replica secondaria di destinazione viene aggiornata per evitare la perdita di dati.Before you issue the manual failover, ensure that the target secondary replica is up to date to avoid potential data loss.

Per eseguire manualmente il failover senza perdita di dati:To manually fail over without data loss:

  1. Verificare la replica secondaria di destinazione SYNCHRONOUS_COMMIT.Make the target secondary replica SYNCHRONOUS_COMMIT.

    ALTER AVAILABILITY GROUP [ag1] 
         MODIFY REPLICA ON N'**<node2>*' 
         WITH (AVAILABILITY_MODE = SYNCHRONOUS_COMMIT);
    
  2. Eseguire la query seguente per identificare che le transazioni attive vengano eseguito il commit per la replica primaria e almeno una replica secondaria asincrona:Run the following query to identify that active transactions are committed to the primary replica and at least one synchronous secondary replica:

    SELECT ag.name, 
       drs.database_id, 
       drs.group_id, 
       drs.replica_id, 
       drs.synchronization_state_desc, 
       ag.sequence_number
    FROM sys.dm_hadr_database_replica_states drs, sys.availability_groups ag
    WHERE drs.group_id = ag.group_id; 
    

    La replica secondaria è sincronizzata quando synchronization_state_desc è SYNCHRONIZED.The secondary replica is synchronized when synchronization_state_desc is SYNCHRONIZED.

  3. Aggiornamento REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT su 1.Update REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT to 1.

    Lo script seguente imposta REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT su 1 in un gruppo di disponibilità denominato ag1.The following script sets REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT to 1 on an availability group named ag1. Prima di eseguire lo script seguente, sostituire ag1 con il nome del gruppo di disponibilità:Before you run the following script, replace ag1 with the name of your availability group:

    ALTER AVAILABILITY GROUP [ag1] 
         SET REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 1;
    

    Questa impostazione assicura che ogni transazione attiva viene eseguito il commit per la replica primaria e almeno una replica secondaria asincrona.This setting ensures that every active transaction is committed to the primary replica and at least one synchronous secondary replica.

  4. Abbassare di livello la replica primaria a una replica secondaria.Demote the primary replica to a secondary replica. Dopo la replica primaria viene abbassato di livello, è in sola lettura.After the primary replica is demoted, it's read-only. Eseguire questo comando nell'istanza di SQL Server che ospita la replica primaria per aggiornare il ruolo SECONDARY:Run this command on the SQL Server instance that hosts the primary replica to update the role to SECONDARY:

    ALTER AVAILABILITY GROUP [ag1] 
         SET (ROLE = SECONDARY); 
    
  5. Alzare il livello della replica secondaria di destinazione a replica primaria.Promote the target secondary replica to primary.

    ALTER AVAILABILITY GROUP ag1 FORCE_FAILOVER_ALLOW_DATA_LOSS; 
    

    Nota

    Per eliminare un gruppo di disponibilità, utilizzare DROP AVAILABILITY GROUP.To delete an availability group, use DROP AVAILABILITY GROUP. Per un gruppo di disponibilità creato con CLUSTER_TYPE NONE o esterno, il comando deve essere eseguito in tutte le repliche che fanno parte del gruppo di disponibilità.For an availability group created with CLUSTER_TYPE NONE or EXTERNAL, the command must be executed on all replicas that are part of the availability group.

Vedere ancheSee also