web-dev-qa-db-fra.com

Comment supprimer une base de données secondaire d'un groupe de disponibilité et la rejoindre

J'ai un groupe de disponibilité (AG) avec plusieurs bases de données (DB-A, DB-B, DB-C) et plusieurs secondaires (SEC-B, SEC-C) et l'une des bases de données ne reprendra pas la synchronisation sur une seule des les secondaires.

Pour cet exemple, DB-C ne se synchronise pas sur SEC-C et aucune quantité de redémarrage de SQL Server ou de reprise de HADR ne le fera redémarrer.

  • Je ne veux pas supprimer la réplique (SEC-C secondaire) de l'AG car je devrais alors resynchroniser toutes les bases de données (DB-A, DB-B et DB-C), et cela prendrait plus de temps que nécessaire.

  • Je ne veux pas non plus supprimer complètement la base de données (DB-C) de l'AG car il y a d'autres secondaires (SEC-B) où il n'y a pas de problème, et je ne veux pas avoir à la resynchroniser ou perdre temporairement ma HADR sur le secondaire où il travaille.

Comment puis-je supprimer uniquement cette base de données secondaire de l'AG, la resynchroniser et l'ajouter à nouveau à l'AG?

3
Tony Hinkle

Cela peut être fait en supprimant simplement la base de données secondaire du groupe de disponibilité (AG), en restaurant les sauvegardes pour la remettre en synchronisation, puis en l'ajoutant à nouveau à l'AG. SQL Server Management Studio prend en charge la suppression d'une base de données secondaire d'un AG et son ajout, mais il ne dispose pas d'un assistant (à ce jour) pour effectuer toutes les étapes requises pour sauvegarder, restaurer et rejoindre.

  1. Supprimez la base de données secondaire de l'AG en exécutant le T-SQL suivant sur le secondaire (SEC-C dans l'exemple OP) où la base de données ne se synchronise pas:

    ALTER DATABASE DB-C SET HADR OFF

    Voir Supprimer une base de données secondaire d'un groupe de disponibilité . Vous pouvez également effectuer cette étape dans SSMS en explorant la base de données sous AG sur le secondaire, en cliquant dessus avec le bouton droit et en sélectionnant l'option pour la supprimer.

  2. Supprimez la base de données du secondaire.

  3. Effectuez une sauvegarde complète et au moins une sauvegarde de journal sur l'une des répliques de base de données qui est toujours dans l'AG et synchronisée, et restaurez-les sur le secondaire. S'il s'agit d'une base de données volumineuse et occupée et que vous effectuez une restauration sur un site DR, cela peut prendre plus d'une journée. Veillez à laisser la base de données en mode de récupération (restaurer avec NORECOVERY) !

    Voir Préparer une base de données secondaire pour un groupe de disponibilité Always On .

  4. Lorsque la base de données secondaire est rattrapée par la dernière sauvegarde de journal restaurée, joignez-la à l'AG en exécutant la commande suivante sur le secondaire (SEC-C dans l'exemple OP):

    ALTER DATABASE DB-C SET HADR AVAILABILITY GROUP = AG_name

    Voir Joindre une base de données secondaire à un groupe de disponibilité Always On pour plus d'informations, y compris comment effectuer cette étape dans SSMS.

Cette réponse se veut un guide succinct de haut niveau. Tout cela est bien documenté par Microsoft, mais il est réparti sur plusieurs pages, qui contiennent bien sûr beaucoup plus d'informations, et les pages sont dans différentes catégories. La page pour supprimer une base de données secondaire se trouve sous:

Continuité des activités -> Groupes de disponibilité Always On -> How-to -> Operation

et les autres pages référencées sont sous

Continuité des activités -> Groupes de disponibilité Always On -> How-to -> Configurer le groupe de disponibilité.

6
Tony Hinkle

Vous pouvez également utiliser dbatools.

Ci-dessous, vous obtiendrez une base de données d'un groupe de disponibilité donné, puis la supprimerez.

Get-DbaAgDatabase -SqlInstance SecondaryServerName -AvailabilityGroup AG101 -Database DBNameYouWantToRemove | remove-dbaagdatabase 

puis ajoutez la base de données au groupe ag.

Get-DbaAgDatabase -SqlInstance PrimaryServerName -Database DBNameYouWantToAdd | Add-DbaAgDatabase -AvailabilityGroup SharePoint -Secondary SecondaryServerName -AvailabilityGroup AG101
6
Kin Shah