Sauvegarder et restaurer des données
Cette page explique comment utiliser la fonctionnalité de sauvegardes planifiées Firestore. Utilisez des sauvegardes pour protéger vos données contre la corruption de données au niveau de l'application ou la suppression accidentelle de données.
Les sauvegardes vous permettent de configurer des programmations 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 des 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 configurations de données et d'index à ce moment-là. Une sauvegarde ne contient pas de règles de durée de vie de base de données. Une sauvegarde se trouve au même emplacement que la base de données source.
Les sauvegardes ont une durée 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.
Firestore stocke les métadonnées liées aux sauvegardes et les 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'affecte pas les performances des opérations de lecture ou d'écriture de votre base de données active.
Coûts
Lorsque vous utilisez des sauvegardes, les éléments suivants vous sont facturés:
- Quantité de stockage utilisée par chaque sauvegarde.
- Pour une opération de restauration, des frais vous sont facturés en fonction de la taille de la sauvegarde.
Pour en savoir plus et pour 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 sauvegardes, demandez à votre administrateur de vous attribuer un ou plusieurs des rôles Identity and Access Management suivants:
roles/datastore.owner
: accès complet à la base de données FirestoreLes rôles suivants sont également disponibles, mais ne sont pas visibles dans la console Google Cloud. Utilisez la Google Cloud CLI pour attribuer les rôles suivants:
roles/datastore.backupsAdmin
: accès en lecture et en écriture aux sauvegardesroles/datastore.backupsViewer
: accès en lecture aux sauvegardesroles/datastore.backupSchedulesAdmin
: accès en lecture et en écriture aux plannings de sauvegarderoles/datastore.backupSchedulesViewer
: accès en lecture aux planifications de sauvegarderoles/datastore.restoreAdmin
: autorisations de lancer des opérations de restauration
Créer et gérer des planifications de sauvegarde
Les exemples ci-dessous montrent comment configurer un planning de sauvegarde. Pour chaque base de données, vous pouvez configurer jusqu'à un planning de sauvegarde quotidien et jusqu'à un planning de sauvegarde hebdomadaire. Vous ne pouvez pas configurer plusieurs programmations 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 à différentes heures 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 un planning 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 un planning de sauvegarde quotidien, définissez l'option --recurrence
sur daily
:
gcloud alpha 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 la valeur sur(default)
pour la base de données par défaut.RETENTION_PERIOD
: définissez une valeur maximale de 14 semaines (14w
).
Créer une programmation de sauvegarde hebdomadaire
Pour créer un planning de sauvegarde hebdomadaire, définissez l'option --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
: ID de la base de données à sauvegarder. Définissez la valeur sur(default)
pour la base de données par défaut.RETENTION_PERIOD
: définissez une valeur maximale de 14 semaines (14w
).DAY
: jour de la semaine où effectuer la sauvegarde. Définissez l'une des options suivantes :SUN
pour dimancheMON
pour lundiTUE
pour mardiWED
pour mercrediTHU
pour jeudiFRI
pour vendrediSAT
pour samedi
Répertorier les programmations 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. Utilisez (default)
comme base de données par défaut.
Décrire le planning des sauvegardes
Pour récupérer des informations sur une programmation 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
: ID de la base de données à sauvegarder. Définissez la valeur sur(default)
pour la base de données par défaut.BACKUP_SCHEDULE_ID
: ID d'un planning de sauvegarde. Vous pouvez afficher l'ID de chaque programmation de sauvegarde en répertoriant toutes les planifications de sauvegarde.
Mettre à jour un planning de sauvegarde
Pour mettre à jour la durée de conservation d'un planning 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
: ID de la base de données à sauvegarder. Définissez la valeur sur(default)
pour la base de données par défaut.BACKUP_SCHEDULE_ID
: ID d'un planning de sauvegarde. Vous pouvez afficher l'ID de chaque programmation de sauvegarde en répertoriant toutes les planifications de sauvegarde.RETENTION_PERIOD
: définissez une valeur maximale de 14 semaines (14w
).
Supprimer une programmation de sauvegarde
Pour supprimer une programmation 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
: ID de la base de données à sauvegarder. Définissez la valeur sur(default)
pour la base de données par défaut.BACKUP_SCHEDULE_ID
: ID d'un planning de sauvegarde. Vous pouvez afficher l'ID de chaque programmation de sauvegarde en répertoriant toutes les planifications de sauvegarde.
Notez que la suppression d'une programmation de sauvegardes ne supprime pas les sauvegardes déjà créées par cette programmation. Vous pouvez attendre qu'elles expirent à l'issue de la période de conservation ou pour supprimer manuellement une sauvegarde, consultez la section Supprimer une sauvegarde.
Gérer les sauvegardes
Répertorier des sauvegardes
Pour répertorier les sauvegardes disponibles, exécutez la commande gcloud alpha firestore backups list
:
gcloud alpha firestore backups list \ --format="table(name, database, state)"
L'option --format="table(name, database, state)"
met en forme la sortie dans un format plus lisible.
Pour ne répertorier que les sauvegardes d'un emplacement spécifique, utilisez l'option --location
:
gcloud alpha firestore backups list \ --location=LOCATION \ --format="table(name, database, state)"
Remplacez LOCATION
par le nom d'un emplacement 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
: emplacement de la base de données.BACKUP_ID
: ID d'une sauvegarde. Vous pouvez afficher l'ID de chaque sauvegarde en répertoriant toutes les sauvegardes.
Supprimer une sauvegarde
Pour supprimer une sauvegarde, exécutez la commande gcloud alpha firestore backups delete
:
gcloud alpha firestore backups delete \ --location=LOCATION \ --backup=BACKUP_ID
LOCATION
: emplacement de la base de données.BACKUP_ID
: ID d'une sauvegarde. Vous pouvez afficher l'ID de chaque sauvegarde en répertoriant 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 à partir d'une sauvegarde dans une nouvelle base de données 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 projetLOCATION
: 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 en répertoriant 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 base de données correspondra à celui de la sauvegarde.
Le résultat inclut 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, en utilisant le champ name
de la sortie décrite ci-dessus, avec gcloud firestore operations describe
:
gcloud firestore operations describe OPERATION_NAME