Sauvegarder et restaurer les données

Cette page décrit comment utiliser la fonctionnalité de sauvegardes planifiées de Cloud Firestore. Utilisez des sauvegardes pour protéger vos données contre la corruption des données au niveau de l'application ou contre la suppression accidentelle de données.

Les sauvegardes vous permettent de configurer des planifications de sauvegarde pour effectuer des sauvegardes quotidiennes ou hebdomadaires de la base de données spécifiée. Vous pouvez ensuite utiliser ces sauvegardes pour restaurer les données dans une nouvelle base de données.

À propos des sauvegardes

Une sauvegarde est une copie cohérente de la base de données à un moment donné. La sauvegarde contient toutes les données et configurations d'index à ce moment-là. Une sauvegarde ne contient pas de politiques de durée de vie de la base de données. Une sauvegarde réside au même emplacement que la base de données source.

Les sauvegardes ont une période de conservation configurable et sont stockées jusqu'à l'expiration de la période de conservation ou jusqu'à ce que vous supprimiez la sauvegarde. La suppression de la base de données source ne supprime pas automatiquement les sauvegardes associées.

Cloud Firestore stocke les métadonnées liées aux sauvegardes et aux planifications de sauvegarde liées à une base de données. Cloud Firestore conserve ces métadonnées jusqu'à ce que toutes les sauvegardes de la base de données expirent ou soient supprimées.

La création ou la conservation de sauvegardes n'affectent pas les performances des lectures ou des écritures dans votre base de données active.

Frais

Lorsque vous utilisez des sauvegardes, les frais suivants vous sont facturés :

  • La quantité de stockage utilisée par chaque sauvegarde.
  • Pour une opération de restauration, vous êtes facturé en fonction de la taille de la sauvegarde.

Pour plus de détails et les tarifs exacts, consultez la page Tarifs .

Avant que tu commences

Cette fonctionnalité nécessite le plan tarifaire Blaze .

Rôles requis

Pour obtenir les autorisations dont vous avez besoin pour gérer les sauvegardes et les planifications de sauvegarde, demandez à votre administrateur de vous accorder un ou plusieurs des rôles de gestion des identités et des accès suivants :

  • roles/datastore.owner : Accès complet à la base de données Cloud Firestore
  • Les rôles suivants sont également disponibles mais ne sont pas visibles dans la console Google Cloud Platform. Utilisez Google Cloud CLI pour attribuer ces rôles :

    • roles/datastore.backupsAdmin : accès en lecture et en écriture aux sauvegardes
    • roles/datastore.backupsViewer : accès en lecture aux sauvegardes
    • roles/datastore.backupSchedulesAdmin : accès en lecture et en écriture aux planifications de sauvegarde
    • roles/datastore.backupSchedulesViewer : accès en lecture aux planifications de sauvegarde
    • roles/datastore.restoreAdmin : autorisations pour lancer des opérations de restauration

Créer et gérer des planifications de sauvegarde

Les exemples ci-dessous montrent comment configurer une planification de sauvegarde. Pour chaque base de données, vous pouvez configurer jusqu'à une planification de sauvegarde quotidienne et jusqu'à une planification de sauvegarde hebdomadaire. Vous ne pouvez pas configurer plusieurs planifications de sauvegardes hebdomadaires pour différents jours de la semaine.

Vous ne pouvez pas configurer l'heure exacte de la journée de la sauvegarde. Les sauvegardes sont effectuées à des moments différents chaque jour. Pour les planifications de sauvegarde hebdomadaires, vous pouvez configurer le jour de la semaine pour effectuer une sauvegarde.

Créer un planning de sauvegarde

Pour créer une planification de sauvegarde pour une base de données, utilisez la commande gcloud alpha firestore backups schedules create .

Créer un planning de sauvegarde quotidien

Pour créer une planification de sauvegarde quotidienne, définissez l'indicateur --recurrence sur daily :

gcloud alpha firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=daily \
--retention=RETENTION_PERIOD

Remplacez les éléments suivants :

  • DATABASE_ID : L'ID de la base de données à sauvegarder. Défini sur (default) pour la base de données par défaut.
  • RETENTION_PERIOD : Pour une récurrence de sauvegarde daily , définissez cette valeur sur une valeur allant jusqu'à 7 jours ( 7d ). Si vous définissez une récurrence de sauvegarde weekly , définissez-la sur une valeur allant jusqu'à 14 semaines ( 14w ).

Créer un planning de sauvegarde hebdomadaire

Pour créer une planification de sauvegarde hebdomadaire, définissez l'indicateur --recurrence sur weekly :

gcloud alpha firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=weekly \
--retention=RETENTION_PERIOD \
--day-of-week=DAY

Remplacez les éléments suivants :

  • DATABASE_ID : L'ID de la base de données à sauvegarder. Défini sur (default) pour la base de données par défaut.
  • RETENTION_PERIOD : Pour une récurrence de sauvegarde weekly , définissez cette valeur sur une valeur allant jusqu'à 14 semaines ( 14w ).
  • DAY : Le jour de la semaine pour effectuer la sauvegarde. Définissez l'une des valeurs suivantes :
    • SUN pour dimanche
    • MON pour lundi
    • TUE pour mardi
    • WED pour mercredi
    • THU pour jeudi
    • FRI pour vendredi
    • SAT pour samedi

Répertorier les planifications de sauvegarde

Pour répertorier toutes les planifications de sauvegarde d'une base de données, utilisez la commande gcloud alpha firestore backups schedules list . Cette commande renvoie des informations sur toutes les planifications de sauvegarde.

gcloud alpha firestore backups schedules list \
--database='DATABASE_ID'

Remplacez DATABASE_ID par l'ID de la base de données. Utiliser (default) pour la base de données par défaut.

Décrire le calendrier de sauvegarde

Pour récupérer des informations sur une planification de sauvegarde, utilisez la commande gcloud alpha firestore backups schedules describe :

gcloud alpha firestore backups schedules describe \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID

Remplacez les éléments suivants :

  • DATABASE_ID : L'ID de la base de données à sauvegarder. Défini sur (default) pour la base de données par défaut.
  • BACKUP_SCHEDULE_ID : ID d'une planification de sauvegarde. Vous pouvez afficher l'ID de chaque planification de sauvegarde lorsque vous répertoriez toutes les planifications de sauvegarde .

Mettre à jour un planning de sauvegarde

Pour mettre à jour la période de conservation d'une planification de sauvegarde, utilisez la commande gcloud alpha firestore backups schedules update :

gcloud alpha firestore backups schedules update \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
--retention=RETENTION_PERIOD

Remplacez les éléments suivants :

  • DATABASE_ID : L'ID de la base de données à sauvegarder. Défini sur (default) pour la base de données par défaut.
  • BACKUP_SCHEDULE_ID : ID d'une planification de sauvegarde. Vous pouvez afficher l'ID de chaque planification de sauvegarde lorsque vous répertoriez toutes les planifications de sauvegarde .
  • RETENTION_PERIOD : Si vous définissez une récurrence de sauvegarde daily , définissez-la sur une valeur allant jusqu'à 7 jours ( 7d ). Si vous définissez une récurrence de sauvegarde weekly , définissez-la sur une valeur allant jusqu'à 14 semaines ( 14w ).

Supprimer une planification de sauvegarde

Pour supprimer une planification de sauvegarde, utilisez la commande gcloud alpha firestore backups schedules delete :

gcloud alpha firestore backups schedules delete \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID

Remplacez les éléments suivants :

  • DATABASE_ID : L'ID de la base de données à sauvegarder. Défini sur (default) pour la base de données par défaut.
  • BACKUP_SCHEDULE_ID : ID d'une planification de sauvegarde. Vous pouvez afficher l'ID de chaque planification de sauvegarde lorsque vous répertoriez toutes les planifications de sauvegarde .

Notez que la suppression d'une planification de sauvegarde ne supprimera pas les sauvegardes déjà créées par cette planification. Vous pouvez attendre leur expiration après leur période de conservation, ou supprimer manuellement une sauvegarde, voir supprimer la sauvegarde .

Gérer les sauvegardes

Liste des sauvegardes

Pour répertorier les sauvegardes disponibles, utilisez la commande gcloud alpha firestore backups list :

gcloud alpha firestore backups list \
--format="table(name, database, state)"

L' --format="table(name, database, state)" formate la sortie dans un format plus lisible.

Pour répertorier uniquement les sauvegardes d'un emplacement spécifique, utilisez l'indicateur --location :

gcloud alpha firestore backups list \
--location=LOCATION \
--format="table(name, database, state)"

Remplacez LOCATION par le nom d'un emplacement Cloud Firestore.

Décrire une sauvegarde

Pour afficher les détails d'une sauvegarde, utilisez la commande gcloud alpha firestore backups describe :

gcloud alpha firestore backups describe \
--location=LOCATION \
--backup=BACKUP_ID
  • LOCATION : L'emplacement de la base de données.
  • BACKUP_ID : L'ID d'une sauvegarde. Vous pouvez afficher l'ID de chaque sauvegarde lorsque vous répertoriez toutes les sauvegardes .

Supprimer la sauvegarde

Pour supprimer une sauvegarde, utilisez la commande gcloud alpha firestore backups delete :

gcloud alpha firestore backups delete \
--location=LOCATION \
--backup=BACKUP_ID
  • LOCATION : L'emplacement de la base de données.
  • BACKUP_ID : L'ID d'une sauvegarde. Vous pouvez afficher l'ID de chaque sauvegarde lorsque vous répertoriez toutes les sauvegardes .

Restaurer les données à partir d'une sauvegarde de base de données

Une opération de restauration écrit les données d'une sauvegarde dans une nouvelle base de données Cloud Firestore. Pour lancer une opération de restauration, utilisez la commande gcloud alpha firestore databases restore :

gcloud alpha firestore databases restore \
--source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \
--destination-database='DATABASE_ID'
  • PROJECT_ID : ID de votre projet.
  • LOCATION : L'emplacement de la sauvegarde de la base de données et l'emplacement de la nouvelle base de données créée pour les données restaurées.
  • BACKUP_ID : L'ID d'une sauvegarde. Vous pouvez afficher l'ID de chaque sauvegarde lorsque vous répertoriez toutes les sauvegardes .
  • DATABASE_ID : ID de base de données pour la nouvelle base de données. Vous ne pouvez pas utiliser un ID de base de données déjà utilisé.

Le résultat comprendra les composants metadata , name et response :

metadata:
  '@type': type.googleapis.com/google.firestore.admin.v1.RestoreDatabaseMetadata
  backup: projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID
  database: projects/PROJECT_ID/databases/DATABASE_ID
  operationState: PROCESSING
  progressPercentage:
    completedWork: '20'
    estimatedWork: '100'
  startTime: '2023-12-06T14:20:17.398325Z'
name: projects/PROJECT_ID/databases/DATABASE_ID/operations/operation_uuid
response:
  '@type': type.googleapis.com/google.firestore.admin.v1.Database
  createTime: '2023-12-06T14:20:17.398325Z'
  name: projects/PROJECT_ID/databases/DATABASE_ID
  ...

Le champ metadata comprend un composant progressPercentage , détaillant la progression estimée de la restauration jusqu'à présent, et un operationState spécifiant l'état global de la restauration.

Pour récupérer à nouveau ces informations, utilisez gcloud firestore operations list :

gcloud firestore operations list --database=DATABASE_ID

ou, en utilisant le champ name de la sortie décrite ci-dessus, avec gcloud firestore operations describe :

gcloud firestore operations describe OPERATION_NAME