web-dev-qa-db-fra.com

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

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 Pas de synchronisation/récupération en attente .

SSMS Not Synchronizing / Recovery Pending

Ayant eu un problème similaire Pas de synchronisation/en cours de récupération auparavant, 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:

Availability Groups, Availability Databases

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 aucun problème avec les deux bases de données.

En cherchant de l'aide, j'ai trouvé deux différent articles qui disait 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?

12
Greg Bray

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 en appliquant 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 une des bases de données sur la nouvelle réplique principale était coincée Pas de synchronisation mode (basculé sur Pas de synchronisation/récupération en attente après le redémarrage de SQL Server), et les étapes ci-dessus ont également permis de résoudre ce problème.

16
Greg Bray

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.

1
Raul Echevarria

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

0
user189125