web-dev-qa-db-fra.com

Sauvegardes de journal de transaction série ou parallèle?

Nous utilisons SQL Server 2012 Standard Edition. J'utilise également les scripts de Ola Hallengren pour fournir un cadre facile et plus flexible pour effectuer des sauvegardes et une maintenance.

Cette question n'est pas tellement sur les scripts de l'OLA car ils sont sur les meilleures pratiques. Je réalise que la réponse ultime est "Cela dépend des exigences de votre entreprise". Mais j'essaie de rechercher les conseils de la communauté sur la meilleure façon de remplir ce que je comprends des exigences de notre société.

Je souhaite configurer des sauvegardes de journal de transaction toutes les 15 minutes. De cette façon, nous espérons que nous ne perdrons pas plus de 15 minutes de données. Devrais-je configurer un travail qui utilise all_databases? ou est-il préférable de configurer un travail pour chaque base de données et de les frapper tous en parallèle? Je demande, parce que j'ai le sentiment de savoir comment je vois que le script de OLA fonctionne pour que les sauvegardes soient lancées en série. L'inconvénient de la série serait que chaque sauvegarde successif attend jusqu'à ce que l'autre se termine. Cela pourrait potentiellement augmenter la quantité de temps entre les sauvegardes (plus de 15 minutes). De plus, ma préoccupation serait qu'un échec dans une sauvegarde empêche les autres de se produire et je ne voudrais pas que cela soit le cas. Je voudrais que les autres continuaient à sauvegarder.

Il est donc vrai que les scripts de OLA s'exécutent en série et à une défaillance empêche les sauvegardes successives?

Et est-il préférable d'avoir un travail pour chaque base de données? ou un seul travail qui fait tout? Mon inclination est envers des emplois séparés, mais je souhaite comprendre ce que DBA SQL Server en général a tendance à faire.

15
Chris Aldrich

Devrais-je configurer un travail qui utilise all_databases? ou est-il préférable de configurer un travail pour chaque base de données et de les frapper tous en parallèle?

Je suggérerais de configurer un travail qui puisse sauvegarder les journaux de transaction (en série). Cela garantirait également que la sauvegarde ne contient pas d'utilitaires fortement les E/S, car vous exécutez une sauvegarde pour la base de données une à la fois.

Quels pourraient être des inconvénients pouvant être exécutés en parallèle

  1. Supposons que vous disposiez de 50 bases de données et que vous planifiez la sauvegarde des journaux de transaction de toutes les bases de données et que tous commencent tous en parallèle, cela va définitivement utiliser beaucoup d'E/S. Et si le disque sur lequel il recule des fichiers arrive à avoir d'autres fichiers de données, vous verriez la lenteur. J'ai vu la sauvegarde devenant lent quand une mauvaise requête demandant beaucoup d'E/S s'exécute avec le travail de sauvegarde.

  2. Encore une fois, supposons que vous ayez 50 bases de données, il ne serait-il pas difficile de gérer 50 emplois dans SQL Server Agent et de la condition si vous avez 100 à 200 bases de données, je ne voudrais tout simplement pas l'aimer lorsque vous ouvrez l'agent SQL Server et que vous voyez beaucoup de travail, Il suffit de garder cela simple. Je suis sûr que le même cas serait avec vous.

L'inconvénient de la série serait que chaque sauvegarde successif attend jusqu'à ce que l'autre se termine. Cela pourrait potentiellement augmenter la quantité de temps entre les sauvegardes (plus de 15 minutes).

Les sauvegardes du journal des transactions sont principalement petit et si vous avez une base de données occupée produisant beaucoup d'enregistrements de journal, vous devrez peut-être modifier la fréquence de sauvegarde. Surtout, j'ai vu la sauvegarde du journal de transaction complétant l'amende lorsque la fréquence est de 15 minutes. Je ne pense pas que cela devrait être préoccupé par vous.

Plus, ma préoccupation serait qu'un échec dans une sauvegarde empêche les autres de se produire et je ne voudrais pas que ce soit le cas

Je dirais juste ne t'inquiète pas pour ça. Les sauvegardes de journal de transaction ne peuvent pas échouer à moins que vous ne vous assiège d'erreur. Les erreurs peuvent être

  1. Le propriétaire exécutant le travail est supprimé de l'annonce

  2. Quelqu'un a changé le modèle de récupération de la base de données.

  3. Espace disque insuffisant

En plus d'en haut, je n'ai vu aucune raison de la sauvegarde du journal de transaction pour échouer. C'est très robuste, vous pouvez compter sur elle.

6
Shanky

En général, exécutez toujours vos sauvegardes T-BOG en série; Beaucoup de mes instances ont quelques douzaines de bases de données et plusieurs qui sont très actives et que les sauvegardes de journal de transaction ne prennent que quelques secondes total; jusqu'à une demi-minute environ quand c'est particulièrement occupé.

Les sauvegardes en cours d'exécution en parallèle seulement seraient vraiment bénéfiques si toutes les conditions suivantes sont vraies:

  • Vos bases de données et vos fichiers journaux sont tous sur des broches indépendantes uniques (ou sont sur des disques d'état solides dans une combinaison)

    • Pour des sauvegardes de journal de T-journal, seuls les fichiers journaux devraient remplir cette exigence.
  • Vos objectifs de sauvegarde pour chaque base de données sont sur des broches séparées.

  • Vous n'utilisez pas partagé SAN HBA ou ISCSI ou autre bande passante entre l'instance SQL Server et le support.

  • i.E. Les iops de la lecture de la base de données A et de la sauvegarde d'écriture A ne pas Utilisez les mêmes disques que la base de données de lecture B et de la sauvegarde écrit B.

Si tous ceux-ci sont vrais, il est possible qu'une certaine durée du parallélisme diminue la quantité de temps de calendrier total. Si tous ceux-ci ne sont pas vrais, plus que probablement, vous provoquerez un ou plusieurs ensembles de disques de se débattu, et vos sauvegardes parallèles prennent tous les deux plus de temps de calendrier que de série, mais peuvent également causer une fragmentation de système de stockage ou de stockage, car Vous écrivez une sauvegarde A et Backup B en même temps!

Ne vous inquiétez pas pour une échec de la sauvegarde et le reste qui réussit - si vous échouez, vous devez tout vérifier quand même, et les seules fois que j'ai vu les sauvegardes échouent sont dues à:

  • Échec du disque

  • Hyperbac/LIVERSPEED/Défaut de logiciel de compression de tiers (si vous avez des logiciels entre SQL et le disque qui échoue)

    • En tant qu'enviction, l'échec peut prendre la forme d'un travail de sauvegarde qui ne se termine jamais, alors disposez de vérifier "les travaux qui fonctionnent plus longtemps que prévu" qui envoie des alertes est précieux.
  • Échec du produit de chiffrement (si vous avez des logiciels entre SQL et le disque qui échoue)

  • Échec du réseau (si les fichiers de base de données, ou plus probablement les fichiers de sauvegarde sont sur le réseau)

  • Autorisation

    • le plus commun avec de nouvelles installations

    • ou de nouveaux emplacements de sauvegarde

    • modification de l'utilisateur du service SQL Server (qui nécessite les autorisations pour des sauvegardes normales)

    • verrouillage de l'utilisateur du service SQL Server car il est utilisé par plus d'une seule instance SQL Server

  • Erreurs de configuration

  • Panne électrique

  • Casserole

Dont la plupart n'augmenteront pas l'un et non les autres sauf si les conditions ci-dessus sont également remplies.

6
Anti-weakpasswords

Juste pour ajouter, OLA conçoit ses scripts où si une sauvegarde de la base de données ne parvient pas à sauvegarder pour une raison quelconque, les suivants sont tentés. Comme indiqué précédemment, vous pouvez avoir une alerte configurée pour vous informer de la défaillance du travail car le travail de sauvegarde échouerait toujours, même si une seule sauvegarde de la base de données a échoué à toutes les bases de données utilisateur - en supposant que vous sauvegardez toutes les bases de données (une travail pour tous).

2
rvsc48