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 précis. La sauvegarde contient toutes les configurations d'index et de données à ce moment précis. Une sauvegarde ne contient pas de règles relatives à la 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 durée de conservation configurable et sont stockées jusqu'à l'expiration de cette période 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 aux calendriers de sauvegarde d'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 lectures ou des écritures dans votre base de données active.
Coûts
Lorsque vous utilisez des sauvegardes, les éléments suivants sont facturés:
- Quantité de stockage utilisée par chaque sauvegarde.
- Pour les opérations 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 programmations de sauvegarde, demandez à votre administrateur de vous accorder 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 ces rôles:
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 planifications de sauvegarderoles/datastore.backupSchedulesViewer
: accès en lecture aux planifications de sauvegarderoles/datastore.restoreAdmin
: permet 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 programmation de sauvegarde quotidienne et une programmation de sauvegarde hebdomadaire. Vous ne pouvez pas configurer plusieurs programmations de sauvegardes 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 programmations de sauvegarde hebdomadaires, vous pouvez configurer le jour de la semaine où 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
ou firebase firestore:databases:backups:schedules
.
Créer un planning de sauvegarde quotidien
gcloud
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 cette valeur sur une valeur maximale de 14 semaines (
14w
).
CLI Firebase
Pour créer un planning de sauvegarde quotidien, définissez l'option--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 la 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 programmer les sauvegardes quotidiennes, créez une ressourcegoogle_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 la 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 - RETENTION_PERIOD_SECONDS: définissez cette valeur sur une valeur en secondes, suivie de "s". La valeur maximale est de
8467200s
(14 semaines).
google_firestore_database
.
Créer un planning de sauvegarde hebdomadaire
gcloud
Pour créer un calendrier 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=DAYRemplacez 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 cette valeur sur une valeur maximale de 14 semaines (
14w
). - DAY: jour de la semaine où effectuer la sauvegarde. Définissez ce paramètre sur l'une des valeurs suivantes :
SUN
pour dimancheMON
pour lundiTUE
pour mardiWED
pour mercrediTHU
pour jeudiFRI
pour vendrediSAT
pour samedi
CLI Firebase
Pour créer un calendrier de sauvegarde hebdomadaire, définissez l'option--recurrence
sur WEEKLY
:
firebase firestore:backups:schedules:create \ --database 'DATABASE_ID' \ --recurrence 'WEEKLY' \ --retention RETENTION_PERIOD --day-of-week DAYRemplacez 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 cette valeur sur une valeur maximale de 14 semaines (
14w
). - DAY: jour de la semaine où effectuer la sauvegarde. Définissez ce paramètre sur l'une des valeurs suivantes :
SUNDAY
pour dimancheMONDAY
pour lundiTUESDAY
pour mardiWEDNESDAY
pour mercrediTHURSDAY
pour jeudiFRIDAY
pour vendrediSATURDAY
pour samedi
Terraform
Pour définir un calendrier de sauvegarde hebdomadaire, créez une ressourcegoogle_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 la 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 - RETENTION_PERIOD_SECONDS: définissez cette valeur sur une valeur en secondes, suivie de "s". La valeur maximale est de
8467200s
(14 semaines). - DAY: jour de la semaine où effectuer la sauvegarde. Définissez ce paramètre sur l'une des valeurs suivantes :
SUNDAY
pour dimancheMONDAY
pour lundiTUESDAY
pour mardiWEDNESDAY
pour mercrediTHURSDAY
pour jeudiFRIDAY
pour vendrediSATURDAY
pour samedi
google_firestore_database
.
Lister les programmations de sauvegarde
Pour répertorier tous les calendriers de sauvegarde d'une base de données, utilisez l'une des méthodes suivantes:
gcloud
Exécutez la commandegcloud alpha firestore backups schedules list
.
gcloud alpha 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 commandefirebase 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 le planning des sauvegardes
Pour récupérer des informations sur un planning de sauvegarde, utilisez l'une des méthodes suivantes:
gcloud
Exécutez la commandegcloud alpha firestore backups schedules describe
:
gcloud alpha firestore backups schedules describe \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_IDRemplacez 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 planification de sauvegarde lorsque vous répertoriez tous les calendriers de sauvegarde.
Mettre à jour un planning de sauvegarde
Pour mettre à jour la durée de conservation d'un planning de sauvegarde, utilisez l'une des méthodes suivantes:
gcloud
Exécutez la commandegcloud alpha firestore backups schedules update
:
gcloud alpha firestore backups schedules update \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID \ --retention=RETENTION_PERIODRemplacez 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 planification de sauvegarde lorsque vous répertoriez tous les calendriers de sauvegarde.
- RETENTION_PERIOD: définissez cette valeur sur une valeur maximale de 14 semaines (
14w
).
CLI Firebase
Utilisez la commandefirebase firestore:backups:schedules:update
:
firebase firestore:backups:schedules:update \ BACKUP_SCHEDULE \ --retention RETENTION_PERIODRemplacez les éléments suivants :
- BACKUP_SCHEDULE: nom complet de la ressource d'un planning de sauvegarde. Vous pouvez afficher le nom de chaque programmation de sauvegarde lorsque vous répertoriez tous les calendriers de sauvegarde.
- RETENTION_PERIOD: définissez cette valeur sur une valeur maximale de 14 semaines (
14w
).
Vous pouvez modifier la durée de conservation d'un calendrier de sauvegarde, mais vous ne pouvez pas modifier sa récurrence. Si vous avez besoin d'un planning de sauvegarde avec une récurrence différente, supprimez l'ancien planning de sauvegarde si ce n'est plus nécessaire et créez un autre planning de sauvegarde avec la récurrence souhaitée.
Supprimer un planning de sauvegarde
Pour supprimer un planning de sauvegarde, utilisez l'une des méthodes suivantes:
gcloud
Exécutez la commandegcloud alpha firestore backups schedules delete
:
gcloud alpha firestore backups schedules delete \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_IDRemplacez 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 planification de sauvegarde lorsque vous répertoriez tous les calendriers de sauvegarde.
CLI Firebase
Utilisez la commandefirebase firestore:backups:schedules:delete
:
firebase firestore:backups:schedules:delete \ BACKUP_SCHEDULERemplacez les éléments suivants :
- BACKUP_SCHEDULE: nom complet de la ressource d'un planning de sauvegarde. Vous pouvez afficher le nom de chaque programmation de sauvegarde lorsque vous répertoriez tous les calendriers de sauvegarde.
Notez que la suppression d'une programmation de sauvegarde ne supprime pas les sauvegardes déjà créées par celle-ci. Vous pouvez attendre qu'elles expirent après leur 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, utilisez l'une des méthodes suivantes:
gcloud
Exécutez la commandegcloud alpha firestore backups list
:
gcloud alpha firestore backups list \ --format="table(name, database, state)"L'option
--format="table(name, database, state)"
formate 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 du mode Datastore.
CLI Firebase
Exécutez la commandefirebase firestore:backups:list
:
firebase firestore:backups:listPour ne répertorier que les sauvegardes d'un emplacement spécifique, utilisez l'option
--location
:
firebase firestore:backups:list \ --location=LOCATIONRemplacez
LOCATION
par le nom d'un emplacement du mode Datastore.
Décrivez une sauvegarde
Pour afficher les détails d'une sauvegarde, utilisez l'une des méthodes suivantes:
gcloud
Exécutez la commandegcloud alpha firestore backups describe
:
gcloud alpha firestore backups describe \ --location=LOCATION \ --backup=BACKUP_IDRemplacez 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 en répertoriant toutes les sauvegardes.
CLI Firebase
Utilisez la commandefirebase firestore:backups:get
:
firebase firestore:backups:get BACKUPRemplacez les éléments suivants :
- BACKUP: nom complet de la ressource d'une sauvegarde. Vous pouvez voir le nom de chaque sauvegarde en répertoriant toutes les sauvegardes.
Supprimer une sauvegarde
gcloud
Exécutez la commandegcloud alpha firestore backups delete
:
gcloud alpha firestore backups delete \ --location=LOCATION \ --backup=BACKUP_IDRemplacez 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 en répertoriant toutes les sauvegardes.
CLI Firebase
Utilisez la commandefirebase firestore:backups:delete
:
firebase firestore:backups:delete \ BACKUPRemplacez les éléments suivants :
- BACKUP: nom complet de la ressource d'une sauvegarde. Vous pouvez afficher le nom de chaque sauvegarde en répertoriant 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 en mode Datastore.
Pour lancer une opération de restauration, utilisez l'une des méthodes suivantes:
gcloud
Exécutez la commandegcloud alpha firestore databases restore
:
gcloud alpha 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 en répertoriant toutes les sauvegardes.
- DATABASE_ID: ID de la nouvelle base de données. Vous ne pouvez pas utiliser un ID de base de données déjà utilisé.
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 général de la restauration.
Pour récupérer à nouveau ces informations, utilisez gcloud firestore operations list
:
gcloud firestore operations list --database=DATABASE_IDou, en utilisant le champ
name
de la sortie décrite ci-dessus, avec gcloud firestore operations describe
:
gcloud firestore operations describe OPERATION_NAME
CLI Firebase
Utilisez la commandefirebase 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 voir le nom de chaque sauvegarde en répertoriant toutes les sauvegardes.
- DATABASE_ID: ID de la nouvelle base de données. Vous ne pouvez pas utiliser un ID de base de données déjà utilisé.