Lien de basculement - Azure SQL Managed Instance
S’applique à : Azure SQL Managed Instance
Cet article vous apprend comment basculer une base de données liée entre SQL Server et Azure SQL Managed Instance en utilisant SQL Server Management Studio (SSMS) ou PowerShell à des fins de récupération après sinistre ou de migration.
Prérequis
Pour basculer vos bases de données sur votre réplica secondaire via la liaison, vous devez disposer des conditions préalables suivantes :
- Un abonnement Azure actif. Si vous n’en avez pas, créez un compte gratuit.
- Version prise en charge de SQL Server avec la mise à jour de service requise installée.
- Liaison configurée entre votre réplica principal et secondaire.
- Vous pouvez basculer le lien à l’aide de Transact-SQL (actuellement en préversion) à partir de SQL Server 2022 CU13 (KB5036432).
Arrêter la charge de travail
Si vous êtes prêt à basculer votre base de données vers le réplica secondaire, arrêtez d'abord toutes les charges de travail des applications sur le réplica principal pendant les heures de maintenance. Cela permet à la réplication de la base de données de rattraper le retard sur le réplica secondaire afin que vous puissiez basculer vers le réplica secondaire sans perte de données. Assurez-vous que vos applications n'engagent pas de transactions sur le réplica principal avant de basculer.
Basculer une base de données
Vous pouvez basculer une base de données liée en utilisant Transact-SQL (T-SQL), SQL Server Management Studio ou PowerShell.
Vous pouvez basculer le lien à l’aide de Transact-SQL (actuellement en préversion) à partir de SQL Server 2022 CU13 (KB5036432).
Pour effectuer un basculement planifié pour un lien, utilisez la commande T-SQL suivante sur le réplica principal :
ALTER AVAILABILITY GROUP [<DAGname>] FAILOVER
Pour effectuer un basculement forcé, utilisez la commande T-SQL suivante sur le réplica secondaire :
ALTER AVAILABILITY GROUP [<DAGname>] FORCE_FAILOVER_ALLOW_DATA_LOSS
Afficher la base de données après le basculement
Pour SQL Server 2022, si vous avez choisi de conserver le lien, vous pouvez vérifier que le groupe de disponibilité distribué existe sous Groupes de disponibilité dans l’Explorateur d'objets dans SQL Server Management Studio.
Si vous avez supprimé la liaison pendant le basculement, vous pouvez utiliser l'Explorateur d'objets pour confirmer que le groupe de disponibilité distribué n'existe plus. Si vous avez choisi de conserver le groupe de disponibilité, la base de données sera toujours Synchronisée.
Nettoyer après le basculement
Sauf si Supprimer la liaison après un basculement réussi est sélectionné, un basculement avec SQL Server 2022 n’interrompt pas la liaison. Vous pouvez conserver la liaison après le basculement, ce qui laisse le groupe de disponibilité et le groupe de disponibilité distribué actifs. Aucune action supplémentaire n’est requise.
La suppression de la liaison supprime uniquement le groupe de disponibilité distribué et laisse le groupe de disponibilité actif. Vous pouvez décider de conserver le groupe de disponibilité ou de le supprimer.
Si vous décidez de supprimer votre groupe de disponibilité, remplacez la valeur suivante, puis exécutez l’exemple de code T-SQL :
<AGName>
par le nom du groupe de disponibilité sur SQL Server (utilisé pour créer le lien).
-- Run on SQL Server
USE MASTER
GO
DROP AVAILABILITY GROUP <AGName>
GO
État incohérent après le basculement forcé
Après un basculement forcé, vous pouvez rencontrer un scénario fractionné dans lequel les deux réplicas ont le rôle principal, laissant la liaison dans un état incohérent. Cela peut se produire si vous basculez vers le réplica secondaire lors d’une urgence, puis que le réplica principal revient en ligne.
Tout d’abord, vérifiez que vous êtes dans un scénario fractionné. Vous pouvez le faire à l’aide de SQL Server Management Studio (SSMS) ou de Transact-SQL (T-SQL).
Connectez-vous à SQL Server et à SQL Managed Instance dans SSMS, puis dans l’Explorateur d’objets, développez les réplicas de disponibilité sous le nœud du groupe de disponibilité dans Haute disponibilité Always-on. Si deux réplicas différents sont répertoriés en tant que (Principal), vous êtes dans un scénario fractionné.
Vous pouvez également exécuter le script T-SQL suivant sur SQL Server et SQL Managed Instance pour vérifier le rôle des réplicas :
-- Execute on SQL Server and SQL Managed Instance
declare @link_name varchar(max) = '<DAGName>'
USE MASTER
GO
SELECT
ag.name [Link name],
rs.role_desc [Link role]
FROM
sys.availability_groups ag
join sys.dm_hadr_availability_replica_states rs
on ag.group_id = rs.group_id
WHERE
rs.is_local = 1 and ag.name = @link_name
GO
Si les deux instances répertorient un Principal différent dans la colonne Rôle de la liaison, vous êtes dans un scénario fractionné.
Pour résoudre l’état fractionné, commencez par effectuer une sauvegarde sur le réplica qui était le réplica principal d’origine. Si le réplica principal d’origine était SQL Server, effectuez une sauvegarde de la fin du journal. Si le réplica principal d’origine était SQL Managed Instance, effectuez une sauvegarde complète de copie uniquement. Une fois la sauvegarde terminée, définissez le groupe de disponibilité distribué sur le rôle secondaire pour le réplica qui était le réplica principal d’origine, mais sera désormais le nouveau réplica secondaire.
Par exemple, en cas d’urgence véritable, en supposant que vous avez forcé un basculement de votre charge de travail SQL Server vers Azure SQL Managed Instance et que vous envisagez de continuer à exécuter votre charge de travail sur SQL Managed Instance, effectuez une sauvegarde de la fin du journal sur SQL Server, puis définissez le groupe de disponibilité distribué sur le rôle secondaire sur SQL Server, comme dans l’exemple suivant :
--Execute on SQL Server
USE MASTER
ALTER availability group [<DAGName>]
SET (role = secondary)
GO
Ensuite, exécutez un basculement manuel programmé de SQL Managed Instance vers SQL Server à l’aide de la liaison, comme dans l’exemple suivant :
--Execute on SQL Managed Instance
USE MASTER
ALTER availability group [<DAGName>] FAILOVER
GO
Contenu connexe
Pour en savoir plus sur la fonctionnalité de liaison, évaluez les ressources suivantes :