Heure d'été

9

Dans mon environnement, il y a des serveurs fonctionnant sur une sauvegarde native et des plans Ola Hallengren. Nos serveurs sont une combinaison de 2008, 2012 et 2014. Toutes les sauvegardes complètes sont effectuées à 12h et les sauvegardes de journaux sont effectuées toutes les 15 minutes.

Je n'ai jamais pris en compte l'heure d'été auparavant, alors dites-moi quels ajustements je dois faire.

Les sauvegardes complètes à 12 heures seront-elles affectées et qu'advient-il des sauvegardes de journaux?

SqlNovice
la source
6
Franchement, je ferais fonctionner mes serveurs en UTC.
Aaron Bertrand
Les nôtres sont malheureusement CST
SqlNovice
1
Bien sûr, mais pour être honnête, ce n'est pas codé en dur sur la carte mère.
Aaron Bertrand

Réponses:

12

L'expert SQL Server, Paul Randal, aborde ce sujet dans Comment l'impact de l'heure d'été sur la reprise après sinistre? . C'est un article relativement court, donc je le cite dans son intégralité. Étant donné que vous étiez préoccupé par vos sauvegardes du journal des transactions, j'ai également mis en évidence une partie du message pour attirer votre attention sur cela.

Il est de notoriété publique que SQL Server gère correctement l'heure d'été (DST), alors pourquoi vous en soucier?

Eh bien, il n'est pas si courant qu'à la fin de l'heure d'été lorsque les horloges remontent d'une heure (toujours à 02h00 aux États-Unis), l'Agent SQL s'arrête essentiellement pendant une heure (au moins à partir de SS2000). Cela signifie que si vous avez un travail qui fait quelque chose toutes les 15 minutes, il y aura un écart de 75 minutes entre l'exécution du travail à 01h45 et l'exécution du travail à 02h00. Cela se produit car à 02h00, l'heure est redescendue à 01h00 mais la prochaine exécution de tous les travaux reste la même - votre travail ne peut donc pas s'exécuter avant la prochaine heure planifiée de 02h00. Ainsi, dans l'hémisphère nord chaque automne et dans l'hémisphère sud chaque printemps, vous perdez l'équivalent d'une heure de travail d'agent SQL. Mais pourquoi s'en soucier?

Eh bien, cela dépend des emplois qui sont retardés d'une heure. Si vous avez un travail qui prend une sauvegarde de journal toutes les 15 minutes, puis le jour où l'heure d'été se termine, il y a en fait un intervalle de 75 minutes entre les sauvegardes de journal. Si vous avez un contrat de niveau de service (SLA) qui limite la quantité maximale de travail perdue à 15 minutes en cas de catastrophe, alors pour ces 75 minutes, vous risquez de ne pas être en mesure de respecter ce SLA!

Cela pourrait être un gros problème, surtout si quelque chose ne va pas pendant cette heure (pas plus ou moins probable que quelque chose ne va pas à un autre moment, mais toujours possible). Dans ce cas, vous devez trouver une solution alternative. Voici quelques façons de contourner le problème:

  • Demandez à quelqu'un de se lever tard pendant cette heure et de faire des sauvegardes de journal manuelles.
  • Basculez vers la mise en miroir de bases de données, qui diffuse en continu le journal vers le serveur redondant et n'est donc pas affecté par le problème d'heure d'été.

Ces deux solutions sont viables, mais je pense que la meilleure consiste à créer un travail SQL Agent qui s'exécute à 01:59 et crée des travaux de sauvegarde supplémentaires à exécuter à 01:00, 01:15, 01:30 et 01:45. Je ne vois pas pourquoi cela ne devrait pas être possible. À 10 h 36 ce matin, j'ai créé un travail d'agent simple pour imprimer la date dans un fichier et la configurer pour qu'elle s'exécute à 9 h 40 - dans le passé. J'ai ensuite rétabli l'heure de mon système d'une heure et le travail s'est parfaitement exécuté. Le seul inconvénient de cette solution est que vous devez créer et planifier les travaux supplémentaires à l'aide des SP T-SQL Agent intégrés dans les étapes de travail pour votre travail 01:59 - fastidieux mais pas difficile. Peut-être que quelqu'un pourrait m'envoyer un script et je le bloguerai comme suite?

Donc, avec l'heure d'été qui se termine le 4 novembre, c'est certainement quelque chose dont vous devez être conscient même si vous ne voulez pas vous donner la peine de faire face à l'exposition de l'heure supplémentaire. En passant - les dates de début et de fin de l'heure d'été ont changé cette année. L'article 931975 de la Base de connaissances explique quelles parties de SQL Server ne connaissent pas les dates modifiées et ce que vous pouvez faire à ce sujet.

Scott Hodgin
la source
Donc, je pourrais voir une perte de données potentielle pendant 75 minutes ... Si je suis d'accord avec cela, je dois changer n'importe quel paramètre, je peux le laisser tel
quel
Si vous êtes d'accord avec le potentiel de perdre les 75 minutes jusqu'à la prochaine sauvegarde de journal régulièrement planifiée, alors je ne pense pas que vous ayez besoin d'apporter des modifications.
Scott Hodgin
De plus, le serveur qui m'inquiète est un groupe de disponibilité toujours actif, donc je suppose qu'en cas de problème, je peux basculer.
SqlNovice
@SqlNovice en supposant que votre groupe de disponibilité se trouve sur deux serveurs qui ne sont pas affectés par le même événement et que tous les événements se sont validés sur les autres instances = True. Vous prenez peut-être plus pour acquis qu'il est sûr de supposer. Les serveurs PS ne sont pas dans les groupes de disponibilité, les bases de données le sont. (c'est-à-dire "" le serveur qui m'inquiète est un groupe toujours disponible)
James Jenkins
Désolé mon erreur, les bases de données dans le groupe de disponibilité sont une réplique en mode syn et une autre en mode
asyn