Sauvegarder et restaurer des données

Cette page explique comment utiliser la fonctionnalité de sauvegardes planifiées en mode Datastore. Utilisez des sauvegardes pour protéger vos données contre la corruption au niveau de l'application ou la suppression accidentelle.

Les sauvegardes vous permettent de configurer des calendriers 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 les règles de durée de vie de la base de données. Une sauvegarde se trouve 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'à son expiration ou jusqu'à ce que vous les supprimiez. La suppression de la base de données source ne supprime pas automatiquement les sauvegardes associées.

Firestore stocke les métadonnées liées aux sauvegardes et aux planifications de sauvegardes associées à une base de données. 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'a aucune incidence sur les performances des lectures ou des écritures dans votre base de données active.

Coûts

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

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

Pour en savoir plus et connaître les tarifs exacts, consultez la page Tarifs.

Avant de commencer

Vérifiez que la facturation est activée pour votre projet Google Cloud . Découvrez comment vérifier si la facturation est activée sur un projet.

Rôles requis

Pour obtenir les autorisations nécessaires pour gérer les sauvegardes et les planifications de sauvegarde, demandez à votre administrateur de vous accorder l'un ou plusieurs des rôles de Identity and Access Management suivants:

  • roles/datastore.owner: accès complet à la base de données Firestore
  • Les rôles suivants sont également disponibles, mais ne sont pas visibles dans la console Google Cloud . Utilisez la 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 permettant de lancer des opérations de restauration

Créer et gérer des planifications de sauvegarde

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

Vous ne pouvez pas configurer l'heure exacte de la sauvegarde. Les sauvegardes sont effectuées à des heures différentes chaque jour. Pour les planifications de sauvegarde hebdomadaires, vous pouvez configurer le jour de la semaine où la sauvegarde sera effectuée.

Créer une programmation de sauvegarde

Utilisez l'un des outils suivants pour créer un calendrier de sauvegarde.

Créer une programmation de sauvegarde quotidienne

Google Cloud console
  1. Dans la console Google Cloud , accédez à la page Bases de données.

    Accéder à la page "Bases de données"

  2. Dans la liste des bases de données, recherchez la ligne correspondant à la base de données. Dans la colonne Sauvegardes planifiées, cliquez sur Afficher les sauvegardes ou Modifier les paramètres, selon qu'une planification de sauvegarde existe ou non.
  3. Cliquez sur Modifier pour modifier les paramètres de reprise après sinistre.
  4. Cochez la case Daily (Journalier), définissez la période de conservation, puis cliquez sur Save (Enregistrer).
gcloud
Pour créer une planification de sauvegarde pour une base de données, utilisez la commande gcloud firestore backups schedules create. Pour créer une planification de sauvegarde quotidienne, définissez l'indicateur --recurrence sur daily:
gcloud firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=daily \
--retention=RETENTION_PERIOD

Remplacez les éléments suivants :

  • DATABASE_ID: ID de la base de données à sauvegarder. Définissez cette valeur sur '(default)' pour la base de données par défaut.
  • RETENTION_PERIOD: définissez cette valeur sur une valeur maximale de 14 semaines (14w).
CLI Firebase
Pour créer une planification de sauvegarde pour une base de données, utilisez la commande firebase firestore:databases:backups:schedules ou Pour créer une planification de sauvegarde quotidienne, définissez l'indicateur --recurrence sur DAILY:
firebase firestore:backups:schedules:create \
--database 'DATABASE_ID' \
--recurrence 'DAILY' \
--retention RETENTION_PERIOD

Remplacez les éléments suivants :

  • DATABASE_ID: ID de la base de données à sauvegarder. Définissez cette valeur sur '(default)' pour la base de données par défaut.
  • RETENTION_PERIOD: définissez cette valeur sur une valeur maximale de 14 semaines (14w).
Terraform
Pour créer une planification de sauvegarde quotidienne, créez une ressource google_firestore_backup_schedule.
resource "google_firestore_backup_schedule" "daily-backup" {
  project  = PROJECT_ID
  database = DATABASE_ID

  retention = RETENTION_PERIOD_SECONDS

  daily_recurrence {}
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet
  • DATABASE_ID: ID de la base de données à sauvegarder. Définissez cette valeur sur '(default)' pour la base de données par défaut.
  • Vous pouvez également utiliser une référence de ressource pour une ressource Terraform de type google_firestore_database.
  • RETENTION_PERIOD_SECONDS: définissez cette valeur en secondes, suivie de "s". La valeur maximale est 8467200s (14 semaines).

Créer une programmation de sauvegarde hebdomadaire

Google Cloud console
  1. Dans la console Google Cloud , accédez à la page Bases de données.

    Accéder à la page "Bases de données"

  2. Dans la liste des bases de données, recherchez la ligne correspondant à la base de données. Dans la colonne Sauvegardes planifiées, cliquez sur Afficher les sauvegardes ou sur Modifier les paramètres, selon qu'une planification de sauvegarde existe ou non.
  3. Cliquez sur Modifier pour modifier les paramètres de reprise après sinistre.
  4. Cochez la case Hebdomadaire, sélectionnez un jour de sauvegarde, définissez la période de conservation, puis cliquez sur Enregistrer.
gcloud
Pour créer une planification de sauvegarde hebdomadaire, définissez l'indicateur --recurrence sur weekly:
gcloud firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=weekly \
--retention=RETENTION_PERIOD \
--day-of-week=DAY
Remplacez les éléments suivants :
  • DATABASE_ID: ID de la base de données à sauvegarder. Définissez cette valeur sur '(default)' pour la base de données par défaut.
  • RETENTION_PERIOD: définissez cette valeur sur une valeur maximale de 14 semaines (14w).
  • DAY: jour de la semaine où la sauvegarde doit être effectuée. Définissez cette option sur 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
CLI Firebase
Pour créer une planification de sauvegarde hebdomadaire, définissez l'indicateur --recurrence sur WEEKLY:
firebase firestore:backups:schedules:create \
--database 'DATABASE_ID' \
--recurrence 'WEEKLY' \
--retention RETENTION_PERIOD
--day-of-week DAY
Remplacez les éléments suivants :
  • DATABASE_ID: ID de la base de données à sauvegarder. Définissez cette valeur sur '(default)' pour la base de données par défaut.
  • RETENTION_PERIOD: définissez cette valeur sur une valeur maximale de 14 semaines (14w).
  • DAY: jour de la semaine où la sauvegarde doit être effectuée. Définissez cette option sur l'une des valeurs suivantes :
    • SUNDAY pour dimanche
    • MONDAY pour lundi
    • TUESDAY pour mardi
    • WEDNESDAY pour mercredi
    • THURSDAY pour jeudi
    • FRIDAY pour vendredi
    • SATURDAY pour samedi
Terraform
Pour créer un calendrier de sauvegarde hebdomadaire, créez une ressource google_firestore_backup_schedule.
resource "google_firestore_backup_schedule" "weekly-backup" {
  project  = PROJECT_ID
  database = DATABASE_ID

  retention = RETENTION_PERIOD_SECONDS

  weekly_recurrence {
    day = DAY
  }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet
  • DATABASE_ID: ID de la base de données à sauvegarder. Définissez cette valeur sur '(default)' pour la base de données par défaut.
  • Vous pouvez également utiliser une référence de ressource vers une ressource Terraform de type google_firestore_database.
  • RETENTION_PERIOD_SECONDS: définissez cette valeur en secondes, suivie de "s". La valeur maximale est 8467200s (14 semaines).
  • DAY: jour de la semaine où la sauvegarde doit être effectuée. Définissez cette option sur l'une des valeurs suivantes :
    • SUNDAY pour dimanche
    • MONDAY pour lundi
    • TUESDAY pour mardi
    • WEDNESDAY pour mercredi
    • THURSDAY pour jeudi
    • FRIDAY pour vendredi
    • SATURDAY pour samedi

Répertorier les planifications de sauvegarde

Pour répertorier tous les calendriers de sauvegarde d'une base de données, utilisez l'une des méthodes suivantes:

Google Cloud console
  1. Dans la console Google Cloud , accédez à la page Bases de données.

    Accéder à la page "Bases de données"

  2. Dans la liste des bases de données, recherchez la ligne correspondant à la base de données. Dans la colonne Sauvegardes planifiées, cliquez sur Afficher les sauvegardes ou Modifier les paramètres, selon qu'une planification de sauvegarde existe ou non.
  3. La page Plan de reprise après sinistre s'affiche. Cette page décrit les planifications de sauvegarde et liste les sauvegardes disponibles.
gcloud
Exécutez la commande gcloud firestore backups schedules list.
gcloud firestore backups schedules list \
--database='DATABASE_ID'
Remplacez DATABASE_ID par l'ID de la base de données. Utilisez '(default)' pour la base de données par défaut.
CLI Firebase
Exécutez la commande firebase firestore:backups:schedules:list.
firebase firestore:backups:schedules:list \
--database 'DATABASE_ID'
Remplacez DATABASE_ID par l'ID de la base de données. Utilisez '(default)' pour la base de données par défaut.

Décrire la planification des sauvegardes

Pour récupérer des informations sur une planification de sauvegarde, utilisez l'une des méthodes suivantes:

Google Cloud console
  1. Dans la console Google Cloud , accédez à la page Bases de données.

    Accéder à la page "Bases de données"

  2. Dans la liste des bases de données, recherchez la ligne correspondant à la base de données. Dans la colonne Sauvegardes planifiées, cliquez sur Afficher les sauvegardes ou Modifier les paramètres, selon qu'une planification de sauvegarde existe ou non.
  3. La page Plan de reprise après sinistre s'affiche. Cette page décrit les planifications de sauvegarde et liste les sauvegardes disponibles.
gcloud
Exécutez la commande gcloud firestore backups schedules describe:
gcloud firestore backups schedules describe \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
Remplacez les éléments suivants :
  • DATABASE_ID: ID de la base de données à sauvegarder. Définissez cette valeur 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 listez toutes les planifications de sauvegarde.

Modifier un planning de sauvegarde

Pour mettre à jour la durée de conservation d'un calendrier de sauvegarde, utilisez l'une des méthodes suivantes:

Google Cloud console
  1. Dans la console Google Cloud , accédez à la page Bases de données.

    Accéder à la page "Bases de données"

  2. Dans la liste des bases de données, recherchez la ligne correspondant à la base de données. Dans la colonne Sauvegardes planifiées, cliquez sur Afficher les sauvegardes ou Modifier les paramètres.
  3. Cliquez sur Modifier pour modifier les paramètres de reprise après sinistre.
  4. Modifiez les paramètres de planification des sauvegardes, puis cliquez sur Enregistrer.
gcloud
Exécutez la commande gcloud firestore backups schedules update :
gcloud firestore backups schedules update \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID \
--retention=RETENTION_PERIOD
Remplacez les éléments suivants :
  • DATABASE_ID: ID de la base de données à sauvegarder. Définissez cette valeur 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 listez toutes les planifications de sauvegarde.
  • RETENTION_PERIOD: définissez cette valeur sur une valeur maximale de 14 semaines (14w).
CLI Firebase
Exécutez la commande firebase firestore:backups:schedules:update :
firebase firestore:backups:schedules:update \
BACKUP_SCHEDULE \
--retention RETENTION_PERIOD
Remplacez les éléments suivants :
  • BACKUP_SCHEDULE: nom complet de la ressource d'un calendrier de sauvegarde. Vous pouvez afficher le nom de chaque planification de sauvegarde lorsque vous listez toutes les planifications de sauvegarde.
  • RETENTION_PERIOD: définissez cette valeur sur une valeur maximale de 14 semaines (14w).

Vous pouvez modifier la période de conservation d'une planification de sauvegarde, mais pas sa récurrence. Si vous avez besoin d'une planification de sauvegarde avec une autre fréquence, supprimez l'ancienne planification de sauvegarde si elle n'est plus nécessaire, puis créez-en une nouvelle avec la fréquence souhaitée.

Supprimer une planification de sauvegarde

Pour supprimer une planification de sauvegarde, utilisez l'une des méthodes suivantes:

Google Cloud console
  1. Dans la console Google Cloud , accédez à la page Bases de données.

    Accéder à la page "Bases de données"

  2. Dans la liste des bases de données, recherchez la ligne correspondant à la base de données. Dans la colonne Sauvegardes planifiées, cliquez sur Afficher les sauvegardes ou sur Modifier les paramètres, selon qu'une planification de sauvegarde existe ou non.
  3. Cliquez sur Modifier pour modifier les paramètres de reprise après sinistre.
  4. Modifiez les paramètres de planification des sauvegardes, puis cliquez sur Enregistrer.
gcloud
Exécutez la commande gcloud firestore backups schedules delete :
gcloud firestore backups schedules delete \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
Remplacez les éléments suivants :
  • DATABASE_ID: ID de la base de données à sauvegarder. Définissez cette valeur 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 listez toutes les planifications de sauvegarde.
CLI Firebase
Exécutez la commande firebase firestore:backups:schedules:delete :
firebase firestore:backups:schedules:delete \
BACKUP_SCHEDULE
Remplacez les éléments suivants :

Notez que la suppression d'une planification de sauvegarde ne supprime pas les sauvegardes déjà créées par cette planification. Vous pouvez attendre qu'elles expirent à la fin de leur période de conservation ou supprimer manuellement une sauvegarde. Pour ce faire, consultez Supprimer une sauvegarde.

Gérer les sauvegardes

Répertorier des sauvegardes

Pour lister les sauvegardes disponibles, utilisez l'une des méthodes suivantes:

Google Cloud console
  1. Dans la console Google Cloud , accédez à la page Bases de données.

    Accéder à la page "Bases de données"

  2. Dans la liste des bases de données, recherchez la ligne correspondant à la base de données. Dans la colonne Sauvegardes planifiées, cliquez sur Afficher les sauvegardes ou Modifier les paramètres, selon qu'une planification de sauvegarde existe ou non.
  3. Cliquez sur Modifier pour modifier les paramètres de reprise après sinistre.
  4. Modifiez les paramètres de planification des sauvegardes, puis cliquez sur Enregistrer.
gcloud
Exécutez la commande gcloud firestore backups list :
gcloud firestore backups list \
--format="table(name, database, state)"
L'indicateur --format="table(name, database, state)" met en forme la sortie dans un format plus lisible. Pour répertorier uniquement les sauvegardes d'un emplacement spécifique, utilisez l'option --location:
gcloud firestore backups list \
--location=LOCATION \
--format="table(name, database, state)"
Remplacez LOCATION par le nom d'un emplacement en mode Datastore.
CLI Firebase
Exécutez la commande firebase firestore:backups:list :
firebase firestore:backups:list
Pour répertorier uniquement les sauvegardes d'un emplacement spécifique, utilisez l'option --location:
firebase firestore:backups:list \
--location=LOCATION
Remplacez LOCATION par le nom d'un emplacement en mode Datastore.

Décrire une sauvegarde

Pour afficher les détails d'une sauvegarde, utilisez l'une des méthodes suivantes:

Google Cloud console
  1. Dans la console Google Cloud , accédez à la page Bases de données.

    Accéder à la page "Bases de données"

  2. Dans la liste des bases de données, recherchez la ligne correspondant à la base de données. Dans la colonne Sauvegardes planifiées, cliquez sur Afficher les sauvegardes ou Modifier les paramètres, selon qu'une planification de sauvegarde existe ou non.
  3. La page Plan de reprise après sinistre s'affiche. Cette page décrit les planifications de sauvegarde et liste les sauvegardes disponibles.
gcloud
Exécutez la commande gcloud firestore backups describe :
gcloud firestore backups describe \
--location=LOCATION \
--backup=BACKUP_ID
Remplacez les éléments suivants :
  • LOCATION: emplacement de la base de données.
  • BACKUP_ID: ID d'une sauvegarde. Vous pouvez afficher l'ID de chaque sauvegarde lorsque vous listez toutes les sauvegardes.
CLI Firebase
Exécutez la commande firebase firestore:backups:get :
firebase firestore:backups:get BACKUP
Remplacez les éléments suivants :

Supprimer une sauvegarde

Pour supprimer une sauvegarde, utilisez l'une des méthodes suivantes.

Google Cloud console
  1. Dans la console Google Cloud , accédez à la page Bases de données.

    Accéder à la page "Bases de données"

  2. Dans la liste des bases de données, recherchez la ligne correspondant à la base de données. Dans la colonne Sauvegardes planifiées, cliquez sur Afficher les sauvegardes ou Modifier les paramètres, selon qu'une planification de sauvegarde existe ou non. La page Plan de reprise après sinistre s'affiche. Cette page décrit les planifications de sauvegarde et liste les sauvegardes disponibles.
  3. Dans le tableau Sauvegardes, recherchez la ligne d'une sauvegarde, puis dans la colonne Actions, cliquez sur Afficher plus(). Cliquez sur Supprimer.
  4. Confirmez l'action à l'aide du champ de texte, puis cliquez sur Supprimer.
gcloud
Exécutez la commande gcloud firestore backups delete :
gcloud firestore backups delete \
--location=LOCATION \
--backup=BACKUP_ID
Remplacez les éléments suivants :
  • LOCATION: emplacement de la base de données.
  • BACKUP_ID: ID d'une sauvegarde. Vous pouvez afficher l'ID de chaque sauvegarde lorsque vous listez toutes les sauvegardes.
CLI Firebase
Exécutez la commande firebase firestore:backups:delete :
firebase firestore:backups:delete \
BACKUP
Remplacez les éléments suivants :
  • BACKUP: nom complet de la ressource d'une sauvegarde. Vous pouvez afficher le nom de chaque sauvegarde lorsque vous listez toutes les sauvegardes.

Restaurer des 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 en mode Datastore.

Pour lancer une opération de restauration, utilisez l'une des méthodes suivantes:

Google Cloud console
  1. Dans la console Google Cloud , accédez à la page Bases de données.

    Accéder à la page "Bases de données"

  2. Dans la liste des bases de données, recherchez la ligne correspondant à la base de données. Dans la colonne Sauvegardes planifiées, cliquez sur Afficher les sauvegardes ou Modifier les paramètres, selon qu'une planification de sauvegarde existe ou non. La page Plan de reprise après sinistre s'affiche. Cette page décrit les planifications de sauvegarde et liste les sauvegardes disponibles.
  3. Dans le tableau Sauvegardes, recherchez la ligne d'une sauvegarde, puis dans la colonne Actions, cliquez sur Afficher plus(). Cliquez sur Restaurer avec Cloud Shell.
  4. Le panneau Cloud Shell s'ouvre avec une commande gcloud CLI pour restaurer à partir de la sauvegarde sélectionnée. Remplacez ID_OF_NEW_DATABASE par un ID de la base de données, puis exécutez la commande.

    L'exécution de la commande renvoie une réponse contenant plus d'informations sur l'opération. La base de données apparaît bientôt dans votre liste. L'opération de restauration prend un certain temps et doit être terminée avant que la base de données ne soit accessible.

gcloud
Exécutez la commande gcloud firestore databases restore :
gcloud firestore databases restore \
--source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \
--destination-database='DATABASE_ID'
Remplacez les éléments suivants :
  • PROJECT_ID : ID de votre projet
  • LOCATION: emplacement de la sauvegarde de la base de données et emplacement de la nouvelle base de données créée pour les données restaurées.
  • BACKUP_ID: ID d'une sauvegarde. Vous pouvez afficher l'ID de chaque sauvegarde lorsque vous listez 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 mode de la base de données correspond à celui de la sauvegarde. La sortie inclura 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 inclut un composant progressPercentage, qui détaille 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, à l'aide du champ name de la sortie décrite ci-dessus, avec gcloud firestore operations describe:
gcloud firestore operations describe OPERATION_NAME
CLI Firebase
Exécutez la commande firebase firestore:databases:restore :
firebase firestore:databases:restore \
--backup 'BACKUP' \
--database 'DATABASE_ID'
Remplacez les éléments suivants :
  • BACKUP: nom complet de la ressource d'une sauvegarde. Vous pouvez afficher le nom 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 mode de la base de données correspond à celui de la sauvegarde.