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.
Spostarsi nella directory (cd) dell'istanza del server che deve ospitare la replica primaria.
Creare un oggetto replica di disponibilità in memoria per la replica primaria.
Creare un oggetto replica di disponibilità in memoria per ognuna delle repliche secondarie.
Creare il gruppo di disponibilità.
Nota
La lunghezza massima consentita per il nome del gruppo di disponibilità è 128 caratteri.
Aggiungere la nuova replica secondaria al gruppo di disponibilità. Vedere Creare un join di una replica secondaria a un gruppo di disponibilità (SQL Server).
Per ogni database nel gruppo di disponibilità, creare un database secondario ripristinando i backup recenti del database primario, usando RESTORE WITH NORECOVERY.
Aggiungere ogni nuovo database secondario al gruppo di disponibilità. Vedere Creare un join di una replica secondaria a un gruppo di disponibilità (SQL Server).
(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:
Viene eseguito il backup di
<myDatabase>
e del relativo log delle transazioni.Ripristina
<myDatabase>
e il relativo log delle transazioni, usando l'opzione -NoRecovery .Viene creata una rappresentazione in memoria della replica primaria, che sarà ospitata dall'istanza locale di SQL Server (denominata
PrimaryComputer\Instance
).Viene creata una rappresentazione in memoria della replica secondaria, che sarà ospitata da un'istanza di SQL Server (denominata
SecondaryComputer\Instance
).Viene creato un nuovo gruppo di disponibilità denominato
<myAvailabilityGroup>
.Viene creato un join della replica secondaria al gruppo di disponibilità.
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à
Modificare la modalità di disponibilità di una replica di disponibilità (SQL Server)
Modificare la modalità di failover di una replica di disponibilità (SQL Server)
Creare o configurare un listener del gruppo di disponibilità (SQL Server)
Configurare il backup su repliche di disponibilità (SQL Server)
Configurare l'accesso in sola lettura in una replica di disponibilità (SQL Server)
Configurare il routing di sola lettura per un gruppo di disponibilità (SQL Server)
Modificare il periodo di timeout della sessione per una replica di disponibilità (SQL Server)
Per completare la configurazione del gruppo di disponibilità
Creare un join di una replica secondaria in un gruppo di disponibilità (SQL Server)
Preparare manualmente un database secondario per un gruppo di disponibilità (SQL Server)
Creare un join di un database secondario in un gruppo di disponibilità (SQL Server)
Creare o configurare un listener del gruppo di disponibilità (SQL Server)
Modalità alternative di creazione di un gruppo di disponibilità
Usare la Creazione guidata Gruppo di disponibilità (SQL Server Management Studio)
Usare la finestra di dialogo Nuovo gruppo di disponibilità (SQL Server Management Studio)
Per risolvere i problemi relativi alla configurazione dei gruppi di disponibilità AlwaysOn
Contenuto correlato
Blog:
Pagina relativa alla configurazione di AlwaysOn con SQL Server PowerShell
SQL Server AlwaysOn Team Blog: blog ufficiale del team di SQL Server AlwaysOn
Pagina relativa ai blog del Servizio Supporto Tecnico Clienti per gli ingegneri di SQL Server
White paper:
Pagina relativa ai white paper del team di consulenza clienti di SQL Server
Vedi anche
Endpoint del mirroring del database (SQL Server)
Panoramica di Gruppi di disponibilità AlwaysOn (SQL Server)