Faça backup e restaure dados

Esta página descreve como usar o recurso de backups agendados do Cloud Firestore. Use backups para proteger seus dados contra corrupção de dados no nível do aplicativo ou exclusão acidental de dados.

Os backups permitem configurar agendamentos de backup para fazer backups diários ou semanais do banco de dados especificado. Você pode então usar esses backups para restaurar dados em um novo banco de dados.

Sobre backups

Um backup é uma cópia consistente do banco de dados em um determinado momento. O backup contém todos os dados e configurações de índice naquele momento. Um backup não contém políticas de tempo de vida do banco de dados. Um backup reside no mesmo local que o banco de dados de origem.

Os backups têm um período de retenção configurável e são armazenados até que o período de retenção expire ou até você excluir o backup. A exclusão do banco de dados de origem não exclui automaticamente os backups relacionados.

O Cloud Firestore armazena metadados relacionados a backups e programações de backup relacionados a um banco de dados. O Cloud Firestore retém esses metadados até que todos os backups do banco de dados expirem ou sejam excluídos.

Criar ou reter backups não afeta o desempenho de leituras ou gravações em seu banco de dados ativo.

Custos

Ao usar backups, você será cobrado pelo seguinte:

  • A quantidade de armazenamento usada por cada backup.
  • Para uma operação de restauração, você será cobrado com base no tamanho do backup.

Para obter mais detalhes e taxas exatas, consulte a página de preços .

Antes de você começar

Este recurso requer o plano de preços Blaze .

Funções obrigatórias

Para obter as permissões necessárias para gerenciar backups e agendamentos de backup, peça ao administrador para conceder a você uma ou mais das seguintes funções de gerenciamento de identidade e acesso:

  • roles/datastore.owner : acesso total ao banco de dados Cloud Firestore
  • As funções a seguir também estão disponíveis, mas não são visíveis no Console do Google Cloud Platform. Use a CLI do Google Cloud para atribuir estes papéis:

    • roles/datastore.backupsAdmin : acesso de leitura e gravação aos backups
    • roles/datastore.backupsViewer : acesso de leitura aos backups
    • roles/datastore.backupSchedulesAdmin : acesso de leitura e gravação a programações de backup
    • roles/datastore.backupSchedulesViewer : acesso de leitura a programações de backup
    • roles/datastore.restoreAdmin : Permissões para iniciar operações de restauração

Crie e gerencie agendas de backup

Os exemplos abaixo demonstram como configurar um agendamento de backup. Para cada banco de dados, você pode configurar até um agendamento de backup diário e até um agendamento de backup semanal. Você não pode configurar vários agendamentos de backups semanais para dias diferentes da semana.

Você não pode configurar a hora exata do dia do backup. Os backups são feitos em horários diferentes todos os dias. Para programações de backup semanais, você pode configurar o dia da semana para fazer um backup.

Crie um agendamento de backup

Para criar uma programação de backup para um banco de dados, use o comando gcloud alpha firestore backups schedules create .

Crie uma programação de backup diária

Para criar um agendamento de backup diário, defina o sinalizador --recurrence como daily :

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

Substitua o seguinte:

  • DATABASE_ID : O ID do banco de dados para backup. Defina como (default) para o banco de dados padrão.
  • RETENTION_PERIOD : para uma recorrência daily de backup, defina um valor de até 7 dias ( 7d ). Se você definir uma recorrência de backup weekly , defina-a com um valor de até 14 semanas ( 14w ).

Crie uma programação de backup semanal

Para criar um agendamento de backup semanal, defina o sinalizador --recurrence como weekly :

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

Substitua o seguinte:

  • DATABASE_ID : O ID do banco de dados para backup. Defina como (default) para o banco de dados padrão.
  • RETENTION_PERIOD : para uma recorrência de backup weekly , defina um valor de até 14 semanas ( 14w ).
  • DAY : O dia da semana para fazer o backup. Defina como um dos seguintes:
    • SUN para domingo
    • MON para segunda-feira
    • TUE para terça-feira
    • WED para quarta-feira
    • THU para quinta-feira
    • FRI para sexta-feira
    • SAT para sábado

Listar agendamentos de backup

Para listar todos os agendamentos de backup de um banco de dados, use o comando gcloud alpha firestore backups schedules list . Este comando retorna informações sobre todos os agendamentos de backup.

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

Substitua DATABASE_ID pelo ID do banco de dados. Use (default) para o banco de dados padrão.

Descrever o agendamento de backup

Para recuperar informações sobre uma programação de backup, use o comando gcloud alpha firestore backups schedules describe :

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

Substitua o seguinte:

  • DATABASE_ID : O ID do banco de dados para backup. Defina como (default) para o banco de dados padrão.
  • BACKUP_SCHEDULE_ID : o ID de um agendamento de backup. Você pode visualizar o ID de cada agendamento de backup ao listar todos os agendamentos de backup .

Atualizar uma programação de backup

Para atualizar o período de retenção de uma programação de backup, use o comando gcloud alpha firestore backups schedules update :

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

Substitua o seguinte:

  • DATABASE_ID : O ID do banco de dados para backup. Defina como (default) para o banco de dados padrão.
  • BACKUP_SCHEDULE_ID : o ID de um agendamento de backup. Você pode visualizar o ID de cada agendamento de backup ao listar todos os agendamentos de backup .
  • RETENTION_PERIOD : se você definir uma recorrência de backup daily , defina-a com um valor de até 7 dias ( 7d ). Se você definir uma recorrência de backup weekly , defina-a com um valor de até 14 semanas ( 14w ).

Excluir uma programação de backup

Para excluir uma programação de backup, use o comando gcloud alpha firestore backups schedules delete :

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

Substitua o seguinte:

  • DATABASE_ID : O ID do banco de dados para backup. Defina como (default) para o banco de dados padrão.
  • BACKUP_SCHEDULE_ID : o ID de um agendamento de backup. Você pode visualizar o ID de cada agendamento de backup ao listar todos os agendamentos de backup .

Observe que a exclusão de um agendamento de backup não excluirá os backups já criados por esse agendamento. Você pode esperar que eles expirem após o período de retenção ou excluir manualmente um backup, consulte excluir backup .

Gerenciar backups

Listar backups

Para listar os backups disponíveis, use o comando gcloud alpha firestore backups list :

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

O --format="table(name, database, state)" formata a saída em um formato mais legível.

Para listar apenas os backups de um local específico, use o sinalizador --location :

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

Substitua LOCATION pelo nome de um local do Cloud Firestore.

Descreva um backup

Para visualizar detalhes sobre um backup, use o comando gcloud alpha firestore backups describe :

gcloud alpha firestore backups describe \
--location=LOCATION \
--backup=BACKUP_ID
  • LOCATION : A localização do banco de dados.
  • BACKUP_ID : o ID de um backup. Você pode visualizar o ID de cada backup ao listar todos os backups .

Excluir backup

Para excluir um backup, use o comando gcloud alpha firestore backups delete :

gcloud alpha firestore backups delete \
--location=LOCATION \
--backup=BACKUP_ID
  • LOCATION : A localização do banco de dados.
  • BACKUP_ID : o ID de um backup. Você pode visualizar o ID de cada backup ao listar todos os backups .

Restaurar dados de um backup de banco de dados

Uma operação de restauração grava os dados de um backup em um novo banco de dados do Cloud Firestore. Para iniciar uma operação de restauração, use o 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 : o ID do seu projeto.
  • LOCATION : O local do backup do banco de dados e o local do novo banco de dados criado para os dados restaurados.
  • BACKUP_ID : o ID de um backup. Você pode visualizar o ID de cada backup ao listar todos os backups .
  • DATABASE_ID : Um ID do banco de dados para o novo banco de dados. Você não pode usar um ID de banco de dados que já esteja em uso.

A saída incluirá componentes metadata , name e 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
  ...

O campo metadata inclui um componente progressPercentage , detalhando o progresso estimado da restauração até o momento, e um operationState especificando o estado geral da restauração.

Para recuperar essas informações novamente, use gcloud firestore operations list :

gcloud firestore operations list --database=DATABASE_ID

ou, usando o campo name da saída descrita acima, com gcloud firestore operations describe :

gcloud firestore operations describe OPERATION_NAME