Copia de seguridad y restauración de datos

Esta página describe cómo utilizar la función de copias de seguridad programadas de Cloud Firestore. Utilice copias de seguridad para proteger sus datos contra la corrupción de datos a nivel de aplicación o contra la eliminación accidental de datos.

Las copias de seguridad le permiten configurar programas de copia de seguridad para realizar copias de seguridad diarias o semanales de la base de datos especificada. Luego puede utilizar estas copias de seguridad para restaurar datos en una nueva base de datos.

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 todos los datos y las configuraciones de índice en ese momento. Una copia de seguridad no contiene políticas de tiempo de vida de la base de datos. Una copia de seguridad reside 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 expire el período de retención o hasta que elimine la copia de seguridad. Eliminar la base de datos de origen no elimina 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 conserva estos metadatos hasta que todas las copias de seguridad de la base de datos caduquen o se eliminen.

Crear o conservar copias de seguridad no afecta el rendimiento de lecturas o escrituras en su base de datos activa.

Costos

Cuando utilizas copias de seguridad, se te cobra lo siguiente:

  • La cantidad de almacenamiento utilizado por cada copia de seguridad.
  • Para una operación de restauración, se le cobra según el tamaño de la copia de seguridad.

Para obtener más detalles y tarifas exactas, consulte la página de Precios .

Antes de que empieces

Esta función requiere el plan de precios Blaze .

Roles requeridos

Para obtener los permisos que necesita para administrar copias de seguridad y programaciones de copias de seguridad, solicite a su administrador que le otorgue uno o más de los siguientes roles de administración de acceso e identidad:

  • roles/datastore.owner : acceso completo a la base de datos de Cloud Firestore
  • Los siguientes roles también están disponibles, pero no visibles en Google Cloud Platform Console. Utilice la CLI de Google Cloud para asignar estos roles:

    • roles/datastore.backupsAdmin : acceso de lectura y escritura a las copias de seguridad
    • roles/datastore.backupsViewer : acceso de lectura a las copias de seguridad
    • roles/datastore.backupSchedulesAdmin : acceso de lectura y escritura a programas de respaldo
    • roles/datastore.backupSchedulesViewer : acceso de lectura a programas de respaldo
    • roles/datastore.restoreAdmin : permisos para iniciar operaciones de restauración

Crear y administrar programas de respaldo

Los ejemplos siguientes demuestran cómo configurar una programación de copias de seguridad. Para cada base de datos, puede configurar hasta un programa de copia de seguridad diario y hasta un programa de copia de seguridad semanal. No puede configurar múltiples programas de respaldo semanales para diferentes días de la semana.

No puede configurar la hora exacta del día de la copia de seguridad. Las copias de seguridad se realizan en diferentes momentos cada día. Para los programas de respaldo semanales, puede configurar el día de la semana para realizar un respaldo.

Crear un cronograma de respaldo

Para crear un cronograma de respaldo para una base de datos, use el comando gcloud alpha firestore backups schedules create .

Cree un programa de respaldo diario

Para crear una programación de respaldo diaria, configure el indicador --recurrence en daily :

gcloud alpha firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=daily \
--retention=RETENTION_PERIOD

Reemplace lo siguiente:

  • DATABASE_ID : El ID de la base de datos de la que se va a realizar la copia de seguridad. Establezca en (default) para la base de datos predeterminada.
  • RETENTION_PERIOD : para una repetición daily de la copia de seguridad, configúrelo en un valor de hasta 7 días ( 7d ). Si establece una periodicidad de copia de seguridad weekly , configúrelo en un valor de hasta 14 semanas ( 14w ).

Cree un programa de respaldo semanal

Para crear un programa de respaldo semanal, configure el indicador --recurrence en weekly :

gcloud alpha firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=weekly \
--retention=RETENTION_PERIOD \
--day-of-week=DAY

Reemplace lo siguiente:

  • DATABASE_ID : El ID de la base de datos de la que se va a realizar la copia de seguridad. Establezca en (default) para la base de datos predeterminada.
  • RETENTION_PERIOD : para una repetición de la copia de seguridad weekly , configúrelo en un valor de hasta 14 semanas ( 14w ).
  • DAY : El día de la semana para realizar la copia de seguridad. Establezca uno de los siguientes:
    • 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

Listar programas de respaldo

Para enumerar todos los programas de respaldo para una base de datos, use el comando gcloud alpha firestore backups schedules list . Este comando devuelve información sobre todas las programaciones de copias de seguridad.

gcloud alpha firestore backups schedules list \
--database='DATABASE_ID'

Reemplace DATABASE_ID con el ID de la base de datos. Utilice (default) para la base de datos predeterminada.

Describir el cronograma de respaldo

Para recuperar información sobre una programación de respaldo, usa el comando gcloud alpha firestore backups schedules describe :

gcloud alpha firestore backups schedules describe \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID

Reemplace lo siguiente:

  • DATABASE_ID : El ID de la base de datos de la que se va a realizar la copia de seguridad. Establezca en (default) para la base de datos predeterminada.
  • BACKUP_SCHEDULE_ID : el ID de una programación de copia de seguridad. Puede ver el ID de cada programa de respaldo cuando enumera todos los programas de respaldo .

Actualizar un programa de respaldo

Para actualizar el período de retención de una programación de respaldo, usa el comando gcloud alpha firestore backups schedules update :

gcloud alpha firestore backups schedules update \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
--retention=RETENTION_PERIOD

Reemplace lo siguiente:

  • DATABASE_ID : El ID de la base de datos de la que se va a realizar la copia de seguridad. Establezca en (default) para la base de datos predeterminada.
  • BACKUP_SCHEDULE_ID : el ID de una programación de copia de seguridad. Puede ver el ID de cada programa de respaldo cuando enumera todos los programas de respaldo .
  • RETENTION_PERIOD : si establece una periodicidad daily de la copia de seguridad, configúrelo en un valor de hasta 7 días ( 7d ). Si establece una periodicidad de copia de seguridad weekly , configúrelo en un valor de hasta 14 semanas ( 14w ).

Eliminar una programación de respaldo

Para eliminar una programación de respaldo, usa el comando gcloud alpha firestore backups schedules delete :

gcloud alpha firestore backups schedules delete \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID

Reemplace lo siguiente:

  • DATABASE_ID : El ID de la base de datos de la que se va a realizar la copia de seguridad. Establezca en (default) para la base de datos predeterminada.
  • BACKUP_SCHEDULE_ID : el ID de una programación de copia de seguridad. Puede ver el ID de cada programa de respaldo cuando enumera todos los programas de respaldo .

Tenga en cuenta que eliminar una programación de copias de seguridad no eliminará las copias de seguridad ya creadas según esta programación. Puede esperar a que caduquen después de su período de retención o eliminar manualmente una copia de seguridad; consulte eliminar copia de seguridad .

Administrar copias de seguridad

Listar copias de seguridad

Para enumerar las copias de seguridad disponibles, usa el comando gcloud alpha firestore backups list :

gcloud alpha firestore backups list \
--format="table(name, database, state)"

El --format="table(name, database, state)" formatea la salida en un formato más legible.

Para enumerar solo las copias de seguridad de una ubicación específica, use el indicador --location :

gcloud alpha firestore backups list \
--location=LOCATION \
--format="table(name, database, state)"

Reemplace LOCATION con el nombre de una ubicación de Cloud Firestore.

Describir una copia de seguridad

Para ver detalles sobre una copia de seguridad, usa el comando gcloud alpha firestore backups describe :

gcloud alpha firestore backups describe \
--location=LOCATION \
--backup=BACKUP_ID

Eliminar copia de seguridad

Para eliminar una copia de seguridad, usa el comando gcloud alpha firestore backups delete :

gcloud alpha firestore backups delete \
--location=LOCATION \
--backup=BACKUP_ID

Restaurar datos desde una copia de seguridad de la base de datos

Una operación de restauración escribe los datos de una copia de seguridad en una nueva base de datos de Cloud Firestore. Para comenzar una operación de restauración, usa el comando 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 : el ID de tu proyecto.
  • LOCATION : La ubicación de la copia de seguridad de la base de datos y la ubicación de la nueva base de datos creada para los datos restaurados.
  • BACKUP_ID : El ID de una copia de seguridad. Puede ver el ID de cada copia de seguridad cuando enumera todas las copias de seguridad .
  • DATABASE_ID : ID de base de datos para la nueva base de datos. No puede utilizar una ID de base de datos que ya esté en uso.

El resultado incluirá metadata , name y componentes 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 de la restauración hasta el momento, y un operationState que especifica el estado general de la restauración.

Para recuperar esta información nuevamente, usa gcloud firestore operations list :

gcloud firestore operations list --database=DATABASE_ID

o, usando el campo name del resultado descrito anteriormente, con gcloud firestore operations describe :

gcloud firestore operations describe OPERATION_NAME