Crear una copia de seguridad de datos y restablecerlos

En esta página, se describe cómo usar las copias de seguridad programadas de Cloud 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.

Cloud Firestore almacena metadatos relacionados con copias de seguridad y programas de copias de seguridad relacionados con una base de datos. Cloud 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

Esta función requiere el plan de precios Blaze.

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 Cloud Firestore
  • Los siguientes roles también están disponibles, pero no se pueden ver en la consola de Google Cloud. Usa la 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 recurso google_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 google_firestore_database.
  • RETENTION_PERIOD_SECONDS: Establece este valor en segundos, seguido de "s". El valor máximo es 8467200s (14 semanas).

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
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).
  • DAY: El día de la semana para realizar la copia de seguridad. Configúralo con uno de los siguientes valores:
    • SUN para el domingo
    • MON para el lunes
    • TUE para el martes
    • WED para el miércoles
    • THU para el jueves
    • FRI para el viernes
    • SAT 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
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).
  • DAY: El día de la semana para realizar la copia de seguridad. Configúralo con uno de los siguientes valores:
    • SUNDAY para el domingo
    • MONDAY para el lunes
    • TUESDAY para el martes
    • WEDNESDAY para el miércoles
    • THURSDAY para el jueves
    • FRIDAY para el viernes
    • SATURDAY para el sábado
Terraform
Para crear un programa de copia de seguridad semanal, crea un recurso 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
  }
}

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 google_firestore_database.
  • 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 domingo
    • MONDAY para el lunes
    • TUESDAY para el martes
    • WEDNESDAY para el miércoles
    • THURSDAY para el jueves
    • FRIDAY para el viernes
    • SATURDAY para el sábado

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 comando gcloud firestore backups schedules list.
gcloud firestore backups schedules list \
--database='DATABASE_ID'
Reemplaza DATABASE_ID por el ID de la base de datos. Usa '(default)' para la base de datos predeterminada.
Firebase CLI
Usa el comando firebase firestore:backups:schedules:list.
firebase firestore:backups:schedules:list \
--database 'DATABASE_ID'
Reemplaza DATABASE_ID por el ID de la base de datos. Usa '(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 la Comando gcloud firestore backups schedules describe:
gcloud firestore backups schedules describe \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
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.
  • 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 comando gcloud firestore backups schedules update:
gcloud firestore backups schedules update \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID \
--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.
  • 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 comando firebase firestore:backups:schedules:update:
firebase firestore:backups:schedules:update \
BACKUP_SCHEDULE \
--retention RETENTION_PERIOD
Reemplaza lo siguiente:
  • 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 comando gcloud firestore backups schedules delete:
gcloud firestore backups schedules delete \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
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.
  • 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 comando firebase firestore:backups:schedules:delete:
firebase firestore:backups:schedules:delete \
BACKUP_SCHEDULE
Reemplaza lo siguiente:

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 comando gcloud firestore backups list:
gcloud firestore backups list \
--format="table(name, database, state)"
La marca --format="table(name, database, state)" le da un formato más legible al resultado. 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)"
Reemplaza LOCATION por el nombre de una ubicación de Cloud Firestore.
Firebase CLI
Usa el comando firebase firestore:backups:list:
firebase firestore:backups:list
Para enumerar solo las copias de seguridad de una ubicación específica, usa la marca --location:
firebase firestore:backups:list \
--location=LOCATION
Reemplaza LOCATION por el nombre de una ubicación de Cloud 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 comando gcloud firestore backups describe:
gcloud firestore backups describe \
--location=LOCATION \
--backup=BACKUP_ID
Reemplaza lo siguiente:
Firebase CLI
Usa el comando firebase firestore:backups:get:
firebase firestore:backups:get BACKUP
Reemplaza lo siguiente:

Borrar copia de seguridad

Para borrar una copia de seguridad, usa uno de los siguientes métodos. Advertencia: No puedes recuperar una copia de seguridad borrada.
gcloud
Usa el comando gcloud firestore backups delete:
gcloud firestore backups delete \
--location=LOCATION \
--backup=BACKUP_ID
Reemplaza lo siguiente:
Firebase CLI
Usa el comando firebase firestore:backups:delete:
firebase firestore:backups:delete \
BACKUP
Reemplaza lo siguiente:

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 de Cloud Firestore nueva.

Para comenzar una operación de restablecimiento, usa uno de los siguientes métodos:

gcloud
Usa el comando gcloud firestore databases restore:
gcloud firestore databases restore \
--source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \
--destination-database='DATABASE_ID'
Reemplaza lo siguiente:
  • 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.
El resultado incluirá los componentes 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
  ...
El campo metadata incluye un componente progressPercentage, que detalla el progreso estimado del restablecimiento hasta el momento, y un operationState que especifica el estado general del restablecimiento. Para recuperar esta información, usa gcloud firestore operations list:
gcloud firestore operations list --database=DATABASE_ID
O bien, mediante el campo name del resultado que se describió antes, con gcloud firestore operations describe:
gcloud firestore operations describe OPERATION_NAME
Firebase CLI
Usa el comando firebase firestore:databases:restore:
firebase firestore:databases:restore \
--backup 'BACKUP' \
--database 'DATABASE_ID'
Reemplaza lo siguiente:
  • 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.