Faça uma cópia de segurança e restaure dados

Esta página descreve como usar a funcionalidade de cópias de segurança agendadas do modo Datastore. Use cópias de segurança para proteger os seus dados contra a danificação de dados ao nível da aplicação ou a eliminação acidental de dados.

As cópias de segurança permitem-lhe configurar agendamentos de cópias de segurança para fazer cópias de segurança diárias ou semanais da base de dados especificada. Em seguida, pode usar estas cópias de segurança para restaurar dados numa nova base de dados.

Acerca das cópias de segurança

Uma cópia de segurança é uma cópia consistente da base de dados num determinado momento. A cópia de segurança contém todos os dados e configurações de índice nesse momento. Uma cópia de segurança não contém políticas de tempo de vida da base de dados. Uma cópia de segurança reside na mesma localização que a base de dados de origem.

As cópias de segurança têm um período de retenção configurável e são armazenadas até o período de retenção expirar ou até eliminar a cópia de segurança. A eliminação da base de dados de origem não elimina automaticamente as cópias de segurança relacionadas.

O Firestore armazena metadados relacionados com cópias de segurança e agendamentos de cópias de segurança relacionados com uma base de dados. O Firestore retém estes metadados até que todas as cópias de segurança da base de dados expirem ou sejam eliminadas.

A criação ou a retenção de cópias de segurança não afeta o desempenho das leituras nem das escritas na sua base de dados em direto.

Custos

Quando usa cópias de segurança, são-lhe cobrados os seguintes itens:

  • A quantidade de armazenamento usado por cada cópia de segurança.
  • Para uma operação de restauro, a cobrança é feita com base no tamanho da cópia de segurança.

Para mais detalhes e tarifas exatas, consulte a página Preços.

Antes de começar

Certifique-se de que a faturação está ativada para o seu Google Cloud projeto. Saiba como verificar se a faturação está ativada num projeto.

Funções necessárias

Para receber as autorizações de que precisa para gerir cópias de segurança e agendamentos de cópias de segurança, peça ao seu administrador que lhe conceda um ou mais dos seguintes papéis de gestão de identidades e acessos:

  • roles/datastore.owner: acesso total à base de dados do Firestore
  • roles/datastore.backupsAdmin: acesso de leitura e escrita a cópias de segurança
  • roles/datastore.backupsViewer: acesso de leitura às cópias de segurança
  • roles/datastore.backupSchedulesAdmin: acesso de leitura e escrita a agendamentos de cópias de segurança
  • roles/datastore.backupSchedulesViewer: acesso de leitura aos agendamentos de cópias de segurança
  • roles/datastore.restoreAdmin: autorizações para iniciar operações de restauro

Crie e faça a gestão de agendamentos de cópias de segurança

Os exemplos abaixo demonstram como configurar uma programação de cópias de segurança. Para cada base de dados, pode configurar até um agendamento de cópia de segurança diário e até um agendamento de cópia de segurança semanal. Não pode configurar vários agendamentos de cópias de segurança semanais para diferentes dias da semana.

Não pode configurar a hora exata do dia da cópia de segurança. As cópias de segurança são feitas a horas diferentes todos os dias. Para programações de cópias de segurança semanais, pode configurar o dia da semana em que é feita uma cópia de segurança.

Crie um horário de cópia de segurança

Use uma das seguintes ferramentas para criar um horário de cópia de segurança.

Crie um horário de cópia de segurança diário

Google Cloud consola
  1. Na Google Cloud consola, aceda à página Bases de dados.

    Aceda a Bases de dados

  2. Na lista de bases de dados, encontre a linha da base de dados. Na coluna Cópias de segurança agendadas, clique em Ver cópias de segurança ou Editar definições, consoante exista ou não um agendamento de cópia de segurança.
  3. Clique em Editar para editar as definições de recuperação de desastres.
  4. Selecione a caixa de verificação Diariamente, defina o período de retenção e, de seguida, clique em Guardar.
gcloud
Para criar um horário de cópia de segurança para uma base de dados, use o comando gcloud firestore backups schedules create. Para criar um horário de cópia de segurança diário, defina a flag --recurrence como daily:
gcloud firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=daily \
--retention=RETENTION_PERIOD

Substitua o seguinte:

  • DATABASE_ID: o ID da base de dados para fazer uma cópia de segurança. Definido como '(default)' para a base de dados predefinida.
  • RETENTION_PERIOD: defina este valor até 14 semanas (14w).
Terraform
Para criar uma programação de cópias de segurança diárias, crie um recurso google_firestore_backup_schedule.
resource "google_firestore_backup_schedule" "daily-backup" {
  project  = PROJECT_ID
  database = DATABASE_ID

  retention = RETENTION_PERIOD_SECONDS

  daily_recurrence {}
}

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto.
  • DATABASE_ID: o ID da base de dados para fazer uma cópia de segurança. Definido como '(default)' para a base de dados predefinida.
  • Também pode usar uma referência de recurso para um recurso do Terraform do tipo google_firestore_database.
  • RETENTION_PERIOD_SECONDS: defina isto para um valor em segundos, seguido de "s". O valor máximo é de 8467200s (14 semanas).

Crie um horário de cópias de segurança semanal

Google Cloud consola
  1. Na Google Cloud consola, aceda à página Bases de dados.

    Aceda a Bases de dados

  2. Na lista de bases de dados, encontre a linha da base de dados. Na coluna Cópias de segurança agendadas, clique em Ver cópias de segurança ou Editar definições, consoante exista ou não um agendamento de cópia de segurança.
  3. Clique em Editar para editar as definições de recuperação de desastres.
  4. Selecione a caixa de verificação Semanal, selecione um dia de cópia de segurança, defina o período de retenção e, de seguida, clique em Guardar.
gcloud
Para criar um horário de cópia de segurança semanal, defina a flag --recurrence como weekly:
gcloud firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=weekly \
--retention=RETENTION_PERIOD \
--day-of-week=DAY
Substitua o seguinte:
  • DATABASE_ID: o ID da base de dados para fazer uma cópia de segurança. Definido como '(default)' para a base de dados predefinida.
  • RETENTION_PERIOD: defina este valor até 14 semanas (14w).
  • DAY: o dia da semana em que deve ser feita a cópia de segurança. Defina uma das seguintes opções:
    • 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
Terraform
Para criar um horário de cópia de segurança semanal, crie um 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
  }
}

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto.
  • DATABASE_ID: o ID da base de dados para fazer uma cópia de segurança. Definido como '(default)' para a base de dados predefinida.
  • Também pode usar uma referência de recurso para um recurso do Terraform do tipo google_firestore_database.
  • RETENTION_PERIOD_SECONDS: defina isto para um valor em segundos, seguido de "s". O valor máximo é de 8467200s (14 semanas).
  • DAY: o dia da semana em que deve ser feita a cópia de segurança. Defina uma das seguintes opções:
    • SUNDAY para domingo
    • MONDAY para segunda-feira
    • TUESDAY para terça-feira
    • WEDNESDAY para quarta-feira
    • THURSDAY para quinta-feira
    • FRIDAY para sexta-feira
    • SATURDAY para sábado

Indique horários de cópias de segurança

Para apresentar uma lista de todos os agendamentos de cópias de segurança de uma base de dados, use um dos seguintes métodos:

Google Cloud consola
  1. Na Google Cloud consola, aceda à página Bases de dados.

    Aceda a Bases de dados

  2. Na lista de bases de dados, encontre a linha da base de dados. Na coluna Cópias de segurança agendadas, clique em Ver cópias de segurança ou Editar definições, consoante exista ou não um agendamento de cópia de segurança.
  3. É aberta a página Recuperação após desastre. Esta página descreve os agendamentos de cópias de segurança e apresenta uma lista das cópias de segurança disponíveis.
gcloud
Use o comando gcloud firestore backups schedules list.
gcloud firestore backups schedules list \
--database='DATABASE_ID'
Substitua DATABASE_ID pelo ID da base de dados. Use '(default)' para a base de dados predefinida.

Descreva a agenda de cópias de segurança

Para obter informações sobre um horário de cópia de segurança, use um dos seguintes métodos:

Google Cloud consola
  1. Na Google Cloud consola, aceda à página Bases de dados.

    Aceda a Bases de dados

  2. Na lista de bases de dados, encontre a linha da base de dados. Na coluna Cópias de segurança agendadas, clique em Ver cópias de segurança ou Editar definições, consoante exista ou não um agendamento de cópia de segurança.
  3. É aberta a página Recuperação após desastre. Esta página descreve os agendamentos de cópias de segurança e apresenta uma lista das cópias de segurança disponíveis.
gcloud
Use o comando gcloud firestore backups schedules describe:
gcloud firestore backups schedules describe \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
Substitua o seguinte:
  • DATABASE_ID: o ID da base de dados para fazer uma cópia de segurança. Definido como '(default)' para a base de dados predefinida.
  • BACKUP_SCHEDULE_ID: o ID de uma programação de cópias de segurança. Pode ver o ID de cada programação de cópias de segurança quando lista todas as programações de cópias de segurança.

Atualize uma programação de cópias de segurança

Para atualizar o período de retenção de uma programação de cópia de segurança, use um dos seguintes métodos:

Google Cloud consola
  1. Na Google Cloud consola, aceda à página Bases de dados.

    Aceda a Bases de dados

  2. Na lista de bases de dados, encontre a linha da base de dados. Na coluna Cópias de segurança agendadas, clique em Ver cópias de segurança ou Editar definições.
  3. Clique em Editar para editar as definições de recuperação de desastres.
  4. Edite as definições de agendamento da cópia de segurança e, de seguida, clique em Guardar.
gcloud
Use o comando gcloud firestore backups schedules update:
gcloud firestore backups schedules update \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID \
--retention=RETENTION_PERIOD
Substitua o seguinte:
  • DATABASE_ID: o ID da base de dados para fazer uma cópia de segurança. Definido como '(default)' para a base de dados predefinida.
  • BACKUP_SCHEDULE_ID: o ID de uma programação de cópias de segurança. Pode ver o ID de cada programação de cópias de segurança quando lista todas as programações de cópias de segurança.
  • RETENTION_PERIOD: defina este valor até 14 semanas (14w).

Pode atualizar o período de retenção de um agendamento de cópias de segurança, mas não pode atualizar a respetiva recorrência. Se precisar de uma programação de cópias de segurança com uma recorrência diferente, elimine a programação de cópias de segurança antiga, se já não for necessária, e crie uma nova programação de cópias de segurança com a recorrência pretendida.

Elimine um agendamento de cópia de segurança

Para eliminar um agendamento de cópia de segurança, use um dos seguintes métodos:

Google Cloud consola
  1. Na Google Cloud consola, aceda à página Bases de dados.

    Aceda a Bases de dados

  2. Na lista de bases de dados, encontre a linha da base de dados. Na coluna Cópias de segurança agendadas, clique em Ver cópias de segurança ou Editar definições, consoante exista ou não um agendamento de cópia de segurança.
  3. Clique em Editar para editar as definições de recuperação de desastres.
  4. Edite as definições de agendamento da cópia de segurança e, de seguida, clique em Guardar.
gcloud
Use o comando gcloud firestore backups schedules delete:
gcloud firestore backups schedules delete \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
Substitua o seguinte:
  • DATABASE_ID: o ID da base de dados para fazer uma cópia de segurança. Definido como '(default)' para a base de dados predefinida.
  • BACKUP_SCHEDULE_ID: o ID de uma programação de cópias de segurança. Pode ver o ID de cada programação de cópias de segurança quando lista todas as programações de cópias de segurança.

Tenha em atenção que a eliminação de uma programação de cópias de segurança não elimina as cópias de segurança já criadas por esta programação. Pode aguardar que expirem após o período de retenção ou, para eliminar manualmente uma cópia de segurança, consulte eliminar cópia de segurança.

Faça a gestão das cópias de segurança

Liste as cópias de segurança

Para ver uma lista das cópias de segurança disponíveis, use um dos seguintes métodos:

Google Cloud consola
  1. Na Google Cloud consola, aceda à página Bases de dados.

    Aceda a Bases de dados

  2. Na lista de bases de dados, encontre a linha da base de dados. Na coluna Cópias de segurança agendadas, clique em Ver cópias de segurança ou Editar definições, consoante exista ou não um agendamento de cópia de segurança.
  3. Clique em Editar para editar as definições de recuperação de desastres.
  4. Edite as definições de agendamento da cópia de segurança e, de seguida, clique em Guardar.
gcloud
Use o comando gcloud firestore backups list:
gcloud firestore backups list \
--format="table(name, database, state)"
A flag --format="table(name, database, state)" formata a saída num formato mais legível. Para listar apenas as cópias de segurança de uma localização específica, use a flag --location:
gcloud firestore backups list \
--location=LOCATION \
--format="table(name, database, state)"
Substitua LOCATION pelo nome de uma localização do modo Datastore.

Descreva uma cópia de segurança

Para ver detalhes sobre uma cópia de segurança, use um dos seguintes métodos:

Google Cloud consola
  1. Na Google Cloud consola, aceda à página Bases de dados.

    Aceda a Bases de dados

  2. Na lista de bases de dados, encontre a linha da base de dados. Na coluna Cópias de segurança agendadas, clique em Ver cópias de segurança ou Editar definições, consoante exista ou não um agendamento de cópia de segurança.
  3. É aberta a página Recuperação após desastre. Esta página descreve os agendamentos de cópias de segurança e apresenta uma lista das cópias de segurança disponíveis.
gcloud
Use o comando gcloud firestore backups describe:
gcloud firestore backups describe \
--location=LOCATION \
--backup=BACKUP_ID
Substitua o seguinte:

Eliminar cópia de segurança

Para eliminar uma cópia de segurança, use um dos seguintes métodos.

Google Cloud consola
  1. Na Google Cloud consola, aceda à página Bases de dados.

    Aceda a Bases de dados

  2. Na lista de bases de dados, encontre a linha da base de dados. Na coluna Cópias de segurança agendadas, clique em Ver cópias de segurança ou Editar definições, consoante exista ou não um agendamento de cópia de segurança. É aberta a página Recuperação após desastre. Esta página descreve os agendamentos de cópias de segurança e apresenta uma lista das cópias de segurança disponíveis.
  3. Na tabela Cópias de segurança, localize a linha de uma cópia de segurança e, na coluna Ações, clique em Ver mais(). Clique em Eliminar.
  4. Confirme a ação através do campo de texto e clique em Eliminar.
gcloud
Use o comando gcloud firestore backups delete:
gcloud firestore backups delete \
--location=LOCATION \
--backup=BACKUP_ID
Substitua o seguinte:

Restaure dados a partir de uma cópia de segurança da base de dados

Uma operação de restauro escreve os dados de uma cópia de segurança numa nova base de dados do modo Datastore.

Para iniciar uma operação de restauro, use um dos seguintes métodos:

Google Cloud consola
  1. Na Google Cloud consola, aceda à página Bases de dados.

    Aceda a Bases de dados

  2. Na lista de bases de dados, encontre a linha da base de dados. Na coluna Cópias de segurança agendadas, clique em Ver cópias de segurança ou Editar definições, consoante exista ou não um agendamento de cópia de segurança. É aberta a página Recuperação após desastre. Esta página descreve os agendamentos de cópias de segurança e apresenta uma lista das cópias de segurança disponíveis.
  3. Na tabela Cópias de segurança, encontre a linha de uma cópia de segurança e, na coluna Ações, clique em Ver mais(). Clique em Restaurar com o Cloud Shell.
  4. O painel do Cloud Shell é aberto com um comando da CLI gcloud para restaurar a partir da cópia de segurança selecionada. Substitua ID_OF_NEW_DATABASE por um ID para a base de dados e execute o comando.

    A execução do comando devolve uma resposta com mais informações sobre a operação. A base de dados é apresentada em breve na sua lista de bases de dados. A operação de restauro demora algum tempo e tem de ser concluída antes de a base de dados ficar acessível.

gcloud
Use o comando gcloud firestore databases restore:
gcloud firestore databases restore \
--source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \
--destination-database='DATABASE_ID \
--tags=[KEY=VALUE]'
Substitua o seguinte:
  • PROJECT_ID: o ID do seu projeto.
  • LOCATION: a localização da cópia de segurança da base de dados e a localização da nova base de dados criada para os dados restaurados.
  • BACKUP_ID: o ID de uma cópia de segurança. Pode ver o ID de cada cópia de segurança quando lista todas as cópias de segurança.
  • DATABASE_ID: um ID da base de dados para a nova base de dados. Não pode usar um ID da base de dados que já esteja em uso.
  • [KEY=VALUE]: uma lista opcional de pares de chave=valor de etiquetas a associar. Por exemplo:
    • --tags=123/environment=production,123/costCenter=marketing
    • --tags=tagKeys/333=tagValues/444
O modo da base de dados vai corresponder ao da cópia de segurança. A saída inclui os 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, que detalha o progresso estimado do restauro até ao momento, e um operationState que especifica o estado geral do restauro. Para aceder novamente a estas informações, use o gcloud firestore operations list:
gcloud firestore operations list --database=DATABASE_ID
ou, usando o campo name do resultado descrito acima, com gcloud firestore operations describe:
gcloud firestore operations describe OPERATION_NAME