Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server sur Windows
Cette rubrique explique comment configurer la stratégie de basculement flexible pour un groupe de disponibilité Always On à l’aide de Transact-SQL ou PowerShell dans SQL Server. Une stratégie de basculement flexible permet un contrôle précis des conditions qui déclenchent le basculement automatique d’un groupe de disponibilité. En modifiant les conditions de défaillance qui déclenchent un basculement automatique ainsi que la fréquence des vérifications d’intégrité, vous pouvez augmenter ou diminuer la probabilité d’un basculement automatique afin de respecter votre SLA en matière de haute disponibilité.
La stratégie de basculement flexible d'un groupe de disponibilité est définie par son niveau de condition de défaillance et son seuil d'expiration du contrôle d'intégrité. Lorsqu’elle détecte qu’un groupe de disponibilité a dépassé son niveau de condition d’échec ou son seuil d’expiration de la vérification d’intégrité, la DLL de ressource du groupe de disponibilité répond au cluster de basculement Windows Server (WSFC). Le cluster WSFC initie ensuite un basculement automatique vers la réplique secondaire.
Remarque
La stratégie de basculement flexible d'un groupe de disponibilité ne peut pas être configurée à l'aide de SQL Server Management Studio.
Limitations relatives aux basculements automatiques
Pour qu’un basculement automatique se produise, le réplica principal actuel et un réplica secondaire doivent être configurés en mode de disponibilité avec validation synchrone et basculement automatique, et le réplica secondaire doit être synchronisé avec le réplica principal.
SQL Server 2019 (15.x) augmente le nombre maximal de réplicas synchrones à 5, contre 3 dans SQL Server 2017 (14.x). Vous pouvez configurer ce groupe de cinq réplicas pour activer le basculement automatique au sein du groupe. Il y a un réplica principal, plus quatre réplicas secondaires synchrones.
Si un groupe de disponibilité dépasse le seuil d'échec WSFC, le cluster WSFC ne tente pas un basculement automatique du groupe de disponibilité. En outre, le groupe de ressources WSFC du groupe de disponibilité reste en état d'échec jusqu'à ce que l’administrateur du cluster remette manuellement en ligne le groupe de ressources défaillant ou que l’administrateur de base de données effectue un basculement manuel du groupe de disponibilité. Le seuil d'échec WSFC est le nombre maximal d'échecs autorisés pour le groupe de disponibilité au cours d'une période donnée. La période par défaut est de six heures, et la valeur par défaut du nombre maximal d’échecs au cours de cette période est n-1, où n est le nombre de nœuds de WSFC. Pour modifier les valeurs de seuil de défaillance d’un groupe de disponibilité donné, utilisez la console du Gestionnaire du basculement WSFC.
Prérequis
- Vous devez être connecté à l'instance de serveur qui héberge le réplica principal.
Autorisations
| Tâche | Autorisations |
|---|---|
| Pour configurer la stratégie de basculement flexible pour un nouveau groupe de disponibilité | Nécessite l’appartenance au rôle de serveur fixe sysadmin et soit l’autorisation de serveur CREATE AVAILABILITY GROUP, soit l’autorisation ALTER ANY AVAILABILITY GROUP, ou l’autorisation CONTROL SERVER. |
| Pour modifier la stratégie d'un groupe de disponibilité existant | Nécessite l’autorisation ALTER AVAILABILITY GROUP sur le groupe de disponibilité, l’autorisation CONTROL AVAILABILITY GROUP, l’autorisation ALTER ANY AVAILABILITY GROUP ou l’autorisation CONTROL SERVER. |
Seuil du délai d’expiration de la vérification de l’état
La DLL de ressource WSFC du groupe de disponibilité exécute un contrôle d’intégrité du réplica principal en appelant la procédure stockée sp_server_diagnostics sur l’instance de SQL Server qui héberge le réplica principal. sp_server_diagnostics renvoie des résultats à un intervalle correspondant à 1/3 du seuil du délai d’expiration du contrôle d’intégrité pour le groupe de disponibilité. Le seuil par défaut du délai d’attente de vérification d’intégrité est de 30 secondes, ce qui signifie que sp_server_diagnostics répond à un intervalle de 10 secondes. Si sp_server_diagnostics est lent ou ne renvoie pas d’informations, la DLL de ressources attendra l’intégralité du délai défini par le seuil d’expiration du contrôle d’intégrité avant de déterminer que la réplique principale ne répond pas. Si la réplique principale ne répond pas, un basculement automatique est déclenché, si cette fonctionnalité est actuellement prise en charge.
Important
sp_server_diagnostics n’exécute pas de vérifications d’intégrité au niveau de la base de données.
Niveau de condition de défaillance
Le fait que les données de diagnostic et les informations sur l’état de santé renvoyées par sp_server_diagnostics justifient ou non un basculement automatique dépend du niveau de condition de défaillance du groupe de disponibilité. Le niveau de défaillance définit quelles conditions d’échec déclenchent un basculement automatique. Il existe cinq niveaux de condition d'échec, allant du moins restrictif (niveau 1) au plus restrictif (le niveau 5). Chaque niveau comprend les niveaux moins restrictifs. Ainsi, le niveau le plus strict, le niveau 5, inclut les quatre conditions moins restrictives, et ainsi de suite.
Important
Les bases de données endommagées et suspectes ne sont détectées par aucun niveau de condition d'échec. Par conséquent, une base de données qui est endommagée ou suspecte (que ce soit en raison d'une défaillance matérielle, de l'altération des données ou de tout autre problème) ne déclenche jamais de basculement automatique.
Le tableau suivant décrit la condition d'échec qui correspond à chaque niveau.
| Niveau | Condition de défaillance | Valeur Transact-SQL | Valeur PowerShell |
|---|---|---|---|
| Une | En cas de panne du serveur. Indique qu’un basculement automatique est déclenché lorsque l’un des événements suivants se produit : Le service SQL Server est fermé. Le bail du groupe de disponibilité utilisé pour se connecter au cluster WSFC arrive à expiration parce qu'aucun accusé de réception (ACK) n'est reçu de l'instance du serveur. Pour plus d’informations, consultez How It Works: SQL Server Always On Lease Timeout. Il s'agit du niveau le moins restrictif. |
1 | OnServerDown |
| Deux | Le serveur ne répond pas. Spécifie qu’un basculement automatique est déclenché lorsque l’une des situations suivantes se produit : L'instance SQL Server ne se connecte pas au cluster et le seuil du délai d'attente de contrôle d'intégrité spécifié par l'utilisateur pour le groupe de disponibilité est dépassé. La réplique de disponibilité est en échec. |
2 | OnServerUnresponsive |
| Trois | Erreur critique du serveur. Spécifie qu’un basculement automatique est déclenché en cas d’erreurs internes critiques de SQL Server, telles que des spinlocks orphelins, de graves violations d’accès en écriture ou un nombre trop élevé de vidages mémoire générés sur une courte période. C'est le niveau par défaut. |
3 | OnCriticalServerError |
| Quatre | Erreur de serveur modérée. Spécifie qu'un basculement automatique est déclenché en cas d'erreurs internes modérées de SQL Server, telles qu'une situation persistante de mémoire insuffisante dans le pool de ressources interne de SQL Server. | 4 | OnModerateServerError |
| Cinq | Dans toutes les conditions d’échec admissibles. Spécifie qu'un basculement automatique est déclenché en cas de défaillance répondant aux critères requis, notamment : Détection d’un interblocage de Scheduler. Détection d'un blocage insoluble. Il s'agit du niveau le plus restrictif. |
5 | SurTouteConditionD'ÉchecQualifiée |
Remarque
L'absence de réponse par une instance de SQL Server aux demandes des clients n'est pas pertinente pour les groupes de disponibilité.
Utilisation de Transact-SQL
Pour configurer la stratégie de basculement flexible
Connectez-vous à l'instance de serveur qui héberge le réplica principal.
Pour un nouveau groupe de disponibilité, utilisez l’instruction CREATE AVAILABILITY GROUPTransact-SQL. Si vous modifiez un groupe de disponibilité existant, utilisez l’instruction ALTER AVAILABILITY GROUPTransact-SQL.
Pour définir le niveau de condition de basculement, utilisez l’option FAILURE_CONDITION_LEVEL = n , où n est un entier compris entre 1 et 5.
Par exemple, l'instruction Transact-SQL suivante modifie le niveau de condition d'échec d'un groupe de disponibilité existant,
AG1, sur le niveau un :ALTER AVAILABILITY GROUP AG1 SET (FAILURE_CONDITION_LEVEL = 1);La relation de ces valeurs entières avec les niveaux de condition d'échec est la suivante :
Valeur Transact-SQL Niveau Le basculement automatique démarre lorsque… 1 Une En cas de panne du serveur. Le service SQL Server s'arrête à cause d'un basculement ou d'un redémarrage. 2 Deux Le serveur ne répond pas. Toutes les conditions qui correspondent à une valeur inférieure sont remplies, le service SQL Server est connecté au cluster et le seuil du délai d'attente de contrôle d'intégrité est dépassé, ou le réplica principal actuel est dans un état d'échec. 3 Trois Erreur critique du serveur. Toutes les conditions qui correspondent à une valeur inférieure sont remplies ou une erreur interne et critique de serveur est survenue.
C'est le niveau par défaut.4 Quatre En cas d'erreur modérée du serveur. Toutes les conditions qui correspondent à une valeur inférieure sont remplies ou une erreur modérée de serveur s'est produite. 5 Cinq En cas de condition d’échec admissible. Toute condition de valeur inférieure est remplie ou une condition d’échec admissible se produit. Pour plus d’informations sur les niveaux des conditions de basculement, consultez Stratégie de basculement flexible pour le basculement automatique d’un groupe de disponibilité (SQL Server).
Pour configurer le seuil du délai d’attente de contrôle d’intégrité, utilisez l’optionHEALTH_CHECK_TIMEOUT = n , où n est un entier compris entre 15000 millisecondes (15 secondes) et 4294967295 millisecondes. La valeur par défaut est 30 000 millisecondes (ou 30 secondes).
Par exemple, l'instruction Transact-SQL suivante modifie le seuil du délai d'attente de contrôle d'intégrité d'un groupe de disponibilité existant,
AG1, sur 60 000 millisecondes (une minute).ALTER AVAILABILITY GROUP AG1 SET (HEALTH_CHECK_TIMEOUT = 60000);
Utilisation de PowerShell
Pour configurer la stratégie de basculement flexible
Définissez la valeur par défaut (cd) sur l’instance de serveur qui héberge le réplica principal.
Lorsque vous ajoutez un réplica de disponibilité à un groupe de disponibilité, utilisez l’applet de commande New-SqlAvailabilityGroup. Lors de la modification d’un réplica de disponibilité existant, utilisez l’applet de commande Set-SqlAvailabilityGroup.
Pour définir le niveau de la condition de basculement, utilisez le paramètre FailureConditionLevellevel, où level correspond à l’une des valeurs suivantes :
Valeur Niveau Le basculement automatique démarre lorsque… OnServerDown Une En cas de panne du serveur. Le service SQL Server s'arrête à cause d'un basculement ou d'un redémarrage. OnServerUnresponsive Deux Le serveur ne répond pas. Toutes les conditions qui correspondent à une valeur inférieure sont remplies, le service SQL Server est connecté au cluster et le seuil du délai d'attente de contrôle d'intégrité est dépassé, ou le réplica principal actuel est dans un état d'échec. OnCriticalServerError Trois Erreur critique du serveur. Toutes les conditions qui correspondent à une valeur inférieure sont remplies ou une erreur interne et critique de serveur est survenue.
C'est le niveau par défaut.OnModerateServerError Quatre Erreur de serveur modérée. Toutes les conditions qui correspondent à une valeur inférieure sont remplies ou une erreur modérée de serveur s'est produite. SurTouteConditionD'ÉchecQualifiée Cinq Dans toutes les conditions d’échec admissibles. Toute condition de valeur inférieure est remplie ou une condition d’échec admissible se produit. Pour plus d’informations sur les niveaux des conditions de basculement, consultez Stratégie de basculement flexible pour le basculement automatique d’un groupe de disponibilité (SQL Server).
Par exemple, la commande suivante modifie le niveau de condition d'échec d'un groupe de disponibilité existant,
AG1, sur le niveau un.Set-SqlAvailabilityGroup ` -Path SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MyAg ` -FailureConditionLevel OnServerDownPour définir le seuil du délai d’attente de vérification d’intégrité, utilisez le paramètre HealthCheckTimeoutn , où n est un entier compris entre 15000 millisecondes (15 secondes) et 4294967295 millisecondes. La valeur par défaut est 30 000 millisecondes (ou 30 secondes).
Par exemple, la commande suivante modifie le seuil du délai d'attente de contrôle d'intégrité d'un groupe de disponibilité existant,
AG1, sur 120 000 millisecondes (deux minutes).Set-SqlAvailabilityGroup ` -Path SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MyAG ` -HealthCheckTimeout 120000
Remarque
Pour voir la syntaxe d’une applet de commande, utilisez l’applet de commande Get-Help dans l’environnement SQL Server PowerShell. Pour en savoir plus, voir Get Help SQL Server PowerShell.
Pour configurer et utiliser le fournisseur SQL Server PowerShell
Tâches associées
Pour configurer un basculement automatique
Modifier le mode de disponibilité d’un réplica de disponibilité (SQL Server) (le basculement automatique nécessite le mode de disponibilité avec validation synchrone)
Modifier le mode de basculement d'un réplica de disponibilité (SQL Server)
Contenu associé
Voir aussi
Vue d’ensemble des groupes de disponibilité Always On (SQL Server)
Modes de disponibilité (Groupes de disponibilité Always On)
Basculement et modes de basculement (groupes de disponibilité Always On)
Cluster de basculement Windows Server (WSFC) avec SQL Server
Stratégie de basculement pour les instances de cluster de basculement
sp_server_diagnostics (Transact-SQL)