web-dev-qa-db-fra.com

Que se passe-t-il lors d'une sauvegarde SQL Server en direct?

Certains de mes collègues ont été surpris quand je leur ai dit que je peux sauvegarder une base de données SQL Server pendant que cela fonctionne toujours et que cela vous demandait comment cela est possible. Je sais que SQL Server est capable de sauvegarder une base de données lorsqu'il est toujours en ligne, mais je ne sais pas comment expliquer pourquoi c'est possible. Ma question est de quel effet cela a-t-il sur la base de données?

Si les données sont modifiées (par insertion, mise à jour ou supprimer) lorsque la sauvegarde est en cours d'exécution, la sauvegarde contient-elle ces modifications ou sera-t-elle ajoutée à la base de données après?

Je suppose que le fichier journal joue un rôle important ici, mais je ne suis pas tout à fait sûr comment.

eDIT: Juste comme une note, mon cas implique la sauvegarde des bases de données à l'aide de SQL Server Agent et des effets des modifications de la base de données au cours de ce processus.

19
Sean Howat

La sauvegarde complète contient les données et le journal. Pour les données, il copie simplement chaque page de la base de données dans la sauvegarde, tel quel au moment où il lit la page. Il ajoute ensuite dans le support de sauvegarde tout le journal "pertinent". Cela inclut, à tout le moins, tout le journal entre le LSN au début de l'opération de sauvegarde et la LSN à la fin de l'opération de sauvegarde. En réalité, il y a plus de journal habituellement, car il doit inclure toutes les transactions actives au début de la sauvegarde et du journal nécessaires par réplication. Voir Débranchez quelques mythes autour des sauvegardes complètes de la base de données .

Lorsque la base de données est restaurée, toutes les pages de données sont copiées dans les fichiers de la base de données, puis toutes les pages de journal sont copiées dans le ou les fichiers journaux. La base de données est incompatible en ce moment, car elle contient des images de page de données pouvant être désynchronisées les unes avec les autres. Mais maintenant une récupération normale est exécutée. Étant donné que le journal contient tout le journal pendant la sauvegarde, à la fin de la récupération, la base de données est cohérente.

25
Remus Rusanu

Pendant la sauvegarde, Snapshot sera créé pour la base de données et les données seront lues pour la sauvegarde de cet instantané. Les opérations de DB en direct réelles ne touchent pas l'opération de sauvegarde.

2
Aravind

Vous ne pouvez pas simplement le copier car il peut y avoir des modifications de la base de données MID-Copy comme vous avez allusion à la question.

Il faut faire avec des agents qui sont conscients de la fonctionnalité de la base de données, puis prennent ensuite un "instantané" via des fonctions OS ou peut utiliser un utilitaire pour vider la base de données dans un état sécurisé (comme MySqldump, si vous utilisez MySQL).

Sinon, vous obtenez une sauvegarde qui peut être corrompue et que vous ne le saurez pas avant de la restaurer. Je pense que Joel et Jeff ont récemment parlé de cela un peu sur un récent podcast Stackoverflow.

Et vous avez raison de savoir que le fichier journal est important. Si le fichier journal/journal est désynchronisé avec les données réelles, la restauration des fichiers entraînera une corruption.

Il se résume à une sauvegarde prise à l'aide d'un état sûr de la base de données, via un agent de base de données ou une application instantanée ou une application consciente de la manière de connecter correctement la base de données dans la liste de données sans interférer avec des mises à jour lors du dépotoir de données puis le fichier résultant.

1
Bart Silverstrim

Il y a tellement de façons de le faire (d'une manière générale, aucune idée de la manière dont MSSQL le fait normalement), comme simplement dumping la base de données au fichier tout en ajoutant des modifications apportées à un fichier journal qui est engagée après la fin du débarras - à utiliser un instantané spécifique du système de fichiers. Caractéristiques telles que VSS sous Windows.

0
Oskar Duveborn