Fazer backup e restaurar dados
Nesta página, descrevemos como usar os backups programados do Firestore . Use backups para proteger seus dados contra corrupção de dados no nível do aplicativo ou contra exclusão acidental.
Com os backups, você pode configurar programações de backup para fazer backups diários ou semanais do banco de dados especificado. É possível 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 armazenamento expire ou até que você exclua o backup. A exclusão do banco de dados de origem não exclui automaticamente os backups relacionados.
O Firestore armazena metadados relacionados a backups programações relacionadas a um banco de dados. O Firestore retém esses metadados até que todos os backups do banco de dados expirem ou sejam excluídos.
Criar ou manter backups não afeta o desempenho das leituras ou gravações no banco de dados ativo.
Custos
Quando você usa backups, os seguintes itens são cobrados:
- A quantidade de armazenamento usada por cada backup.
- Para uma operação de restauração, a cobrança é feita com base no tamanho do backup.
Para mais detalhes e tarifas exatas, consulte a página de preços.
Antes de começar
Verifique se a cobrança está ativada para o seu projeto do Google Cloud. Saiba como verificar se o faturamento está ativado em um projeto.Funções exigidas
Para receber as permissões necessárias para gerenciar backups e programações de backup, peça ao administrador para conceder a você um ou mais dos seguintes papéis do Identity and Access Management:
roles/datastore.owner
: acesso total ao banco de dados do FirestoreOs papéis a seguir também estão disponíveis, mas não são visíveis no console do Google Cloud. Use a Google Cloud CLI para atribuir esses papéis:
roles/datastore.backupsAdmin
: acesso de leitura e gravação aos backupsroles/datastore.backupsViewer
: acesso de leitura aos backupsroles/datastore.backupSchedulesAdmin
: acesso de leitura e gravação às programações de backuproles/datastore.backupSchedulesViewer
: acesso de leitura a programações de backuproles/datastore.restoreAdmin
: permissões para iniciar operações de restauração.
Criar e gerenciar programações de backup
Os exemplos abaixo demonstram como configurar uma programação de backup. Para cada banco de dados, é possível configurar até uma programação de backup diária e uma semanal. Não é possível configurar várias programações de backups semanais para diferentes dias da semana.
Não é possível configurar a hora exata do backup. Os backups são feitos em horários diferentes todos os dias. Para programações de backup semanais, configure o dia da semana para fazer um backup.
Criar uma programação de backup
Para criar uma programação de backup para um banco de dados, use o
comando gcloud firestore backups schedules create
ou firebase firestore:databases:backups:schedules
.
Criar uma programação de backup diária
gcloud
Para criar uma programação de backup diária, defina a flag--recurrence
como daily
:
gcloud firestore backups schedules create \ --database='DATABASE_ID' \ --recurrence=daily \ --retention=RETENTION_PERIOD
Substitua:
- DATABASE_ID: o ID do banco de dados para fazer backup. Defina como
'(default)'
para o banco de dados padrão. - RETENTION_PERIOD: defina um valor de até 14 semanas (
14w
).
CLI do Firebase
Para criar uma programação de backup diária, defina a flag--recurrence
como DAILY
:
firebase firestore:backups:schedules:create \ --database 'DATABASE_ID' \ --recurrence 'DAILY' \ --retention RETENTION_PERIOD
Substitua:
- DATABASE_ID: o ID do banco de dados para fazer backup. Defina como
'(default)'
para o banco de dados padrão. - RETENTION_PERIOD: defina um valor de até 14 semanas (
14w
).
Terraform
Para criar uma programação de backup diário, crie um recursogoogle_firestore_backup_schedule
.
resource "google_firestore_backup_schedule" "daily-backup" { project = PROJECT_ID database = DATABASE_ID retention = RETENTION_PERIOD_SECONDS daily_recurrence {} }
Substitua:
- PROJECT_ID: o ID do projeto
- DATABASE_ID: o ID do banco de dados para fazer backup. Defina como
'(default)'
para o banco de dados padrão.
Você também pode usar uma referência de recursos para um
Recurso do Terraform do tipo - RETENTION_PERIOD_SECONDS: defina como um valor em segundos, seguido de "s". O valor máximo é
8467200s
(14 semanas).
google_firestore_database
.
Criar uma programação de backup semanal
gcloud
Para criar uma programação de backup semanal, defina a flag--recurrence
como weekly
:
gcloud firestore backups schedules create \ --database='DATABASE_ID' \ --recurrence=weekly \ --retention=RETENTION_PERIOD \ --day-of-week=DAY
- DATABASE_ID: o ID do banco de dados para fazer backup. Defina como
'(default)'
para o banco de dados padrão. - RETENTION_PERIOD: defina um valor de até 14 semanas (
14w
). - DAY: o dia da semana em que o backup será feito. Defina como
um dos seguintes:
SUN
para domingoMON
para segunda-feiraTUE
para terça-feiraWED
para quarta-feiraTHU
para quinta-feiraFRI
para sexta-feiraSAT
para sábado
CLI do Firebase
Para criar uma programação de backup semanal, defina a flag--recurrence
como WEEKLY
:
firebase firestore:backups:schedules:create \ --database 'DATABASE_ID' \ --recurrence 'WEEKLY' \ --retention RETENTION_PERIOD --day-of-week DAY
- DATABASE_ID: o ID do banco de dados para fazer backup. Defina como
'(default)'
para o banco de dados padrão. - RETENTION_PERIOD: defina um valor de até 14 semanas (
14w
). - DAY: o dia da semana em que o backup será feito. Defina como
um dos seguintes:
SUNDAY
para domingoMONDAY
para segunda-feiraTUESDAY
para terça-feiraWEDNESDAY
para quarta-feiraTHURSDAY
para quinta-feiraFRIDAY
para sexta-feiraSATURDAY
para sábado
Terraform
Para criar uma programação de backup semanal, crie um 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 } }
Substitua:
- PROJECT_ID: o ID do projeto
- DATABASE_ID: o ID do banco de dados para fazer backup. Defina como
'(default)'
para o banco de dados padrão.
Você também pode usar uma referência de recursos para um
Recurso do Terraform do tipo - RETENTION_PERIOD_SECONDS: defina como um valor em segundos, seguido de "s". O valor máximo é
8467200s
(14 semanas). - DAY: o dia da semana em que o backup será feito. Defina como
um dos seguintes:
SUNDAY
para domingoMONDAY
para segunda-feiraTUESDAY
para terça-feiraWEDNESDAY
para quarta-feiraTHURSDAY
para quinta-feiraFRIDAY
para sexta-feiraSATURDAY
para sábado
google_firestore_database
.
Listar programações de backup
Para listar todas as programações de backup de um banco de dados, use um dos seguintes métodos:
gcloud
Use o comandogcloud firestore backups schedules list
.
gcloud firestore backups schedules list \ --database='DATABASE_ID'
'(default)'
para o banco de dados padrão.
CLI do Firebase
Use o comandofirebase firestore:backups:schedules:list
.
firebase firestore:backups:schedules:list \ --database 'DATABASE_ID'
'(default)'
para o banco de dados padrão.
Descrever a programação de backup
Para recuperar informações sobre uma programação de backup, use um dos seguintes métodos:
gcloud
Use o Comandogcloud firestore backups schedules describe
:
gcloud firestore backups schedules describe \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID
- DATABASE_ID: o ID do banco de dados para fazer backup. Defina como
'(default)'
para o banco de dados padrão. - BACKUP_SCHEDULE_ID: o ID de uma programação de backup. É possível conferir o ID de cada programação de backup ao listar todas as programações de backup.
Atualizar uma programação de backup
Para atualizar o período de armazenamento de uma programação de backup, use um dos seguintes métodos:
gcloud
Use o comandogcloud firestore backups schedules update
:
gcloud firestore backups schedules update \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID \ --retention=RETENTION_PERIOD
- DATABASE_ID: o ID do banco de dados para fazer backup. Defina como
'(default)'
para o banco de dados padrão. - BACKUP_SCHEDULE_ID: o ID de uma programação de backup. É possível conferir o ID de cada programação de backup ao listar todas as programações de backup.
- RETENTION_PERIOD: defina um valor de até 14 semanas (
14w
).
CLI do Firebase
Use o comandofirebase firestore:backups:schedules:update
:
firebase firestore:backups:schedules:update \ BACKUP_SCHEDULE \ --retention RETENTION_PERIOD
- BACKUP_SCHEDULE: o nome completo do recurso de uma programação de backup. É possível conferir o ID de cada programação de backup ao listar todas as programações de backup.
- RETENTION_PERIOD: defina um valor de até 14 semanas (
14w
).
Você pode atualizar o período de armazenamento de uma programação de backup, mas não é possível atualizar a recorrência dela. Se você precisar de uma programação de backup com uma recorrência diferente, exclua a programação antiga se ela não for mais necessária e crie uma nova com a recorrência desejada.
Excluir uma programação de backup
Para excluir uma programação de backup, use um dos seguintes métodos:
gcloud
Use o comandogcloud firestore backups schedules delete
:
gcloud firestore backups schedules delete \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID
- DATABASE_ID: o ID do banco de dados para fazer backup. Defina como
'(default)'
para o banco de dados padrão. - BACKUP_SCHEDULE_ID: o ID de uma programação de backup. É possível conferir o ID de cada programação de backup ao listar todas as programações de backup.
CLI do Firebase
Use o comandofirebase firestore:backups:schedules:delete
:
firebase firestore:backups:schedules:delete \ BACKUP_SCHEDULE
- BACKUP_SCHEDULE: o nome completo do recurso de uma programação de backup. É possível conferir o ID de cada programação de backup ao listar todas as programações de backup.
A exclusão de uma programação de backup não remove os já criados por ela. É possível aguardar até que eles expirem após o período de armazenamento ou excluir um backup manualmente. Consulte Excluir backup.
Gerenciar backups
Listar backups
Para listar os backups disponíveis, use um dos seguintes métodos:
gcloud
Use o comandogcloud firestore backups list
:
gcloud firestore backups list \ --format="table(name, database, state)"
--format="table(name, database, state)"
formata a saída em um
em um formato mais legível.
Para listar apenas os backups de um local específico, use a sinalização --location
:
gcloud firestore backups list \ --location=LOCATION \ --format="table(name, database, state)"
LOCATION
pelo nome de um local do
Firestore.
CLI do Firebase
Use o comandofirebase firestore:backups:list
:
firebase firestore:backups:list
--location
:
firebase firestore:backups:list \ --location=LOCATION
LOCATION
pelo nome de um Firestore.
o local.
Descrever um backup
Para visualizar detalhes sobre um backup, use um dos seguintes métodos:
gcloud
Use o comandogcloud firestore backups describe
:
gcloud firestore backups describe \ --location=LOCATION \ --backup=BACKUP_ID
- LOCATION: o local do banco de dados.
- BACKUP_ID: o ID de um backup. É possível conferir o ID de cada backup ao listar todos os backups.
CLI do Firebase
Use o comandofirebase firestore:backups:get
:
firebase firestore:backups:get BACKUP
- BACKUP: o nome completo do recurso de um backup. É possível conferir o nome de cada backup ao listar todos os backups.
Excluir backup
gcloud
Use o comandogcloud firestore backups delete
:
gcloud firestore backups delete \ --location=LOCATION \ --backup=BACKUP_ID
- LOCATION: o local do banco de dados.
- BACKUP_ID: o ID de um backup. É possível conferir o ID de cada backup ao listar todos os backups.
CLI do Firebase
Use o comandofirebase firestore:backups:delete
:
firebase firestore:backups:delete \ BACKUP
- BACKUP: o nome completo do recurso de um backup. É possível conferir o nome 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 Firestore no seu banco de dados.
Para iniciar uma operação de restauração, use um dos seguintes métodos:
gcloud
Use o comandogcloud firestore databases restore
:
gcloud firestore databases restore \ --source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \ --destination-database='DATABASE_ID'
- PROJECT_ID: o ID do 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. É possível conferir o ID de cada backup ao listar todos os backups.
- DATABASE_ID: um ID do novo banco de dados. Não é possível usar um ID de banco de dados que já está em uso.
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 ...
metadata
inclui um componente progressPercentage
, detalhando o progresso estimado da restauração até o momento, e um operationState
que especifica o estado geral da restauração.
Para recuperar essas informações novamente, use gcloud firestore operations list
:
gcloud firestore operations list --database=DATABASE_ID
name
da saída descrita acima, com gcloud firestore operations describe
:
gcloud firestore operations describe OPERATION_NAME
CLI do Firebase
Use o comandofirebase firestore:databases:restore
:
firebase firestore:databases:restore \ --backup 'BACKUP' \ --database 'DATABASE_ID'
- BACKUP: o nome completo do recurso de um backup. É possível conferir o nome de cada backup ao listar todos os backups.
- DATABASE_ID: um ID do novo banco de dados. Não é possível usar um ID de banco de dados que já está em uso.