Effectuer une restauration sur place

S'applique aux éditions Standard et Enterprise de Cloud Firestore.

Cette page explique comment restaurer les données d'une sauvegarde dans une base de données portant le même nom que la base de données source de la sauvegarde. Avant de lire cette page, vous devez avoir consulté Sauvegarder et restaurer des données.

Restauration sur place

Une restauration sur place vous permet de restaurer une base de données à partir d'une sauvegarde vers la base de données source qui a créé la sauvegarde, tandis que la base de données d'origine existe toujours. Une restauration sur place vous permet d'éviter de rediriger le trafic ou de créer une base de données avec un nom différent.

Une opération de restauration doit utiliser une base de données de destination qui n'existe pas encore. Toutefois, vous pouvez simuler une restauration sur place en supprimant la base de données source, puis en restaurant une sauvegarde dans une nouvelle base de données portant le même nom que la base de données source.

Effectuer une restauration sur place

Pour effectuer une restauration sur place, procédez comme suit :

  1. Identifiez la sauvegarde à utiliser pour l'opération de restauration.
  2. Supprimez la base de données existante.
  3. Utilisez la sauvegarde et l'ID de la base de données supprimée pour effectuer l'opération de restauration.
Attention : Si votre application utilise une bibliothèque cliente Cloud Firestore en mode natif et que vos clients utilisent un cache hors connexion, une restauration sur place peut vider vos écritures dans la base de données restaurée au lieu de les supprimer. Cette situation peut se produire si le client connecté à la base de données supprimée passe hors connexion et que, pendant qu'il est hors connexion, le cache accumule des écritures au moment où vous effectuez une restauration sur place.

Avant de commencer

Nous vous recommandons de suivre les étapes ci-dessous avant de lancer le processus de restauration sur place.

Récupérez et copiez la configuration d'index de votre base de données. Utilisez la configuration de l'index pour recréer les index une fois l'opération de restauration sur place terminée. Utilisez les commandes suivantes pour récupérer la configuration d'index de votre base de données :

  • Utilisez gcloud firestore indexes composite list pour récupérer la liste des index composites :

        gcloud firestore indexes composite list --database=DATABASE_ID
    

    Remplacez DATABASE_ID par l'ID de votre base de données.

  • Utilisez gcloud firestore indexes fields list pour récupérer la liste des exemptions d'index à champ unique (intégrées).

        gcloud firestore indexes fields list --database=DATABASE_ID
    

Effectuer une restauration sur place

Pour effectuer une opération de restauration sur place, procédez comme suit. Ce processus nécessite un temps d'arrêt entre le moment où vous supprimez la base de données et celui où l'opération de restauration est terminée.

Une fois l'opération de restauration lancée, vous ne pouvez pas l'annuler. Vous devez attendre qu'elle se termine. L'opération de restauration occupe immédiatement l'ID de base de données utilisé dans l'opération.

  1. Exécutez la commande gcloud firestore backups list pour identifier la sauvegarde à utiliser pour l'opération de restauration et notez le nom de la ressource. Le nom de la ressource utilise le format suivant :

        projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID
    
  2. Utilisez la commande gcloud firestore databases delete pour supprimer la base de données existante :

        gcloud firestore databases delete --database='DATABASE_ID'
    

    Remplacez DATABASE_ID par l'ID de la base de données.

  3. Attendez au moins cinq minutes après avoir supprimé la base de données pour que son ID soit à nouveau disponible. Lancez une opération de restauration à l'aide de 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 DATABASE_ID par l'ID de la base de données.

Étape suivante