Sauvegardes Spanner Omni

Spanner Omni vous permet de créer des sauvegardes complètes de bases de données à la demande ou à l'aide d'un calendrier de sauvegarde. Les sauvegardes stockent l'ensemble des données d'une base de données. Vous pouvez restaurer les sauvegardes lorsque des erreurs d'opérateur ou d'application entraînent une corruption logique des données.

La version Preview de Spanner Omni n'est pas compatible avec les sauvegardes ni les restaurations. Pour bénéficier des fonctionnalités qui vous permettent de créer des sauvegardes et de les restaurer, contactez Google afin de demander un accès anticipé à la version complète de Spanner Omni.

Présentation de la sauvegarde Spanner Omni

Les sauvegardes sont disponibilité élevée et peuvent être conservées jusqu'à un an après leur création. Chaque sauvegarde est associée à un createTime et à un versionTime. createTime correspond au code temporel indiquant le moment où Spanner Omni commence à créer la sauvegarde. versionTime correspond au code temporel auquel la sauvegarde capture le contenu de la base de données. La sauvegarde contient une vue cohérente de la base de données à la date versionTime.

Pour les sauvegardes à la demande, createTime et versionTime sont identiques par défaut. Si nécessaire, vous pouvez spécifier une ancienne version versionTime lorsque vous créez une sauvegarde à la demande, si elle 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 la planification des sauvegardes. Spanner Omni commence à créer la sauvegarde dans les quatre heures suivant l'versionTime. L'createTime se situe donc dans cet intervalle de quatre heures. Cela diffère des sauvegardes à la demande, où Spanner Omni commence à créer la sauvegarde lorsqu'il reçoit la requête.

Par exemple, supposons que vous créez une programmation de sauvegarde avec une fréquence de 0 7 * * * UTC (tous les jours à 7h00 UTC). Cela signifie que pour chaque sauvegarde, versionTime correspond à 7h00 UTC et createTime correspond à un code temporel dans l'intervalle de quatre heures entre 7h00 UTC et 11h00 UTC.

Principales fonctionnalités

Les sauvegardes Spanner Omni offrent une cohérence des données, une réplication externe résiliente et une expiration automatique.

  • Cohérence des données : les sauvegardes d'une base de données Spanner Omni sont cohérentes sur le plan transactionnel et en externe au versionTime de la sauvegarde.

  • Réplication : les fichiers de sauvegarde sont stockés dans un système de stockage externe, en dehors du déploiement Spanner Omni.

  • Expiration automatique : la date d'expiration spécifiée par l'utilisateur détermine la date de suppression de toutes les sauvegardes. Spanner Omni 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.

Stockage externe

Le stockage externe représente un stockage à distance qui se trouve en dehors du déploiement Spanner Omni. Vous pouvez configurer Amazon Simple Storage Service (Amazon S3), Cloud Storage ou tout stockage compatible avec Amazon S3 en tant que stockage externe. Spanner Omni stocke les fichiers de sauvegarde dans cet espace de stockage externe.

Gestion du stockage externe

Gérez le stockage externe en créant, supprimant et listant les emplacements de stockage de vos sauvegardes.

Créer un stockage externe

Pour créer un stockage externe Amazon S3, exécutez la commande suivante :

spanner external-storages create EXTERNAL_STORAGE_ID \
  --s3-bucket-name=BUCKET_NAME \
  --s3-region=AWS_REGION \
  --s3-assume-role-arn=ASSUME_ROLE_ARN

Créer un stockage externe Cloud Storage

Pour créer un stockage externe Cloud Storage, exécutez la commande suivante :

spanner external-storages create EXTERNAL_STORAGE_ID \
   --gcs-bucket-name=BUCKET_NAME

Créer un stockage externe compatible avec Amazon S3

Pour créer un stockage externe compatible avec Amazon S3, exécutez la commande suivante :

spanner external-storages create EXTERNAL_STORAGE_ID \
    --s3-compatible-bucket-name=BUCKET_NAME \
    --s3-compatible-endpoint=ENDPOINT \
    --s3-compatible-credential-file-path=FILE

Supprimer le stockage externe

Pour supprimer un stockage externe, assurez-vous d'abord qu'aucune sauvegarde existante ou en cours n'est présente. Exécutez ensuite la commande suivante :

spanner external-storages delete EXTERNAL_STORAGE_ID

Décrire le stockage externe

Pour obtenir des informations sur le stockage externe, exécutez la commande suivante :

spanner external-storages describe EXTERNAL_STORAGE_ID

Lister le stockage externe

Pour obtenir la liste des stockages externes, exécutez la commande suivante :

spanner external-storages list

Descripteur de sauvegarde

Un descripteur de sauvegarde représente les métadonnées et les chemins d'accès aux fichiers de sauvegarde terminés stockés dans un stockage externe.

spanner external-storages backup-descriptors list EXTERNAL_STORAGE_ID

Informations sur la sauvegarde

Lorsque vous créez une sauvegarde, les métadonnées de sauvegarde sont stockées dans Spanner Omni et les fichiers de sauvegarde résident dans le stockage externe.

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.

  • 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 Omni n'inclut pas les informations suivantes :

  • Toute modification apportée aux données ou au schéma après l'instant versionTime.

  • Règles de 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 doivent être diffusées et consommées à peu près en même temps que les modifications qu'elles décrivent.

Pour garantir la cohérence externe de la sauvegarde, Spanner Omni é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.

Gestion des sauvegardes

Pour créer des sauvegardes, vous avez besoin des autorisations suivantes. Demandez à votre administrateur de vous accorder les rôles IAM suivants sur un déploiement :

Action Rôle IAM
Créer, afficher, modifier et supprimer des sauvegardes roles/spanner.backupAdmin
Créer et afficher des sauvegardes roles/spanner.backupWriter

Créer une sauvegarde

Créez une sauvegarde à la demande.

spanner backups create BACKUP_NAME \
--database=DATABASE_ID \
--retention-period=RETENTION_PERIOD \
--async

Supprimer une sauvegarde

Supprimez les métadonnées et les fichiers de sauvegarde.

spanner backups delete BACKUP_NAME

Décrire une sauvegarde

Récupérer des informations sur une sauvegarde

spanner backups describe BACKUP_NAME

Répertorier des sauvegardes

Répertoriez les sauvegardes Spanner Omni existantes dans le déploiement.

spanner backups list

Modifier la date d'expiration d'une sauvegarde

Mettez à jour la date d'expiration d'une sauvegarde.

spanner backups update-metadata BACKUP_NAME \
--expiration-date=EXPIRATION_DATE

Importer une sauvegarde

Si vous supprimez accidentellement un déploiement, vous pouvez importer des sauvegardes à partir de celui-ci si vous n'avez pas supprimé les fichiers de sauvegarde du stockage externe.

  1. Créez un stockage externe dans le nouveau déploiement qui utilise le même bucket Amazon S3 ou Cloud Storage que celui du déploiement d'origine.

    spanner external-storages create EXTERNAL_STORAGE_ID \
      --gcs-bucket-name=BUCKET_NAME
    
  2. Répertoriez les descripteurs de sauvegarde dans le stockage externe.

    spanner external-storages backup-descriptors list EXTERNAL_STORAGE_ID
    
  3. Sélectionnez le descripteur de sauvegarde et importez-le dans le nouveau déploiement.

    spanner backups import BACKUP_NAME \
     --external-storage EXTERNAL_STORAGE_ID \
     --backup-descriptor BACKUP_DESCRIPTOR \
     --retention-period 24h
    

Planifications de sauvegarde

Spanner Omni vous permet de planifier des sauvegardes complètes pour les bases de données. Vous pouvez spécifier la fréquence à laquelle Spanner Omni crée des sauvegardes dans le calendrier.

Une planification de sauvegarde complète crée des sauvegardes toutes les 12 heures ou plus. Les sauvegardes démarrent dans un intervalle de 30 minutes après l'heure programmée. Vous ne pouvez pas définir plus de quatre planifications de sauvegarde par base de données.

Gestion des plannings de sauvegarde

Pour créer et gérer des programmations de sauvegarde, vous avez besoin des autorisations suivantes. Demandez à votre administrateur de vous accorder les rôles IAM suivants sur le déploiement :

  • Créer, afficher, modifier et supprimer des plannings de sauvegarde : roles/spanner.backupAdmin

  • Créer et afficher des programmations de sauvegarde : roles/spanner.backupWriter

Créer une programmation de sauvegarde

Créez un programme de sauvegarde pour la base de données Spanner Omni.

spanner backup-schedules create SCHEDULE_ID \
  --database=DATABASE_ID \
  --retention-duration=RETENTION_DURATION \
  --cron="CRONTAB_EXPRESSION"

Obtenir un planning de sauvegarde

Obtenez des informations sur une planification de sauvegarde spécifique.

spanner backup-schedules describe SCHEDULE_ID --database=DATABASE_ID

Lister les programmations de sauvegarde

Répertoriez tous les plannings de sauvegarde d'une base de données donnée.

spanner backup-schedules list --database=DATABASE_ID

Mettre à jour un planning de sauvegarde

Mettez à jour les propriétés d'un programme de sauvegarde existant.

spanner backup-schedules update SCHEDULE_ID \
  --database=DATABASE_ID \
  --retention-duration=RETENTION_DURATION \
  --cron="CRONTAB_EXPRESSION"

Supprimer une planification de sauvegarde

Supprimez une planification de sauvegarde de la base de données.

spanner backup-schedules delete SCHEDULE_ID --database=DATABASE_ID

Définir une stratégie de contrôle des accès IAM

Définissez la stratégie IAM de contrôle des accès pour une programmation de sauvegarde.

spanner backup-schedules set-iam-policy SCHEDULE_ID \
  --database=DATABASE_ID \
  policy.json

Obtenir une stratégie IAM de contrôle des accès

Obtenez la stratégie IAM de contrôle des accès pour une planification de sauvegarde.

spanner backup-schedules get-iam-policy SCHEDULE_ID --database=DATABASE_ID

Comparaison entre l'espace de stockage des sauvegardes et celui des bases de données

La taille de stockage d'une sauvegarde peut être inférieure ou supérieure à celle de la base de données source au moment de la création.

L'espace de stockage d'une sauvegarde peut être inférieur à celui de la base de données, car une sauvegarde ne contient qu'une seule version des données, tandis que la base de données active peut en contenir plusieurs en raison des opérations en cours. Des différences au niveau du format et de la compression des données peuvent également entraîner une taille de sauvegarde plus petite.

À l'inverse, l'espace de stockage d'une sauvegarde peut être supérieur à celui de la base de données, en fonction de l'état de la base de données et du moment où vous créez la sauvegarde.

Pour des raisons similaires, lorsque vous restaurez une base de données à partir d'une sauvegarde, son espace de stockage peut être supérieur à celui de la base de données. Cela peut se produire si un grand ensemble de données a été supprimé et compressé après la création de la sauvegarde. Par conséquent, la taille de la sauvegarde dépend du moment où elle a été créée et des opérations ultérieures effectuées sur la base de données.

Aucune formule ne permet de prédire la taille d'une sauvegarde par rapport à la base de données en direct. Pour une base de données avec un taux d'écriture élevé (une base de données active), la sauvegarde est probablement plus petite que la base de données en direct. Toutefois, dans certains cas, la taille de la sauvegarde peut être plus importante.