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.
Remplacez le répertoire (cd) par l’instance de serveur qui doit héberger le réplica principal.
Créez un objet réplica de disponibilité en mémoire pour le réplica principal.
Créez un objet réplica de disponibilité en mémoire pour chacun des réplicas secondaires.
Créez le groupe de disponibilité.
Notes
La longueur maximale d'un nom de groupe de disponibilité est de 128 caractères.
Joignez le nouveau réplica secondaire au groupe de disponibilité. Consultez Joindre un réplica secondaire à un groupe de disponibilité (SQL Server).
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.
Joignez chaque nouvelle base de données secondaire au groupe de disponibilité. Consultez Joindre un réplica secondaire à un groupe de disponibilité (SQL Server).
(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 :
Sauvegarde
<myDatabase>
et son journal des transactions.Restaure
<myDatabase>
et son journal des transactions, à l’aide de l’option -NoRecovery .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
).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
).Crée un groupe de disponibilité nommé
<myAvailabilityGroup>
.Joint le réplica secondaire au groupe de disponibilité.
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
Modifier le mode de disponibilité d'un réplica de disponibilité (SQL Server)
Modifier le mode de basculement d'un réplica de disponibilité (SQL Server)
Créer ou configurer un écouteur de groupe de disponibilité (SQL Server)
Configurer la sauvegarde sur des réplicas de disponibilité (SQL Server)
Configurer l'accès en lecture seule sur un réplica de disponibilité (SQL Server)
Configurer le routage en lecture seule pour un groupe de disponibilité (SQL Server)
Modifier le délai d'expiration de session pour un réplica de disponibilité (SQL Server)
Pour terminer la configuration du groupe de disponibilité
Joindre un réplica secondaire à un groupe de disponibilité (SQL Server)
Préparer manuellement une base de données secondaire pour un groupe de disponibilité (SQL Server)
Joindre une base de données secondaire à un groupe de disponibilité (SQL Server)
Créer ou configurer un écouteur de groupe de disponibilité (SQL Server)
Autres méthodes de création d'un groupe de disponibilité
Utiliser l’Assistant Groupe de disponibilité (SQL Server Management Studio)
Utiliser la boîte de dialogue Nouveau groupe de disponibilité (SQL Server Management Studio)
Pour résoudre des problèmes de configuration des groupes de disponibilité Always On
Résoudre des problèmes de configuration des groupes de disponibilité Always On (SQL Server)
Résoudre une opération d’ajout de fichier ayant échoué (groupes de disponibilité Always On)
Contenu associé
Blogs :
Always On - HADRON Learning Series: Worker Pool Usage for HADRON Enabled Databases
Configuration d’Always On avec SQL Server PowerShell
Blogs de l’équipe de SQL Server Always On : Blog officiel de l’équipe de SQL Server Always On
Blogs des ingénieurs du Service clientèle et du Support technique de SQL Server
Livres blancs :
Livres blancs de l'équipe de consultants clients de SQL Server
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)