Intégrité des données dans Azure SQL Database

S’applique à :Azure SQL Database

Microsoft est responsable de la gestion de l’intégrité des données dans Azure SQL Database. Bien que des techniques traditionnelles existent pour que les DBA surveillent l’intégrité des données et se remettent en cas de corruption de base de données dans SQL Server, l’équipe d’ingénierie SQL de Microsoft a développé de nouvelles techniques qui gèrent automatiquement certaines catégories de corruption sans perte de données. Le service utilise ces techniques pour éviter la perte de données et les interruptions dans les cas où il peut les éviter.

Cet article décrit certaines de ces techniques, leur fonctionnement et leur impact sur les clients inquiets quant aux démarches à suivre pour protéger leurs données dans Azure SQL Database.

Comment Microsoft gère l’intégrité des données

La protection de l’intégrité des données dans Azure SQL Database implique une combinaison de techniques et de méthodes évolutives :

  • Surveillance approfondie des alertes d’intégrité des données. Le SQL Moteur de base de données émet des alertes pour toutes les erreurs et exceptions non traitées qui indiquent des préoccupations liées à l’intégrité des données. L’équipe d’ingénierie gère et enquête sur ces alertes.

  • Détection d’écriture « perdue » du système d’E/S. Le moteur de base de données dispose d’une fonctionnalité supplémentaire pour détecter la cause la plus fréquente de problèmes de corruption physique observés : les « écritures perdues » du système d’E/S. Cette fonctionnalité assure le suivi des écritures de pages et des numéros LSN (Log Sequence Numbers) associés. Une lecture ultérieure d’une page de données depuis le disque est comparée au LSN attendu de la page. S’il y a un décalage dans les LSN entre ce qui est sur le disque et ce qui est attendu, la page est obsolète, ce qui entraîne une alerte immédiate à l’équipe d’ingénierie.

  • Réparation automatique des pages. Certains niveaux de service fournissent des répliques de base de données pour des raisons de continuité des activités. Le service s’appuie ensuite sur un mécanisme de réparation automatique des pages, similaire à la technologie utilisée dans les groupes de disponibilité. Dans le cas où une réplique ne peut pas lire une page en raison d’un problème d’intégrité des données, le service récupère une copie propre de la page auprès d’une autre réplice, remplaçant ainsi la page illisible sans perte de données ni interruption client.

  • Intégrité des données au repos et en transit. Toutes les bases de données du service sont configurées pour vérifier les pages en utilisant ce CHECKSUM paramètre qui calcule la somme de contrôle sur toute la page et la stocke dans l’en-tête de la page pour vérification lors de la lecture. Le protocole Transport Layer Security (TLS) est également utilisé pour l’ensemble des communications, en plus des sommes de contrôle de base fournies au niveau du transport par TCP/IP.

  • Vérifications d’intégrité de la sauvegarde et de la restauration Azure SQL Database effectue la vérification des pages à la fois lors des sauvegardes gérées par service et lors de chaque opération de restauration. Tout problème détecté entraîne une alerte immédiate à l’équipe d’ingénierie.

Comment Microsoft gère les incidents d’intégrité des données

Microsoft traite les incidents de mauvais résultats ou de corruption avec la plus grande sévérité. L’entreprise offre un support 24×7 7 jours par l’ensemble des équipes d’ingénierie Azure. Lors de la gestion des incidents d’intégrité, les objectifs sont de minimiser l’indisponibilité et la perte de données.

Problèmes d’intégrité des données système

Microsoft corrige les problèmes qui n'affectent pas les données clients ou la disponibilité des bases de données sans en informer les clients. Parmi les exemples, on trouve des problèmes que la réparation automatique de pages peut corriger, ou la corruption des métadonnées internes de la base de données ou de la télémétrie qui n’affecte pas les données clients ni les résultats des requêtes.

Problèmes d’intégrité des données clients

Lorsque Microsoft détecte un problème de mauvais résultats ou de corruption des données clients, Microsoft prend les mesures suivantes :

  1. Fait tout son possible pour contacter le client dès que possible après la détection confirmée, conformément aux lois sur la vie privée.
  2. Si un contact est établi, il travaille directement avec le client pour expliquer l’ampleur de la corruption, définir les options de récupération et permettre au client de choisir l’option qui convient le mieux à son application et à son scénario.
  3. Lorsque possible, il aide le client à comprendre l’ampleur de l’impact sur son application, par exemple en identifiant si la corruption des données a provoqué la modification inattendue de l’application d’autres données.

Microsoft répare la corruption des données en utilisant diverses méthodes et étapes en coordination avec les clients. Il ne tente pas de réparation qui pourrait entraîner une perte de données sans l’approbation du client. Les clients ne peuvent pas utiliser les options de réparation DBCC CHECKDB dans Azure SQL Database, car il n’est pas possible de mettre une base de données en mode SINGLE_USER. Cependant, l’équipe Microsoft SQL peut prendre des mesures de réparation, notamment mais sans s’y limiter :

  • Reconstruisez l’index. Par exemple, reconstruisez un index non clusterisé où la table de base n’est pas non plus corrompue.
  • Exécutez DBCC CHECKDB avec REPAIR_REBUILD lorsque la réparation n’entraîne aucun risque de perte de données.
  • Exécutez DBCC CHECKDB avec REPAIR_ALLOW_DATA_LOSS dans les cas où les réparations peuvent entraîner une certaine perte de données.
  • Pour les scénarios où DBCC CHECKDB il ne peut pas être utilisé pour réparer le problème d’intégrité des données, les ingénieurs peuvent utiliser la restauration en temps précis jusqu’au point précédant l’apparition du problème d’intégrité des données, suivie d’une lecture manuelle des transactions pertinentes du journal des transactions. Un exemple où cette technique s’applique est lorsque le journal des transactions est corrompu d’une manière qui empêche la relecture automatique de toutes les transactions sans corrompre les données clients.

L’équipe d’ingénierie réalise des analyses post-mortem détaillées sur les problèmes qui conduisent à de mauvais résultats ou à une corruption des données. L’équipe suit de près les objets de réparation associés créés à cause du problème. Ces analyses post-mortem ont conduit à de nombreuses améliorations significatives, notamment la fonctionnalité de « perte d’écriture » décrite précédemment.

Contrôles d’intégrité initiés par le client

La protection de l’intégrité des données gérée par Microsoft permet de détecter rapidement les nouveaux problèmes d’intégrité des données et de les réparer lorsque c’est possible. Les vérifications d’intégrité DBCC CHECKDB initiées par le client fournissent une couche supplémentaire de protection car DBCC CHECKDB constituent un mécanisme complet de détection de corruption pour l’ensemble de la base de données. DBCC CHECKDBcomplète les fonctionnalités de protection de l’intégrité des données gérées par Microsoft.

Cette étendue et cette profondeur de détection nécessitent un temps important ainsi que des ressources supplémentaires de calcul et d’E/S lors de DBCC CHECKDB l’exécution. En conséquence, cela DBCC CHECKDB peut affecter votre charge de travail à cause de la concurrence en ressources.

En plus de la surveillance et de la protection offertes par le service, vous pouvez fonctionner DBCC CHECKDB à la fréquence et à l’heure de votre choix, en équilibrant la protection supplémentaire de l’intégrité des données avec la consommation supplémentaire de ressources.

DBCC CHECKDBn'est pas disponible dans Azure SQL Database Hyperscale. Comme alternative, utilisez le DBCC CHECKTABLE ('<TableName>') WITH TABLOCK pour les tables individuelles de la base de données.

Retour client et méthodologies en évolution

L’équipe d’ingénierie Azure SQL examine régulièrement et améliore les capacités de détection des problèmes d’intégrité des données du service. Bien que les erreurs d’intégrité des données soient rares, si vous rencontrez une erreur avant de recevoir une notification du support Azure, déposez un dossier de support.

Si vous avez des retours à partager concernant la stratégie d'intégrité des données de Microsoft, l'équipe d'ingénierie aimerait avoir de vos réponses. Pour contacter l’équipe d’ingénierie afin de faire part de retours ou de commentaires sur ce sujet, voir https://aka.ms/sqlfeedback. Vos retours aident Microsoft à améliorer les capacités existantes et à développer de nouvelles capacités de protection de l’intégrité des données.