Crear una copia de seguridad de datos y restablecerlos
En esta página, se describe cómo usar la función de copias de seguridad programadas de Firestore. Usa las copias de seguridad para proteger tus datos contra la corrupción de datos a nivel de la aplicación o la eliminación accidental de datos.
Las copias de seguridad te permiten configurar programaciones para crear copias de seguridad diarias o semanales de la base de datos especificada. Puedes usar estas copias de seguridad para restablecer los datos en una base de datos nueva.
Acerca de las copias de seguridad
Una copia de seguridad es una copia coherente de la base de datos en un momento determinado. La copia de seguridad contiene todas las configuraciones de índices y datos en ese momento. Una copia de seguridad no contiene las políticas de tiempo de actividad de la base de datos. Una copia de seguridad se encuentra en la misma ubicación que la base de datos de origen.
Las copias de seguridad tienen un período de retención configurable y se almacenan hasta que vence el período de retención o hasta que borres la copia de seguridad. Si borras la base de datos de origen, no se borrarán automáticamente las copias de seguridad relacionadas.
Firestore almacena metadatos relacionados con copias de seguridad y programas de copias de seguridad relacionados con una base de datos. Firestore retiene estos metadatos hasta que todas las copias de seguridad de la base de datos venzan o se borren.
La creación o retención de copias de seguridad no afecta el rendimiento de las lecturas o escrituras en tu base de datos activa.
Costos
Cuando usas copias de seguridad, se te cobra por lo siguiente:
- La cantidad de almacenamiento que usa cada copia de seguridad.
- Para una operación de restablecimiento, se te cobra según el tamaño de la copia de seguridad.
Para obtener más detalles y conocer las tarifas exactas, consulta la página Precios.
Antes de comenzar
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud. Obtén información para verificar si la facturación está habilitada en un proyecto.Roles obligatorios
Para obtener los permisos que necesitas para administrar las copias de seguridad y los programas de copias de seguridad, pídele a tu administrador que te otorgue uno o más de los siguientes roles de Identity and Access Management:
roles/datastore.owner
: Acceso completo a la base de datos de FirestoreLos siguientes roles también están disponibles, pero no se pueden ver en la consola de Google Cloud. Usa Google Cloud CLI para asignar estos roles:
roles/datastore.backupsAdmin
: Tiene acceso de lectura y escritura a las copias de seguridad.roles/datastore.backupsViewer
: Tiene acceso de lectura a las copias de seguridad.roles/datastore.backupSchedulesAdmin
: Tiene acceso de lectura y escritura a las programaciones de copias de seguridad.roles/datastore.backupSchedulesViewer
: Tiene acceso de lectura a las programaciones de copias de seguridad.roles/datastore.restoreAdmin
: Tiene permisos para iniciar operaciones de restablecimiento.
Crea y administra programas de copias de seguridad
En los siguientes ejemplos, se muestra cómo configurar un programa de copia de seguridad. Para cada base de datos, puedes configurar hasta una programación de copia de seguridad diaria y hasta una programación de copia de seguridad semanal. No puedes configurar múltiples programaciones de copias de seguridad semanales para diferentes días de la semana.
No puedes configurar la hora exacta del día de la copia de seguridad. Las copias de seguridad se realizan en diferentes momentos de cada día. Para las programaciones de copias de seguridad semanales, puedes configurar el día de la semana para realizar una copia de seguridad.
Crea una programación de copia de seguridad
Si deseas crear un programa de copia de seguridad para una base de datos, usa el
comando gcloud firestore backups schedules create
o firebase firestore:databases:backups:schedules
.
Crea un programa de copias de seguridad diarias
gcloud
Para crear una programación de copia de seguridad diaria, establece la marca--recurrence
en daily
:
gcloud firestore backups schedules create \ --database='DATABASE_ID' \ --recurrence=daily \ --retention=RETENTION_PERIOD
Reemplaza lo siguiente:
- DATABASE_ID: El ID de la base de datos de la que se creará una copia de seguridad. Configúralo en
'(default)'
para la base de datos predeterminada. - RETENTION_PERIOD: Establece este valor en un valor de hasta 14 semanas (
14w
).
Firebase CLI
Para crear una programación de copia de seguridad diaria, establece la marca--recurrence
en DAILY
:
firebase firestore:backups:schedules:create \ --database 'DATABASE_ID' \ --recurrence 'DAILY' \ --retention RETENTION_PERIOD
Reemplaza lo siguiente:
- DATABASE_ID: El ID de la base de datos de la que se creará una copia de seguridad. Configúralo en
'(default)'
para la base de datos predeterminada. - RETENTION_PERIOD: Establece este valor en un valor de hasta 14 semanas (
14w
).
Terraform
Para crear un programa diario de copias de seguridad, crea un recursogoogle_firestore_backup_schedule
.
resource "google_firestore_backup_schedule" "daily-backup" { project = PROJECT_ID database = DATABASE_ID retention = RETENTION_PERIOD_SECONDS daily_recurrence {} }
Reemplaza lo siguiente:
- PROJECT_ID: El ID del proyecto.
- DATABASE_ID: El ID de la base de datos de la que se creará una copia de seguridad. Configúralo en
'(default)'
para la base de datos predeterminada.
También puedes usar una referencia del recurso en un
recurso de Terraform de tipo - RETENTION_PERIOD_SECONDS: Establece este valor en segundos, seguido de "s". El valor máximo es
8467200s
(14 semanas).
google_firestore_database
.
Crea una programación de copia de seguridad semanal
gcloud
Para crear una programación de copia de seguridad semanal, establece la marca--recurrence
en weekly
:
gcloud firestore backups schedules create \ --database='DATABASE_ID' \ --recurrence=weekly \ --retention=RETENTION_PERIOD \ --day-of-week=DAY
- DATABASE_ID: El ID de la base de datos de la que se creará una copia de seguridad. Configúralo en
'(default)'
para la base de datos predeterminada. - RETENTION_PERIOD: Establece este valor en un valor de hasta 14 semanas (
14w
). - DAY: El día de la semana para realizar la copia de seguridad. Configúralo con uno de los siguientes valores:
SUN
para el domingoMON
para el lunesTUE
para el martesWED
para el miércolesTHU
para el juevesFRI
para el viernesSAT
para el sábado
Firebase CLI
Para crear una programación de copia de seguridad semanal, establece la marca--recurrence
en WEEKLY
:
firebase firestore:backups:schedules:create \ --database 'DATABASE_ID' \ --recurrence 'WEEKLY' \ --retention RETENTION_PERIOD --day-of-week DAY
- DATABASE_ID: El ID de la base de datos de la que se creará una copia de seguridad. Configúralo en
'(default)'
para la base de datos predeterminada. - RETENTION_PERIOD: Establece este valor en un valor de hasta 14 semanas (
14w
). - DAY: El día de la semana para realizar la copia de seguridad. Configúralo con uno de los siguientes valores:
SUNDAY
para el domingoMONDAY
para el lunesTUESDAY
para el martesWEDNESDAY
para el miércolesTHURSDAY
para el juevesFRIDAY
para el viernesSATURDAY
para el sábado
Terraform
Para crear un programa de copia de seguridad semanal, crea un recursogoogle_firestore_backup_schedule
.
resource "google_firestore_backup_schedule" "weekly-backup" { project = PROJECT_ID database = DATABASE_ID retention = RETENTION_PERIOD_SECONDS weekly_recurrence { day = DAY } }
Reemplaza lo siguiente:
- PROJECT_ID: El ID del proyecto.
- DATABASE_ID: El ID de la base de datos de la que se creará una copia de seguridad. Configúralo en
'(default)'
para la base de datos predeterminada.
También puedes usar una referencia del recurso en un
recurso de Terraform de tipo - RETENTION_PERIOD_SECONDS: Establece este valor en segundos, seguido de "s". El valor máximo es
8467200s
(14 semanas). - DAY: El día de la semana para realizar la copia de seguridad. Configúralo con uno de los siguientes valores:
SUNDAY
para el domingoMONDAY
para el lunesTUESDAY
para el martesWEDNESDAY
para el miércolesTHURSDAY
para el juevesFRIDAY
para el viernesSATURDAY
para el sábado
google_firestore_database
.
Enumera programaciones de copias de seguridad
Para enumerar todas las programaciones de copias de seguridad de una base de datos, usa uno de los siguientes métodos:
gcloud
Usa el comandogcloud firestore backups schedules list
.
gcloud firestore backups schedules list \ --database='DATABASE_ID'
'(default)'
para la base de datos predeterminada.
Firebase CLI
Usa el comandofirebase firestore:backups:schedules:list
.
firebase firestore:backups:schedules:list \ --database 'DATABASE_ID'
'(default)'
para la base de datos predeterminada.
Describir una programación de copia de seguridad
Para recuperar información sobre una programación de copia de seguridad, usa uno de los siguientes métodos:
gcloud
Usa el comandogcloud firestore backups schedules describe
:
gcloud firestore backups schedules describe \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID
- DATABASE_ID: El ID de la base de datos de la que se creará una copia de seguridad. Configúralo en
'(default)'
para la base de datos predeterminada. - BACKUP_SCHEDULE_ID: El ID de una programación de copia de seguridad. Puedes ver el ID de cada programación de copia de seguridad cuando enumeras todas las programaciones de copias de seguridad.
Actualiza una programación de copia de seguridad
Para actualizar el período de retención de una programación de copia de seguridad, usa uno de los siguientes métodos:
gcloud
Usa el comandogcloud firestore backups schedules update
:
gcloud firestore backups schedules update \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID \ --retention=RETENTION_PERIOD
- DATABASE_ID: El ID de la base de datos de la que se creará una copia de seguridad. Configúralo en
'(default)'
para la base de datos predeterminada. - BACKUP_SCHEDULE_ID: El ID de una programación de copia de seguridad. Puedes ver el ID de cada programación de copia de seguridad cuando enumeras todas las programaciones de copias de seguridad.
- RETENTION_PERIOD: Establece este valor en un valor de hasta 14 semanas (
14w
).
Firebase CLI
Usa el comandofirebase firestore:backups:schedules:update
:
firebase firestore:backups:schedules:update \ BACKUP_SCHEDULE \ --retention RETENTION_PERIOD
- BACKUP_SCHEDULE: Es el nombre completo del recurso de una programación de copia de seguridad. Puedes ver el nombre de cada programación de copia de seguridad cuando enumeras todas las programaciones de copias de seguridad.
- RETENTION_PERIOD: Establece este valor en un valor de hasta 14 semanas (
14w
).
Puedes actualizar el período de retención de una programación de copia de seguridad, pero no puedes actualizar su recurrencia. Si necesitas un programa de copia de seguridad con una recurrencia diferente, borra el programa de copia de seguridad anterior si ya no es necesario y crea uno nuevo con la recurrencia deseada.
Borra una programación de copia de seguridad
Para borrar una programación de copia de seguridad, usa uno de los siguientes métodos:
gcloud
Usa el comandogcloud firestore backups schedules delete
:
gcloud firestore backups schedules delete \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID
- DATABASE_ID: El ID de la base de datos de la que se creará una copia de seguridad. Configúralo en
'(default)'
para la base de datos predeterminada. - BACKUP_SCHEDULE_ID: El ID de una programación de copia de seguridad. Puedes ver el ID de cada programación de copia de seguridad cuando enumeras todas las programaciones de copias de seguridad.
Firebase CLI
Usa el comandofirebase firestore:backups:schedules:delete
:
firebase firestore:backups:schedules:delete \ BACKUP_SCHEDULE
- BACKUP_SCHEDULE: Es el nombre completo del recurso de una programación de copia de seguridad. Puedes ver el nombre de cada programación de copia de seguridad cuando enumeras todas las programaciones de copias de seguridad.
Ten en cuenta que si borras una programación de copias de seguridad, no se borrarán las copias de seguridad que ya haya creado esta programación. Puedes esperar a que venzan después del período de retención o borrar una copia de seguridad de forma manual, consulta borra la copia de seguridad.
Administrar copias de seguridad
Mostrar una lista de las copias de seguridad
Para enumerar las copias de seguridad disponibles, usa uno de los siguientes métodos:
gcloud
Usa el comandogcloud firestore backups list
:
gcloud firestore backups list \ --format="table(name, database, state)"
--format="table(name, database, state)"
da formato al resultado en un formato más legible.
Para enumerar solo las copias de seguridad de una ubicación específica, usa la marca --location
:
gcloud firestore backups list \ --location=LOCATION \ --format="table(name, database, state)"
LOCATION
por el nombre de una ubicación de Firestore.
Firebase CLI
Usa el comandofirebase firestore:backups:list
:
firebase firestore:backups:list
--location
:
firebase firestore:backups:list \ --location=LOCATION
LOCATION
por el nombre de una ubicación de Firestore.
Describe una copia de seguridad
Para ver los detalles de una copia de seguridad, usa uno de los siguientes métodos:
gcloud
Usa el comandogcloud firestore backups describe
:
gcloud firestore backups describe \ --location=LOCATION \ --backup=BACKUP_ID
- LOCATION: Es la ubicación de la base de datos.
- BACKUP_ID: El ID de una copia de seguridad Puedes ver el ID de cada copia de seguridad cuando enumeras todas las copias de seguridad.
Firebase CLI
Usa el comandofirebase firestore:backups:get
:
firebase firestore:backups:get BACKUP
- BACKUP: Es el nombre completo del recurso de una copia de seguridad. Puedes ver el nombre de cada copia de seguridad cuando enumeras todas las copias de seguridad.
Borrar copia de seguridad
gcloud
Usa el comandogcloud firestore backups delete
:
gcloud firestore backups delete \ --location=LOCATION \ --backup=BACKUP_ID
- LOCATION: Es la ubicación de la base de datos.
- BACKUP_ID: El ID de una copia de seguridad Puedes ver el ID de cada copia de seguridad cuando enumeras todas las copias de seguridad.
Firebase CLI
Usa el comandofirebase firestore:backups:delete
:
firebase firestore:backups:delete \ BACKUP
- BACKUP: Es el nombre completo del recurso de una copia de seguridad. Puedes ver el nombre de cada copia de seguridad cuando enumeras todas las copias de seguridad.
Restablece datos a partir de una copia de seguridad de una base de datos
Una operación de restablecimiento escribe los datos de una copia de seguridad en una base de datos nueva de Firestore.
Para comenzar una operación de restablecimiento, usa uno de los siguientes métodos:
gcloud
Usa el comandogcloud firestore databases restore
:
gcloud firestore databases restore \ --source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \ --destination-database='DATABASE_ID'
- PROJECT_ID: ID del proyecto
- LOCATION: Es la ubicación de la copia de seguridad de la base de datos y la ubicación de la base de datos nueva creada para los datos restablecidos.
- BACKUP_ID: El ID de una copia de seguridad Puedes ver el ID de cada copia de seguridad cuando enumeras todas las copias de seguridad.
- DATABASE_ID: Un ID de la base de datos para la base de datos nueva. No puedes usar un ID de base de datos que ya esté en uso.
metadata
, name
y 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 ...
metadata
incluye un componente progressPercentage
, que detalla el progreso estimado del restablecimiento hasta ahora, y un operationState
que especifica el estado general del restablecimiento.
Para volver a recuperar esta información, usa gcloud firestore operations list
:
gcloud firestore operations list --database=DATABASE_ID
name
del resultado descrito antes, con gcloud firestore operations describe
:
gcloud firestore operations describe OPERATION_NAME
Firebase CLI
Usa el comandofirebase firestore:databases:restore
:
firebase firestore:databases:restore \ --backup 'BACKUP' \ --database 'DATABASE_ID'
- BACKUP: Es el nombre completo del recurso de una copia de seguridad. Puedes ver el nombre de cada copia de seguridad cuando enumeras todas las copias de seguridad.
- DATABASE_ID: Un ID de la base de datos para la base de datos nueva. No puedes usar un ID de base de datos que ya esté en uso.