Créer un groupe de disponibilité Always On à l’aide de PowerShell

S'applique à : SQL Server

Cette rubrique explique comment utiliser des applets de commande PowerShell pour créer et configurer un groupe de disponibilité Always On à l’aide de PowerShell dans SQL Server. Un groupe de disponibilité définit un jeu de bases de données utilisateur qui basculent en tant qu'unité unique et un jeu de partenaires de basculement, appelés réplicas de disponibilité, qui prennent en charge le basculement.

Notes

Pour obtenir une présentation des groupes de disponibilité, consultez Vue d’ensemble des groupes de disponibilité Always On (SQL Server).

Notes

Comme alternative à l’utilisation des cmdlets PowerShell, vous pouvez utiliser l’Assistant Création d’un groupe de disponibilité ou Transact-SQL. Pour plus d’informations, consultez Utiliser la boîte de dialogue Nouveau groupe de disponibilité (SQL Server Management Studio) ou Créer un groupe de disponibilité (Transact-SQL).

Avant de commencer

Conditions préalables requises, restrictions et recommandations

  • Avant de créer un groupe de disponibilité, vérifiez que les instances hôtes de SQL Server résident chacune sur un nœud WSFC (Clustering de basculement Windows Server) différent au sein du même clustering de basculement WSFC. En outre, vérifiez que vos instances de serveur respectent les autres conditions préalables applicables, que toutes les autres spécifications Groupes de disponibilité Always On sont respectées et que vous avez pris note des recommandations. Pour plus d’informations, nous vous recommandons vivement de consulter la rubrique Conditions préalables requises, restrictions et recommandations pour les groupes de disponibilité Always On (SQL Server).

Autorisations

Requiert l’appartenance au rôle serveur fixe sysadmin et l’autorisation de serveur CREATE AVAILABILITY GROUP, l’autorisation ALTER ANY AVAILABILITY GROUP ou l’autorisation CONTROL SERVER.

Utilisation de PowerShell pour créer et configurer un groupe de disponibilité

Le tableau suivant répertorie les tâches de base impliquées dans la configuration d'un groupe de disponibilité et indique celles qui sont prises en charge par les applets de commande PowerShell. Les tâches Groupes de disponibilité Always On doivent être effectuées dans la séquence dans laquelle elles sont présentées dans le tableau.

Tâche Applets de commande PowerShell (le cas échéant) ou instruction Transact-SQL Où effectuer la tâche
Créer le point de terminaison de mise en miroir de bases de données (une fois par instance SQL Server ) New-SqlHadrEndPoint Exécutez sur chaque instance de serveur dans laquelle le point de terminaison de mise en miroir de bases de données est manquant.

Pour modifier un point de terminaison de mise en miroir de bases de données existant, utilisez Set-SqlHadrEndpoint.
Créer un groupe de disponibilité En premier lieu, utilisez l’applet de commande New-SqlAvailabilityReplica avec le paramètre -AsTemplate pour créer un objet en mémoire du réplica de disponibilité pour chacun des deux réplicas de disponibilité que vous envisagez d’inclure dans le groupe de disponibilité.

Créez ensuite le groupe de disponibilité en utilisant l’applet de commande New-SqlAvailabilityGroup et en référençant vos objets de réplica de disponibilité.
Exécutez sur l'instance de serveur qui hébergera le réplica principal initial.
Joindre le réplica secondaire au groupe de disponibilité Join-SqlAvailabilityGroup Exécutez sur chaque instance de serveur qui héberge un réplica secondaire.
Préparer la base de données secondaire Backup-SqlDatabase et Restore-SqlDatabase Créez des sauvegardes sur l'instance de serveur qui héberge le réplica principal.

Restaurez les sauvegardes sur chaque instance de serveur qui héberge un réplica secondaire, à l’aide du paramètre de restauration NoRecovery . Si les chemins de fichier diffèrent entre les ordinateurs qui hébergent le réplica principal et le réplica secondaire cible, utilisez également le paramètre de restauration RelocateFile .
Démarrer la synchronisation des données en joignant chaque base de données secondaire au groupe de disponibilité Add-SqlAvailabilityDatabase Exécutez sur chaque instance de serveur qui héberge un réplica secondaire.

Notes

Pour effectuer les tâches données, remplacez le répertoire (cd) par l’instance ou les instances de serveur indiquées.

Utilisation de PowerShell

Configurez et utilisez le fournisseur SQL Server PowerShell.

Notes

Pour afficher la syntaxe et un exemple d’une applet de commande, utilisez l’applet de commande Get-Help dans l’environnement PowerShell SQL Server . Pour en savoir plus, voir Get Help SQL Server PowerShell.

  1. Remplacez le répertoire (cd) par l’instance de serveur qui doit héberger le réplica principal.

  2. Créez un objet réplica de disponibilité en mémoire pour le réplica principal.

  3. Créez un objet réplica de disponibilité en mémoire pour chacun des réplicas secondaires.

  4. Créez le groupe de disponibilité.

    Notes

    La longueur maximale d'un nom de groupe de disponibilité est de 128 caractères.

  5. Joignez le nouveau réplica secondaire au groupe de disponibilité. Consultez Joindre un réplica secondaire à un groupe de disponibilité (SQL Server).

  6. Pour chaque base de données dans le groupe de disponibilité, créez une base de données secondaire en restaurant des sauvegardes récentes de la base de données primaire, à l'aide de RESTORE WITH NORECOVERY.

  7. Joignez chaque nouvelle base de données secondaire au groupe de disponibilité. Consultez Joindre un réplica secondaire à un groupe de disponibilité (SQL Server).

  8. (Facultatif) Utilisez la commande dir Windows pour vérifier le contenu du nouveau groupe de disponibilité.

Notes

Si les comptes de service SQL Server des instances serveur s'exécutent sous des comptes utilisateur de domaine différents, sur chaque instance serveur, créez une connexion pour l'autre instance serveur et accordez l'autorisation CONNECT sur le point de terminaison de mise en miroir de bases de données local.

Exemple

L'exemple PowerShell suivant crée et configure un groupe de disponibilité simple nommé <myAvailabilityGroup> avec deux réplicas de disponibilité et une base de données de disponibilité. L'exemple :

  1. Sauvegarde <myDatabase> et son journal des transactions.

  2. Restaure <myDatabase> et son journal des transactions, à l’aide de l’option -NoRecovery .

  3. Crée une représentation en mémoire du réplica principal, qui sera hébergée par l'instance locale de SQL Server (nommée PrimaryComputer\Instance).

  4. Crée une représentation en mémoire du réplica secondaire, qui sera hébergée par une instance de SQL Server (nommée SecondaryComputer\Instance).

  5. Crée un groupe de disponibilité nommé <myAvailabilityGroup>.

  6. Joint le réplica secondaire au groupe de disponibilité.

  7. Joint la base de données secondaire au groupe de 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>"  

Tâches associées

Pour configurer une instance de serveur pour les groupes de disponibilité Always On

Pour configurer les propriétés du groupe de disponibilité et du réplica

Pour terminer la configuration du groupe de disponibilité

Autres méthodes de création d'un groupe de disponibilité

Pour résoudre des problèmes de configuration des groupes de disponibilité Always On

Contenu associé

Voir aussi

Point de terminaison de mise en miroir de bases de données (SQL Server)
Vue d’ensemble des groupes de disponibilité Always On (SQL Server)