Le fichier journal de la base de données de distribution SQL Server augmente de façon incontrôlable après une sauvegarde complète de la base de données

8

Nous avons un environnement de réplication de fusion qui pousse à 8 abonnés. Cela fonctionne bien. Notre base de données de distribution est configurée en mode de récupération simple. Nous avons un plan de maintenance qui sauvegardera toutes les bases de données tous les jours à 00h30. Une fois ce processus terminé, le fichier journal de distribution augmente au cours des 30 prochaines minutes et absorbe tout l'espace restant sur le disque dur (environ 90 Go)

Ce qui se passe alors, c'est que la base de données de distribution apparaît comme "Recovery Pending" et nous ne pouvons rien faire avant de redémarrer la machine. Après cela, je peux réduire le fichier journal à 2 Mo.

Je ne sais pas pourquoi cela se produit. Le fichier journal s'exécute à environ 10 Mo pendant la journée. La taille de la base de données est de 15 Go.

Koenyn
la source
2
Que fait d' autre le plan de maintenance? Et quelle est la sys.databases.log_reuse_wait_descvaleur pendant ces 30 minutes pendant la croissance du journal?
Remus Rusanu
Qu'est-ce qui met la base de données dans un état de récupération en attente? Cela ne devrait pas se produire pour une sauvegarde complète.
mrdenny
1
ok, il semble donc que lorsque ce travail s'exécute "Nettoyage de l'historique des agents: distribution", le fichier journal se développe ... La sauvegarde est peut-être en cours pendant que ce travail est toujours en cours d'exécution. Je ne sais pas si cela causera le problème. J'ai configuré le nettoyage de l'historique pour qu'il s'exécute une heure plus tôt. Va voir quels sont les résultats
Koenyn
Une reconstruction d'index?
Carol Baker West

Réponses:

2

Il semble que vous ayez un volume élevé de transactions avec votre réplication. Si c'est le cas, ce travail de "nettoyage: distribution" devrait probablement être exécuté beaucoup plus souvent. Il me semble que cela se produit une fois par jour. Sur mon serveur de réplication de transactions élevé, je le lance toutes les 15 minutes pour ne conserver que les 36 dernières heures. De cette façon, il se rythme et ne s'embourbe pas.

Voici un article qui pourrait vous aider - http://www.sqlservergeeks.com/blogs/singhsatnam84/sql-server-bi/563/sql-server-controlling-growth-of-a-distribution-database

Cate Donoghue
la source
1
oui, nous le faisons fonctionner une fois par jour. J'ai maintenant limité la taille du fichier journal à 15 Go. Cela semble avoir beaucoup aidé. Il n'est pas nécessaire de le tronquer maintenant et notre serveur ne plante pas. Quels sont les risques liés à l'exécution du travail toutes les 15 minutes?
Koenyn
Le nettoyage est un simple appel de proc stocké. En l'exécutant plus souvent, la taille du lot est plus petite. Si votre rétention est définie correctement, il n'y a aucun risque que j'aie trouvé. D'après mon expérience, cela réduit le retard de réplication. dbo.sp_MSdistribution_cleanup
Cate Donoghue
0

Créez un nouveau cliché de la réplication et redémarrez l'agent de cliché.

user199836
la source
2
Bienvenue aux administrateurs de bases de données . Veuillez vérifier comment écrire une bonne réponse? pour mieux contribuer avec vos connaissances.
Ronaldo