Base de données du groupe de disponibilité bloquée en mode Pas de synchronisation / récupération en attente


12

Lors de la mise à niveau du stockage dans une instance de SQL Server 2014 SP1 (12.0.4422.0), nous avons rencontré un problème où deux des bases de données ne démarraient pas sur le secondaire après le redémarrage de SQL Server. Le serveur était hors ligne depuis quelques heures pendant que nous installions de nouveaux SSD (plus gros) et copions les fichiers de données sur le nouveau volume. Lorsque nous avons redémarré SQL Server, toutes les bases de données sauf deux ont recommencé à se synchroniser. Les deux autres étaient affichés dans SSMS comme Non Synchronizing / Recovery Pending .

SSMS non synchronisé / récupération en attente

Ayant eu un problème similaire de non synchronisation / récupération avant, j'ai vérifié l'état dans la section Groupes de disponibilité -> Bases de données de disponibilité, mais ils ont affiché un X rouge:

Groupes de disponibilité, bases de données de disponibilité

et même essayer de suspendre le mouvement des données a généré un message d'erreur:

Impossible de suspendre le déplacement des données dans la base de données 'StackExchange.Bycycles.Meta', qui réside sur la réplique de disponibilité 'ny-sql03' dans le groupe de disponibilité 'SENetwork_AG'. (Microsoft.SqlServer.Smo)

Informations supplémentaires: Une exception s'est produite lors de l'exécution d'une instruction ou d'un lot transact-SQL. (Microsoft.SqlServer.ConnectionInfo)

Impossible d'ouvrir la base de données 'StackExchange.Bycycles.Meta' en raison de fichiers inaccessibles ou d'une mémoire ou d'un espace disque insuffisant. Consultez le journal des erreurs SQL Server pour plus de détails. (Microsoft Sql Server, erreur: 945)

J'ai vérifié et les fichiers existaient et n'avaient aucun problème d'autorisation. J'ai également vérifié les journaux SQL Server dans SSMS sous Gestion, mais je n'ai rien vu sur la récupération en attente ni sur les problèmes avec les deux bases de données.

En cherchant de l'aide, j'ai trouvé deux articles différents qui disaient que les bases de données devraient être restaurées.

Existe-t-il un moyen de reprendre la réplication des données sur un serveur secondaire lorsqu'une base de données est bloquée dans Recovery Pending?

Réponses:


16

Comme le serveur était hors ligne depuis un certain temps, nous pensions qu'il était peut-être sorti de la fenêtre de récupération du serveur principal. Nous avons décidé d'essayer d' appliquer les derniers journaux de transactions sur la base de données pour voir si cela lancerait le processus de récupération:

-- Remove database from Availability Group:    
Alter Database [StackExchange.Bicycles.Meta] SET HADR OFF;

-- Apply t-logs to catch up. This can be done manually in SSMS or via:
RESTORE LOG [StackExchange.Bicycles.Meta] FROM DISK = '\\ny-back01\backups\SQL\_Trans\SENetwork_AG\StackExchange.Bicycles.Meta\StackExchange.Bicycles.Meta_LOG_20160217_033201.trn' WITH NORECOVERY;

-- Re-join database to availability group
ALTER DATABASE [StackExchange.Bicycles.Meta] SET HADR AVAILABILITY GROUP = [SENetwork_AG];
ALTER DATABASE [StackExchange.Bicycles.Meta] SET HADR RESUME;

Après avoir exécuté ce qui précède sur le serveur secondaire pour les deux bases de données, ils ont pu recommencer la synchronisation.

MISE À JOUR: Nous avons eu un problème similaire où, après un basculement manuel AG, l' une des bases de données du nouveau réplica principal était bloquée en mode Non synchronisé (basculé sur Non synchronisé / récupération en attente après le redémarrage de SQL Server), et les étapes ci-dessus ont travaillé pour résoudre ce problème. problème aussi.


1

Vous pouvez supprimer la base de données d'AAG, sur le nœud principal effectuer une sauvegarde complète et une sauvegarde de transaction, restaurer ces deux sauvegardes sur la base de données du nœud secondaire, puis ajouter à nouveau la base de données à l'AAG. À ce stade, cela peut indiquer que la base de données du nœud secondaire ne se synchronise pas, mais simplement faire ce qui est suggéré dans la deuxième réponse (acheter la manière dont il a été pénalisé -2), je veux dire déplacer le nœud secondaire vers le principal, cela le réparera.


-2

La prochaine fois, essayez de basculer le primaire vers le secondaire «non synchronisé» et inversement. Le secondaire doit maintenant être synchronisé.


3
C'est une horrible suggestion.
arcain

cette suggestion peut entraîner une perte de données
Aleksey Vitsko
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.