Creare un gruppo di disponibilità Always On con PowerShell

Si applica a: SQL Server

Questo argomento illustra come usare i cmdlet di PowerShell per creare e configurare un gruppo di disponibilità Always On usando PowerShell in SQL Server. Un gruppo di disponibilità permette di definire un set di database utente di cui sarà eseguito il failover come unità singola e un set di partner di failover, noti come repliche di disponibilità, che supportano il failover.

Nota

Per un'introduzione ai gruppi di disponibilità, vedere Panoramica dei gruppi di disponibilità Always On (SQL Server).

Nota

In alternativa all'uso dei cmdlet di PowerShell, è possibile usare la procedura guidata Crea gruppo di disponibilità o Transact-SQL. Per altre informazioni, vedere Usare la finestra di dialogo Nuovo gruppo di disponibilità (SQL Server Management Studio) o Creare un gruppo di disponibilità (Transact-SQL).

Prima di iniziare

Prerequisiti, restrizioni e raccomandazioni

  • Prima di creare un gruppo di disponibilità, verificare che le istanze host di SQL Server si trovino ognuna in un nodo WSFC (Windows Server Failover Clustering) diverso di un singolo cluster di failover WSFC. Verificare anche che le istanze del server soddisfino gli altri prerequisiti per l'istanza del server, che tutti gli altri requisiti dei gruppi di disponibilità Always On siano soddisfatti e di essere a conoscenza delle raccomandazioni. Per altre informazioni, si consiglia di leggere Prerequisiti, restrizioni e raccomandazioni per i gruppi di disponibilità Always On (SQL Server).

Autorizzazioni

Sono necessarie l'appartenenza al ruolo predefinito del server sysadmin e l'autorizzazione server CREATE AVAILABILITY GROUP oppure l'autorizzazione ALTER ANY AVAILABILITY GROUP o CONTROL SERVER.

Uso di PowerShell per creare e configurare un gruppo di disponibilità

Nella tabella seguente sono elencate le attività di base necessarie per la configurazione di un gruppo di disponibilità e sono indicate le attività supportate dai cmdlet di PowerShell. È necessario eseguire le attività dei gruppi di disponibilità Always On nell'ordine con cui sono elencate nella tabella.

Attività Cmdlet di PowerShell (se disponibile) o istruzione Transact-SQL Posizione in cui eseguire l'attività
Creare un endpoint del mirroring del database (una volta per ogni istanza di SQL Server) New-SqlHadrEndPoint Eseguire in ogni istanza del server in cui non è presente l'endpoint del mirroring del database.

Per modificare un endpoint del mirroring del database esistente, usare Set-SqlHadrEndpoint.
Creare un gruppo di disponibilità Usare innanzitutto il cmdlet New-SqlAvailabilityReplica con il parametro -AsTemplate per creare un oggetto della replica di disponibilità in memoria per ognuna delle due repliche di disponibilità da includere nel gruppo di disponibilità.

Creare quindi il gruppo di disponibilità tramite il cmdlet New-SqlAvailabilityGroup e facendo riferimento agli oggetti replica di disponibilità.
Eseguire nell'istanza del server che dovrà ospitare la replica primaria iniziale.
Creare un join della replica secondaria al gruppo di disponibilità Join-SqlAvailabilityGroup Eseguire in ogni istanza del server in cui è ospitata una replica secondaria.
Preparare il database secondario Backup-SqlDatabase e Restore-SqlDatabase Creare i backup nell'istanza del server in cui è ospitata la replica primaria.

Ripristinare i backup in ogni istanza del server in cui è ospitata una replica secondaria, usando il parametro di ripristino NoRecovery . Se i percorsi di file differiscono tra i computer in cui sono ospitate la replica primaria e la replica secondaria di destinazione, usare anche il parametro di ripristino RelocateFile .
Avviare la sincronizzazione dei dati creando un join di ogni database secondario al gruppo di disponibilità Add-SqlAvailabilityDatabase Eseguire in ogni istanza del server in cui è ospitata una replica secondaria.

Nota

Per eseguire attività specifiche, impostare la directory (cd) sull'istanza o sulle istanze del server indicate.

Con PowerShell

Impostare e usare il provider SQL Server PowerShell.

Nota

Per visualizzare la sintassi e un esempio di un cmdlet specifico, usare il cmdlet Get-Help nell'ambiente SQL Server PowerShell. Per altre informazioni, vedere Get Help SQL Server PowerShell.

  1. Spostarsi nella directory (cd) dell'istanza del server che deve ospitare la replica primaria.

  2. Creare un oggetto replica di disponibilità in memoria per la replica primaria.

  3. Creare un oggetto replica di disponibilità in memoria per ognuna delle repliche secondarie.

  4. Creare il gruppo di disponibilità.

    Nota

    La lunghezza massima consentita per il nome del gruppo di disponibilità è 128 caratteri.

  5. Aggiungere la nuova replica secondaria al gruppo di disponibilità. Vedere Creare un join di una replica secondaria a un gruppo di disponibilità (SQL Server).

  6. Per ogni database nel gruppo di disponibilità, creare un database secondario ripristinando i backup recenti del database primario, usando RESTORE WITH NORECOVERY.

  7. Aggiungere ogni nuovo database secondario al gruppo di disponibilità. Vedere Creare un join di una replica secondaria a un gruppo di disponibilità (SQL Server).

  8. (Facoltativo) Usare il comando dir di Windows per verificare il contenuto del nuovo gruppo di disponibilità.

Nota

Se gli account del servizio SQL Server delle istanze del server vengono eseguiti con account utente di dominio diversi, in ogni istanza del server creare un account di accesso per l'altra istanza del server e concedere a questo account l'autorizzazione CONNECT per l'endpoint del mirroring del database locale.

Esempio

Nell'esempio di PowerShell seguente si crea e si configura un gruppo di disponibilità semplice denominato <myAvailabilityGroup> con due repliche di disponibilità e un database di disponibilità. Esempio:

  1. Viene eseguito il backup di <myDatabase> e del relativo log delle transazioni.

  2. Ripristina <myDatabase> e il relativo log delle transazioni, usando l'opzione -NoRecovery .

  3. Viene creata una rappresentazione in memoria della replica primaria, che sarà ospitata dall'istanza locale di SQL Server (denominata PrimaryComputer\Instance).

  4. Viene creata una rappresentazione in memoria della replica secondaria, che sarà ospitata da un'istanza di SQL Server (denominata SecondaryComputer\Instance).

  5. Viene creato un nuovo gruppo di disponibilità denominato <myAvailabilityGroup>.

  6. Viene creato un join della replica secondaria al gruppo di disponibilità.

  7. Viene creato un join del database secondario al gruppo di disponibilità.

# Backup my database and its log on the primary  
Backup-SqlDatabase `  
    -Database "<myDatabase>" `  
    -BackupFile "\\share\backups\<myDatabase>.bak" `  
    -ServerInstance "PrimaryComputer\Instance"  
  
Backup-SqlDatabase `  
    -Database "<myDatabase>" `  
    -BackupFile "\\share\backups\<myDatabase>.log" `  
    -ServerInstance "PrimaryComputer\Instance" `  
    -BackupAction Log   
  
# Restore the database and log on the secondary (using NO RECOVERY)  
Restore-SqlDatabase `  
    -Database "<myDatabase>" `  
    -BackupFile "\\share\backups\<myDatabase>.bak" `  
    -ServerInstance "SecondaryComputer\Instance" `  
    -NoRecovery  
  
Restore-SqlDatabase `  
    -Database "<myDatabase>" `  
    -BackupFile "\\share\backups\<myDatabase>.log" `  
    -ServerInstance "SecondaryComputer\Instance" `  
    -RestoreAction Log `  
    -NoRecovery  
  
# Create an in-memory representation of the primary replica.  
$primaryReplica = New-SqlAvailabilityReplica `  
    -Name "PrimaryComputer\Instance" `  
    -EndpointURL "TCP://PrimaryComputer.domain.com:5022" `  
    -AvailabilityMode "SynchronousCommit" `  
    -FailoverMode "Automatic" `  
    -Version 12 `  
    -AsTemplate  
  
# Create an in-memory representation of the secondary replica.  
$secondaryReplica = New-SqlAvailabilityReplica `  
    -Name "SecondaryComputer\Instance" `  
    -EndpointURL "TCP://SecondaryComputer.domain.com:5022" `  
    -AvailabilityMode "SynchronousCommit" `  
    -FailoverMode "Automatic" `  
    -Version 12 `  
    -AsTemplate  
  
# Create the availability group  
New-SqlAvailabilityGroup `  
    -Name "<myAvailabilityGroup>" `  
    -Path "SQLSERVER:\SQL\PrimaryComputer\Instance" `  
    -AvailabilityReplica @($primaryReplica,$secondaryReplica) `  
    -Database "<myDatabase>"  
  
# Join the secondary replica to the availability group.  
Join-SqlAvailabilityGroup -Path "SQLSERVER:\SQL\SecondaryComputer\Instance" -Name "<myAvailabilityGroup>"  
  
# Join the secondary database to the availability group.  
Add-SqlAvailabilityDatabase -Path "SQLSERVER:\SQL\SecondaryComputer\Instance\AvailabilityGroups\<myAvailabilityGroup>" -Database "<myDatabase>"  

Attività correlate

Per configurare un'istanza del server per i gruppi di disponibilità AlwaysOn

Per configurare le proprietà della replica e del gruppo di disponibilità

Per completare la configurazione del gruppo di disponibilità

Modalità alternative di creazione di un gruppo di disponibilità

Per risolvere i problemi relativi alla configurazione dei gruppi di disponibilità AlwaysOn

Contenuto correlato

Vedi anche

Endpoint del mirroring del database (SQL Server)
Panoramica di Gruppi di disponibilità AlwaysOn (SQL Server)