Présentation des sauvegardes

Ce document présente les sauvegardes et les plannings de sauvegarde Spanner.

Spanner vous permet de créer des sauvegardes complètes de bases de données à la demande, ainsi que des sauvegardes complètes ou incrémentielles à l'aide d'un calendrier de sauvegarde. Les sauvegardes complètes stockent l'intégralité des données d'une base de données, tandis que les sauvegardes incrémentielles ne contiennent que les données qui ont été modifiées depuis une sauvegarde précédente.

Vous pouvez restaurer les sauvegardes lorsque des erreurs d'opérateur ou d'application entraînent une corruption logique des données.

Les sauvegardes sont disponibilité élevée, chiffrées et peuvent être conservées jusqu'à un an après leur création. Lorsque vous créez une sauvegarde, celle-ci réside dans la même instance, la même région et le même projet que sa base de données source. Si vous devez restaurer la sauvegarde dans une autre région ou un autre projet pour des raisons de conformité ou de continuité des activités, vous pouvez la copier sur une instance d'une autre région ou d'un autre projet.

Chaque sauvegarde est associée à un createTime et à un versionTime. createTime correspond au code temporel indiquant le moment où Spanner commence à créer la sauvegarde. versionTime correspond au code temporel indiquant le moment où le contenu de la base de données est capturé dans la sauvegarde. La sauvegarde contient une vue cohérente de la base de données à versionTime.

Pour les sauvegardes à la demande, createTime et versionTime sont identiques par défaut. Si nécessaire, vous pouvez spécifier un versionTime plus ancien lorsque vous créez une sauvegarde à la demande, à condition qu'il se trouve dans la période de conservation des versions de la base de données.

Pour les sauvegardes planifiées, versionTime correspond à l'heure que vous choisissez lorsque vous créez le calendrier de sauvegarde. Spanner commence à créer la sauvegarde dans les quatre heures suivant le versionTime. Le createTime se situe donc dans cet intervalle de quatre heures. Contrairement aux sauvegardes à la demande, Spanner commence à créer la sauvegarde lorsqu'il reçoit la demande.

Par exemple, supposons que vous créez une programmation de sauvegarde avec une fréquence de 0 7 * * * UTC ou tous les jours à 7h UTC. Cela signifie que pour chaque sauvegarde, versionTime est défini sur 7h00 UTC et que createTime est un code temporel compris dans la plage de quatre heures entre 7h00 UTC et 11h00 UTC.

Pour en savoir plus sur l'utilisation de createTime et versionTime avec l'API, consultez la documentation de référence de l'API Backup.

Principales fonctionnalités

  • Cohérence des données : les sauvegardes d'une base de données Spanner sont transactionnelles et cohérentes en externe au niveau du versionTime de la sauvegarde.

  • Réplication : les sauvegardes se trouvent dans la même instance que leur base de données source et sont répliquées dans les mêmes emplacements géographiques. Pour les instances régionales, la sauvegarde est stockée dans chacune des trois zones en lecture/écriture. Pour les instances birégionales et multirégionales, la sauvegarde est stockée dans toutes les zones contenant une instance dupliquée en lecture/écriture ou en lecture seule. Si vous devez stocker la sauvegarde de votre base de données dans une autre région ou un autre projet, vous pouvez copier la sauvegarde terminée de l'instance source vers une instance de destination située dans une autre région ou un autre projet. Pour en savoir plus, consultez Copier une sauvegarde.

  • Expiration automatique : la date d'expiration spécifiée par l'utilisateur détermine la date de suppression automatique de toutes les sauvegardes. Spanner supprime les sauvegardes expirées de manière asynchrone. Il peut donc y avoir un décalage entre le moment où une sauvegarde expire et celui où elle est réellement supprimée.

Créer une sauvegarde

Lorsque vous créez une sauvegarde, celle-ci réside dans la même instance, la même région et le même projet que sa base de données source.

Une sauvegarde contient les informations suivantes de la base de données au versionTime de la sauvegarde :

  • Une sauvegarde complète contient toutes les données. Une sauvegarde incrémentielle ne contient que les données qui ont été modifiées depuis une sauvegarde précédente.
  • Informations sur le schéma, y compris les noms de tables, les champs, les types de données, les index secondaires, les flux de modifications et les relations entre ces entités.
  • Toutes les options de base de données définies avec la commande ALTER DATABASE SET OPTIONS.

Une sauvegarde Spanner n'inclut pas les informations suivantes :

  • Toute modification apportée aux données ou au schéma après le versionTime.
  • Règles Identity and Access Management (IAM)
  • Enregistrements de données de flux de modifications. Bien que le schéma des flux de modifications soit stocké, les données de flux de modifications sont destinées à être diffusées et consommées presque simultanément avec les modifications qu'elles décrivent.

Pour garantir la cohérence externe de la sauvegarde, Spanner épingle le contenu de la base de données à versionTime. Cela empêche le système de récupération de mémoire de supprimer les valeurs de données pertinentes pendant la durée de l'opération de sauvegarde. Ensuite, chaque zone en lecture/écriture et en lecture seule de l'instance commence à copier les données en parallèle. Si une zone est temporairement indisponible, la sauvegarde ne se termine qu'une fois la zone de nouveau en ligne. Les sauvegardes peuvent être restaurées dès que l'opération est terminée. Pour les instances multirégionales, toutes les zones en lecture/écriture et en lecture seule de toutes les régions doivent terminer leurs répliques de sauvegarde avant que la sauvegarde ne soit marquée comme restaurable.

Planifications de sauvegarde

Spanner vous permet de planifier des sauvegardes complètes ou incrémentielles pour les bases de données. Une sauvegarde incrémentielle ne contient que les données qui ont été modifiées depuis une sauvegarde précédente, tandis que les sauvegardes complètes stockent l'intégralité du contenu de la base de données. Vous pouvez spécifier le type de programmation de sauvegarde (complète ou incrémentielle) et la fréquence pour que Spanner crée des sauvegardes.

Une planification de sauvegarde complète peut créer une sauvegarde toutes les 12 heures ou plus. Une planification de sauvegarde incrémentielle peut créer une sauvegarde toutes les quatre heures ou plus.

Spanner propose des sauvegardes incrémentielles pour votre base de données via un calendrier de sauvegarde. Vous ne pouvez pas créer de sauvegarde incrémentielle à la demande.

La création de la sauvegarde commence dans les quatre heures suivant l'heure programmée. Vous ne pouvez définir que quatre plannings de sauvegarde par base de données.

Sauvegardes incrémentielles

Les sauvegardes incrémentielles forment des chaînes entre les sauvegardes complètes. La première sauvegarde créée par un calendrier de sauvegarde incrémentielle est une sauvegarde complète. Les sauvegardes consécutives créées dans la chaîne sont des sauvegardes incrémentielles. Chacune d'elles ne contient que les données qui ont été modifiées depuis la sauvegarde précédente de la chaîne.

Spanner autorise jusqu'à 13 sauvegardes incrémentielles par chaîne, en plus de la sauvegarde complète initiale. Une chaîne est identifiée par la valeur incrementalBackupChainId correspondante. Lorsqu'une chaîne atteint sa longueur maximale, Spanner en crée une autre, en commençant par la sauvegarde complète initiale.

Dans certains cas, Spanner peut créer une chaîne avant que la longueur maximale de la chaîne ne soit atteinte. Voici quelques exemples de scénarios :

  • La sauvegarde complète la plus ancienne a été effectuée il y a 28 jours ou plus.
  • La sauvegarde la plus récente de la chaîne est supprimée.
  • La programmation de la sauvegarde incrémentielle est modifiée.

Voici quelques facteurs qui peuvent vous aider à décider d'utiliser ou non les sauvegardes incrémentielles :

  • Chiffrement : les sauvegardes incrémentielles sont compatibles avec le chiffrement à l'aide deGoogle-owned and Google-managed encryption keys uniquement, même si la base de données est chiffrée par une clé de chiffrement gérée par le client (CMEK).

  • Restauration : la restauration d'une sauvegarde incrémentielle peut prendre plus de temps que celle d'une sauvegarde complète contenant les mêmes données.

  • Suppression : si vous supprimez une sauvegarde dans une chaîne ou si elle expire, Spanner peut quand même la conserver pour prendre en charge les sauvegardes plus récentes de la chaîne, le cas échéant. Spanner a besoin de toutes les sauvegardes plus anciennes de la chaîne pour restaurer une sauvegarde incrémentielle. Pour supprimer toutes les données d'une chaîne de sauvegardes, y compris celles des sauvegardes expirées ou supprimées, supprimez toutes les sauvegardes de la chaîne.

  • Rétention : chaque programmation de sauvegarde est associée aux conditions suivantes, qui fournissent des informations sur la programmation :

    • creation_interval : représente la fréquence de programmation spécifiée pour la programmation de sauvegarde.
    • retention_duration : représente la durée de conservation des sauvegardes créées par la programmation. Pour une chaîne donnée, la sauvegarde complète la plus ancienne est conservée au-delà de sa date d'expiration d'origine si elle est nécessaire pour prendre en charge les sauvegardes plus récentes de la chaîne. La durée totale de conservation de la sauvegarde complète est au maximum la plus petite des valeurs suivantes :
      • retention_duration + 28 jours
      • retention_duration + (creation_interval*14)
  • Copie de sauvegarde : lorsque vous copiez une sauvegarde incrémentielle, Spanner copie également toutes les sauvegardes plus anciennes de la chaîne nécessaires pour restaurer la sauvegarde copiée. Si l'instance de destination contient déjà une chaîne de sauvegarde se terminant par une sauvegarde plus ancienne qui a été copiée à partir de la même chaîne source, Spanner évite de créer des copies redondantes des sauvegardes existantes. Au lieu de cela, Spanner ne copie que la sauvegarde incrémentielle et les sauvegardes plus anciennes qui ne sont pas présentes dans la chaîne de destination, et les ajoute à la chaîne existante. Spanner vous facture en fonction de l'espace de stockage total utilisé.

    Par exemple, si vous configurez une planification de sauvegarde incrémentielle quotidienne et que vous copiez la dernière sauvegarde chaque jour, l'instance de destination conserve une chaîne de sauvegarde qui reflète la chaîne source. Spanner ne duplique pas les sauvegardes précédemment copiées dans la chaîne lors des opérations de copie ultérieures.

    Bien que Spanner vise à éviter les copies redondantes, il peut arriver, dans de rares cas, que Spanner doive copier toutes les sauvegardes plus anciennes de la chaîne, même si des sauvegardes précédemment copiées existent déjà dans l'instance de destination.

Pour en savoir plus sur la création de sauvegardes incrémentielles, consultez Créer et gérer des plannings de sauvegarde.

Planifications de sauvegarde par défaut

Lorsque vous créez une instance Spanner, vous pouvez indiquer si vous souhaitez que Spanner crée une planification de sauvegarde par défaut pour chaque nouvelle base de données de l'instance. La planification de sauvegarde par défaut crée une sauvegarde complète toutes les 24 heures. Ces sauvegardes sont conservées pendant sept jours. Vous pouvez modifier ou supprimer la planification de sauvegarde par défaut une fois qu'elle a été créée.

Les plannings de sauvegarde par défaut sont automatiquement activés pour toutes les nouvelles instances. Vous pouvez activer ou désactiver les planifications de sauvegarde par défaut dans une instance lors de sa création ou en la modifiant ultérieurement.

Vous pouvez activer les planifications de sauvegarde par défaut pour les instances existantes. Toutefois, les plannings de sauvegarde par défaut ne s'appliquent pas aux bases de données existantes dans l'instance. Les plannings de sauvegarde par défaut ne s'appliquent qu'aux nouvelles bases de données de l'instance.

La programmation de sauvegarde par défaut met 24 heures à devenir active et à commencer à créer des sauvegardes.

Vous devez supprimer toutes les sauvegardes d'une instance avant de la supprimer. Si vous créez et supprimez des instances à des fins de test, vous pouvez supprimer la nouvelle instance dans les 24 heures pour éviter de supprimer manuellement ses sauvegardes.

Pour savoir comment activer ou désactiver les planifications de sauvegarde par défaut, consultez Modifier le type de planification de sauvegarde par défaut.

Coûts de stockage pour les sauvegardes complètes et incrémentielles

Chaque sauvegarde Spanner comporte les champs suivants qui fournissent des informations sur la consommation de stockage :

  • exclusiveSizeBytes : indique le nombre d'octets requis par la sauvegarde. Cette taille correspond à la taille facturable de la sauvegarde.
  • freeableSizeBytes : indique le nombre d'octets qui seront libérés si vous supprimez la sauvegarde.
  • oldestVersionTime : affiche le versionTime de la sauvegarde complète la plus ancienne de la chaîne, même si cette sauvegarde a expiré. Vous pouvez utiliser ce champ pour comprendre quelles données sont stockées.

Les sauvegardes incrémentielles peuvent vous permettre de réduire les coûts de stockage. Une sauvegarde incrémentielle peut avoir un champ exclusiveSizeBytes beaucoup plus petit qu'une sauvegarde complète, car elle n'a besoin de stocker que les modifications apportées depuis la sauvegarde précédente de la chaîne. L'ajout de cette valeur de champ pour chaque sauvegarde de la chaîne reflète le nombre total d'octets utilisés par les sauvegardes de la chaîne.

Une sauvegarde incrémentielle dépend de toutes les sauvegardes plus anciennes de la même chaîne pour la restauration. Cela signifie que si une sauvegarde incrémentielle plus récente existe, les données de toutes les sauvegardes plus anciennes de la chaîne ne peuvent pas être supprimées du système et que le champ freeableSizeBytes de toutes les sauvegardes plus anciennes de la même chaîne est nul.

Imaginons que vous avez créé un calendrier de sauvegarde complète et un calendrier de sauvegarde incrémentielle pour une base de données dont la taille est de 100 Go et qui augmente de 10 Go chaque jour. Le tableau suivant indique les coûts de stockage possibles pour ces plannings de sauvegarde :

Jour Taille de la sauvegarde complète planifiée Taille de la sauvegarde planifiée incrémentielle
1 100 Go 100 Go
2 110 Go 10 Go
3 120 Go 10 Go
4 130 Go 10 Go
5 140 Go 10 Go

Sur cinq jours, la planification de sauvegarde complète utilise 600 Go d'espace de stockage, tandis que la planification de sauvegarde incrémentielle utilise environ 140 Go d'espace de stockage. Pour un calendrier de sauvegarde incrémentielle, la taille de la sauvegarde complète correspond à la somme des tailles de toutes les sauvegardes de la chaîne jusqu'à cette sauvegarde. Elle est indiquée dans le champ sizeBytes.

Fonctionnement de la copie de sauvegarde

Spanner vous permet de copier une sauvegarde de votre base de données Spanner d'une instance à une autre dans une région ou un projet différent, afin de fournir des fonctionnalités supplémentaires de protection et de conformité des données.

Vous ne pouvez pas copier une sauvegarde si la région cible ou source Google Cloud est en panne. Pour protéger vos données en cas de panne régionale, vous devez copier régulièrement vos sauvegardes vers un emplacement en dehors de la région concernée.

La sauvegarde copiée possède les mêmes fonctionnalités clés que la sauvegarde d'origine. De plus, vous pouvez restaurer une sauvegarde copiée dans la même instance que la sauvegarde copiée pour prendre en charge les cas d'utilisation de sauvegarde et de restauration interrégionales et interprojets.

Emplacement de stockage des sauvegardes Spanner

Les sauvegardes sont des ressources dans Spanner. Chaque ressource de sauvegarde est organisée sous la même instance que sa base de données source dans la hiérarchie des ressources et possède un chemin d'accès à la ressource au format suivant :

projects/PROJECT_ID/instances/INSTANCE_ID/backups/BACKUP_NAME

Remplacez l'élément suivant :

  • PROJECT_ID : ID du projet.
  • INSTANCE_ID : ID de l'instance.
  • BACKUP_NAME : nom de la sauvegarde.

Une sauvegarde continue d'exister même après la suppression de sa base de données source, mais elle ne peut pas survivre à son instance parente. Pour éviter toute suppression accidentelle des sauvegardes, vous ne pouvez pas supprimer une instance Spanner si elle inclut des sauvegardes. Si vous souhaitez supprimer l'instance, nous vous recommandons de restaurer la sauvegarde, puis d'exporter la base de données restaurée avant de supprimer la sauvegarde et l'instance.

Chiffrement

Les sauvegardes Spanner, comme les bases de données, sont chiffrées parGoogle-owned and Google-managed encryption keys ou par des clés de chiffrement gérées par le client (CMEK). Par défaut, une sauvegarde utilise la même configuration de chiffrement que sa base de données, mais vous pouvez ignorer ce comportement en spécifiant une configuration de chiffrement différente lors de la création de la sauvegarde. Si la sauvegarde est compatible avec les CMEK, elle est chiffrée à l'aide de la version principale de la clé KMS au moment de la création de la sauvegarde. Une fois la sauvegarde créée, la clé et la version de clé associées ne peuvent plus être modifiées, même si la clé KMS est alternée. Pour en savoir plus, consultez Créer une sauvegarde compatible avec CMEK.

Une sauvegarde copiée utilise la même configuration de chiffrement (Google-owned and Google-managed encryption keys ou clés de chiffrement gérées par le client (CMEK)) que la sauvegarde source. Vous pouvez ignorer ce comportement en spécifiant une autre configuration de chiffrement lors de la copie de la sauvegarde. Si vous souhaitez que la sauvegarde copiée soit chiffrée avec une clé CMEK lors de la copie entre régions, spécifiez la clé Cloud KMS correspondant à la région de destination.

Vous pouvez spécifier la configuration du chiffrement lorsque vous créez ou modifiez la planification de sauvegarde. Si vous souhaitez que la programmation de sauvegarde crée des sauvegardes chiffrées par des clés CMEK, vous devez spécifier le chemin d'accès à la clé.

Les sauvegardes incrémentielles ne sont compatibles qu'avec le chiffrement à l'aide deGoogle-owned and Google-managed encryption keys, même si la base de données est chiffrée par une clé CMEK.

Performances

Cette section décrit les performances de sauvegarde optimales dans Spanner.

Performances lors de la sauvegarde

Lors d'une sauvegarde, Spanner crée une tâche de sauvegarde pour copier les données directement depuis la base de données vers l'espace de stockage de sauvegarde et dimensionne cette tâche en fonction de la taille de la base de données. Cette tâche de sauvegarde n'utilise pas les ressources de processeur allouées à l'instance de la base de données et n'affecte donc pas les performances de l'instance. De plus, la charge de calcul sur l'instance de la base de données n'affecte pas la vitesse de l'opération de sauvegarde. Pour suivre la progression et l'achèvement d'une opération de sauvegarde, consultez Afficher la progression de la sauvegarde.

La plupart des sauvegardes prennent généralement entre une et quatre heures. Certaines sauvegardes peuvent prendre plus de temps en raison de leur taille ou de la mise en file d'attente interne des ressources. Si une sauvegarde prend plus de temps que d'habitude lorsqu'aucun autre facteur n'a changé, cela peut être dû à un délai de planification de la tâche de sauvegarde dans une zone. Cette opération peut parfois prendre jusqu'à 30 minutes. Nous vous recommandons de ne pas annuler et redémarrer la sauvegarde, car il est probable que vous rencontriez le même délai de planification avec la nouvelle opération de sauvegarde.

Performances lors de la copie d'une sauvegarde

Le temps nécessaire pour copier une sauvegarde dépend de facteurs tels que la taille de la sauvegarde source et la région de destination choisie pour la sauvegarde copiée. En général, la plupart des copies sont effectuées en une à quatre heures. Certaines copies peuvent prendre plus de temps en fonction de la taille de la sauvegarde et de la région de destination. La copie d'une sauvegarde n'a aucune incidence sur les performances de l'instance ou de la base de données sources. Vous pouvez effectuer plusieurs copies simultanées de la sauvegarde source vers des instances dans différentes régions sans aucune incidence sur les performances.

Lorsque vous copiez une sauvegarde incrémentielle, Spanner copie également toutes les sauvegardes plus anciennes de la chaîne nécessaires pour restaurer la sauvegarde copiée. Pour améliorer les performances, Spanner copie toutes les sauvegardes simultanément au lieu de les copier de manière séquentielle. Spanner tente également d'éviter de copier les anciennes sauvegardes de la même chaîne, dans la mesure du possible. Pour en savoir plus, consultez Sauvegardes incrémentielles.

Supprimer une sauvegarde

Lorsque vous supprimez une sauvegarde incrémentielle, vous ne récupérez pas forcément de l'espace de stockage si des sauvegardes incrémentielles plus récentes sont présentes dans la même chaîne. Les sauvegardes incrémentielles plus récentes dépendent des données présentes dans la sauvegarde incrémentielle supprimée et des sauvegardes plus anciennes de la chaîne. Spanner conserve les données et ne libère l'espace de stockage que lorsque toutes les sauvegardes incrémentielles plus récentes expirent. Le champ freeableSizeBytes indique l'espace de stockage que vous pouvez récupérer si vous supprimez la sauvegarde.

Tarifs

Vous êtes facturé en fonction de la quantité d'espace de stockage utilisée par vos sauvegardes par unité de temps. La facturation commence dès que l'opération de sauvegarde est terminée et se poursuit jusqu'à la suppression de la sauvegarde. Une sauvegarde terminée est facturée pour une durée minimale de 24 heures. Si vous créez une sauvegarde, puis la supprimez peu de temps après qu'elle se termine, vous êtes toujours facturé pour 24 heures.

Une copie d'une sauvegarde est soumise aux mêmes coûts de stockage qu'une sauvegarde d'origine. Si vous créez une copie entre deux instances qui occupent des régions différentes, des frais de transfert de données sortantes s'appliquent.

Par exemple, si vous copiez votre base de données depuis la configuration d'instance multirégionale source nam7 vers la configuration d'instance multirégionale de destination nam-eur-asia3, les frais suivants s'appliquent :

  • Aucuns frais pour la région us-central1 en chevauchement
  • Aucuns frais pour la région témoin us-central2
  • Les frais de transfert de données intercontinental s'appliquent deux fois : une fois pour chaque nouveau continent (Europe et Asie).
  • Les frais de transfert de données entre régions d'un même continent s'appliquent une seule fois pour us-east1.
  • Les frais de transfert de données entre régions d'un même continent s'appliquent une seule fois en Europe.

Spanner optimise le processus de copie pour minimiser le nombre de transferts entre régions. Cela permet de minimiser les coûts de transfert de données tout en offrant une expérience de sauvegarde par copie rapide.

Les sauvegardes sont stockées et facturées séparément. Le stockage des sauvegardes n'a pas d'incidence sur la facturation du stockage des bases de données ni sur les limites de stockage des bases de données. Pour en savoir plus, consultez également Métriques d'utilisation du stockage.

Pour en savoir plus sur le coût des sauvegardes, consultez les tarifs de Spanner.

Étapes suivantes