Visão geral dos backups

Este documento fornece uma visão geral dos backups e das programações de backup do Spanner.

Com o Spanner, é possível criar backups completos de bancos de dados sob demanda e backups completos ou incrementais usando uma programação de backup. Os backups completos armazenam todos os dados de um banco de dados, enquanto os incrementais contêm apenas os dados que foram alterados desde um backup anterior.

É possível restaurar os backups quando erros do operador ou do aplicativo causam corrupção lógica de dados.

Os backups são altamente disponíveis, criptografados e podem ser retidos por até um ano a partir do momento da criação. Quando você cria um backup, ele reside na mesma instância, região e projeto do banco de dados de origem. Se você precisar restaurar o backup em uma região ou projeto diferente por motivos de conformidade ou continuidade de negócios, copie o backup para uma instância em uma região ou projeto separado.

Cada backup tem um createTime e um versionTime associados. O createTime é o carimbo de data/hora em que o Spanner começa a criar o backup. O versionTime é o carimbo de data/hora em que o conteúdo do banco de dados é capturado no backup. O backup contém uma visualização consistente do banco de dados no versionTime.

Para backups sob demanda, createTime e versionTime são iguais por padrão. Se necessário, você pode especificar um versionTime mais antigo ao criar um backup sob demanda, desde que ele esteja dentro do período de retenção de versão do banco de dados.

Para backups programados, o versionTime é o horário escolhido ao criar a programação de backup. O Spanner começa a criar o backup em até quatro horas após o versionTime, então o createTime fica dentro dessa janela de quatro horas. Isso é diferente dos backups sob demanda, em que o Spanner começa a criar o backup quando recebe a solicitação.

Por exemplo, suponha que você crie uma programação de backup com uma frequência de 0 7 * * * UTC ou todos os dias às 7h UTC. Isso significa que, para cada backup, o versionTime é definido como 7h UTC e o createTime é um carimbo de data/hora dentro da janela de quatro horas entre 7h e 11h UTC.

Para mais informações sobre como usar createTime e versionTime com a API, consulte a Referência da API Backup.

Principais recursos

  • Consistência de dados: os backups de um banco de dados do Spanner são transacionais e externamente consistentes no versionTime do backup.

  • Replicação: os backups residem na mesma instância do banco de dados de origem e são replicados nos mesmos locais geográficos. Para instâncias regionais, o backup é armazenado em cada uma das três zonas de leitura e gravação. Para instâncias birregionais e multirregionais, o backup é armazenado em todas as zonas que contêm uma réplica de leitura/gravação ou somente leitura. Se você precisar armazenar o backup do banco de dados em uma região ou projeto diferente, copie o backup concluído da instância de origem para uma instância de destino localizada em uma região ou projeto diferente. Para mais informações, consulte copiar um backup.

  • Expiração automática: todos os backups têm uma data de validade especificada pelo usuário que determina quando ela será excluída automaticamente. O Spanner exclui backups expirados de maneira assíncrona. Portanto, pode haver um atraso entre o momento em que um backup expira e quando ele é realmente excluído.

Criação do backup

Quando você cria um backup, ele reside na mesma instância, região e projeto do banco de dados de origem.

Um backup contém as seguintes informações do banco de dados no versionTime do backup:

  • Um backup completo contém todos os dados. Um backup incremental contém apenas os dados que foram alterados desde um backup anterior.
  • Informações de esquema, incluindo nomes de tabelas, campos, tipos de dados, índices secundários, fluxo de alterações e as relações entre essas entidades.
  • Todas as opções de banco de dados definidas com o comando ALTER DATABASE SET OPTIONS.

Um backup do Spanner não inclui as seguintes informações:

  • Qualquer modificação nos dados ou no esquema após o versionTime.
  • Políticas de gerenciamento de identidade e acesso (IAM).
  • Registros de dados do fluxo de alterações. Embora o esquema de fluxo de alterações seja armazenado, os dados do fluxo são transmitidos e consumidos quase simultaneamente com as mudanças que descrevem.

Para ajudar a garantir a consistência externa do backup, o Spanner fixa o conteúdo do banco de dados em versionTime. Isso evita que o sistema de coleta de lixo remova os valores de dados relevantes durante a operação de backup. Em seguida, cada zona de leitura/gravação e somente leitura na instância começa a copiar os dados em paralelo. Se uma zona estiver temporariamente indisponível, o backup não será concluído até que a zona fique on-line novamente. Os backups são restauráveis assim que a operação é concluída. Para instâncias multirregionais, todas as zonas de leitura/gravação e somente leitura em todas as regiões precisam concluir as réplicas de backup antes que o backup seja marcado como restaurável.

Programações de backup

O Spanner permite programar backups completos ou incrementais para bancos de dados. Um backup incremental contém apenas os dados que foram alterados desde um backup anterior, enquanto os backups completos armazenam todo o conteúdo do banco de dados. É possível especificar o tipo de programação de backup (completo ou incremental) e a frequência para que o Spanner crie backups.

Uma programação de backup completo pode criar um backup a cada 12 horas ou mais. Uma programação de backup incremental pode criar um backup a cada 4 horas ou mais.

O Spanner oferece backups incrementais para seu banco de dados por uma programação de backup. Não é possível criar um backup incremental sob demanda.

A criação do backup começa em uma janela de quatro horas a partir do horário programado. É possível ter no máximo quatro programações de backup por banco de dados.

Backups incrementais

Os backups incrementais formam cadeias entre backups completos. O primeiro backup< criado por uma programação de backup incremental é um backup completo. Os backups consecutivos criados na cadeia são incrementais, cada um contendo apenas os dados que mudaram desde o backup anterior na cadeia.

O Spanner permite até 13 backups incrementais por cadeia, além do backup completo inicial. Uma cadeia é identificada pelo valor incrementalBackupChainId correspondente. Quando uma cadeia atinge o comprimento máximo, o Spanner cria uma nova cadeia, começando com o backup completo inicial.

Em alguns casos, o Spanner pode criar uma nova cadeia antes que o comprimento máximo seja atingido. Confira alguns exemplos:

  • O backup completo mais antigo foi feito há 28 dias ou mais.
  • O backup mais recente na cadeia é excluído.
  • A programação de backup incremental é modificada.

Confira alguns fatores que podem ajudar você a tomar uma decisão sobre o uso de backups incrementais:

  • Criptografia: os backups incrementais oferecem suporte à criptografia usando apenasGoogle-owned and Google-managed encryption keys , mesmo que o banco de dados seja criptografado por uma chave de criptografia gerenciada pelo cliente (CMEK).

  • Restauração: a restauração de um backup incremental pode levar mais tempo do que a de um backup completo que contém os mesmos dados.

  • Exclusão: se você excluir um backup em uma cadeia ou se ele expirar, o Spanner ainda poderá manter o backup para oferecer suporte a backups mais recentes na cadeia, se houver. O Spanner precisa de todos os backups mais antigos na cadeia para restaurar um backup incremental. Para excluir todos os dados em uma cadeia de backups, incluindo os backups expirados ou excluídos, exclua todos os backups na cadeia.

  • Retenção: cada programação de backup tem os seguintes termos que oferecem informações sobre ela:

    • creation_interval: representa a frequência de programação especificada para a programação de backup.
    • retention_duration: representa por quanto tempo os backups criados pela programação são retidos. Para uma determinada cadeia, o backup completo mais antigo é mantido após a data de validade original se for necessário para oferecer suporte a backups mais recentes na cadeia. A duração total da retenção do backup completo é, no máximo, o menor dos seguintes valores:
      • retention_duration + 28 dias
      • retention_duration + (creation_interval*14)
  • Cópia de backup: ao copiar um backup incremental, o Spanner também copia todos os backups mais antigos na cadeia necessários para restaurar o backup copiado. Se a instância de destino já tiver uma cadeia de backup que termina com um backup mais antigo copiado da mesma cadeia de origem, o Spanner vai evitar a criação de cópias redundantes de backups atuais. Em vez disso, o Spanner copia apenas o backup incremental e os backups mais antigos que não estão presentes na cadeia de destino, e anexa esses backups à cadeia atual. O Spanner cobra com base no armazenamento total usado.

    Por exemplo, se você configurar uma programação de backup incremental diário e copiar o backup mais recente todos os dias, a instância de destino vai manter uma cadeia de backup que espelha a cadeia de origem. O Spanner não duplica backups copiados anteriormente na cadeia durante operações de cópia subsequentes.

    Embora o Spanner evite cópias redundantes, em situações raras, ele pode precisar copiar todos os backups mais antigos da cadeia, mesmo que já existam backups copiados anteriormente na instância de destino.

Para mais informações sobre como criar backups incrementais, consulte Criar e gerenciar programações de backup.

Programações de backup padrão

Ao criar uma instância do Spanner, é possível especificar se você quer que o Spanner crie uma programação de backup padrão para cada novo banco de dados na instância. A programação de backup padrão cria um backup completo a cada 24 horas. Esses backups têm um período de armazenamento de 7 dias. É possível editar ou excluir a programação de backup padrão depois que ela for criada.

As programações de backup padrão são ativadas automaticamente para todas as novas instâncias. É possível ativar ou desativar as programações de backup padrão em uma instância ao criar a instância ou editando-a depois.

É possível ativar programações de backup padrão para instâncias atuais. No entanto, os programações de backup padrão não se aplicam aos bancos de dados atuais na instância. Os programações de backup padrão só se aplicam a novos bancos de dados na instância.

A programação de backup padrão leva 24 horas para ser ativada e começar a criar backups.

É necessário excluir todos os backups de uma instância antes de excluir a instância. Se você estiver criando e excluindo instâncias para fins de teste, poderá excluir a nova instância em até 24 horas para evitar a exclusão manual dos backups dela.

Para instruções sobre como ativar ou desativar as programações de backup padrão, consulte Editar o tipo de programação de backup padrão.

Custos de armazenamento para backups completos e incrementais

Cada backup do Spanner tem os seguintes campos que oferecem informações sobre o consumo de armazenamento:

  • exclusiveSizeBytes: mostra o número de bytes necessários para o backup. Esse tamanho representa o tamanho faturável do backup.
  • freeableSizeBytes: mostra o número de bytes que serão liberados se você excluir o backup.
  • oldestVersionTime: mostra o versionTime do backup completo mais antigo na cadeia, mesmo que ele tenha expirado. Use esse campo para entender quais dados estão sendo armazenados.

Os backups incrementais podem economizar custos de armazenamento. Um backup incremental pode ter um campo exclusiveSizeBytes significativamente menor do que um backup completo, já que ele só precisa armazenar as mudanças desde o backup anterior na cadeia. Adicionar esse valor de campo para cada backup na cadeia reflete o número total de bytes usados pelos backups na cadeia.

Um backup incremental depende de todos os backups mais antigos na mesma cadeia para restauração. Isso significa que, se houver um backup incremental mais recente, os dados de todos os backups mais antigos na cadeia não poderão ser excluídos do sistema, e o campo freeableSizeBytes para todos os backups mais antigos na mesma cadeia será zero.

Considere que você criou uma programação de backup completo e uma programação de backup incremental para um banco de dados de 100 GB que aumenta 10 GB por dia. A tabela a seguir mostra possíveis custos de armazenamento para esses horários de backup:

Dia Tamanho do backup completo programado Tamanho do backup incremental programado
1 100 GB 100 GB
2 110 GB 10 GB
3 120 GB 10 GB
4 130 GB 10 GB
5 140 GB 10 GB

Em cinco dias, o cronograma de backup completo usa 600 GB de armazenamento, enquanto o cronograma de backup incremental usa cerca de 140 GB. Para um cronograma de backup incremental, o tamanho do backup completo é a soma dos tamanhos de todos os backups na cadeia, até esse backup, e é refletido no campo sizeBytes.

Como funciona a cópia de backup

O Spanner permite copiar um backup do seu banco de dados do Spanner de uma instância para outra em uma região ou projeto diferente, para oferecer mais recursos de proteção e conformidade de dados.

Não é possível copiar um backup se a região de destino ou de origem Google Cloud estiver inativa. Para proteger seus dados em caso de interrupção em uma região, copie periodicamente os backups para um local fora da região afetada.

O backup copiado tem os mesmos recursos principais que o backup original. Além disso, é possível restaurar um backup copiado na mesma instância que o backup copiado para oferecer suporte a casos de uso de backup e restauração entre regiões e projetos.

Onde os backups do Spanner são armazenados

Os backups são recursos no Spanner. Cada recurso de backup é organizado na mesma instância do banco de dados de origem na hierarquia de recursos e tem um caminho de recurso que usa o seguinte formato:

projects/PROJECT_ID/instances/INSTANCE_ID/backups/BACKUP_NAME

Substitua:

  • PROJECT_ID: o ID do projeto;
  • INSTANCE_ID: o ID da instância
  • BACKUP_NAME: o nome do backup.

Um backup continua existindo mesmo depois que o banco de dados de origem é excluído, mas não pode durar mais que a instância pai. Para evitar a exclusão acidental de backups, não é possível excluir uma instância do Spanner se ela tiver backups. Se você quiser excluir a instância, recomendamos restaurar o backup e exportar o banco de dados restaurado antes de excluir o backup e a instância.

Criptografia

Os backups do Spanner, como os bancos de dados, são criptografados por Google-owned and Google-managed encryption keys ou por chaves de criptografia gerenciadas pelo cliente (CMEK). Por padrão, um backup usa a mesma configuração de criptografia do banco de dados, mas é possível substituir esse comportamento especificando uma configuração de criptografia diferente ao criar o backup. Se o backup estiver habilitado para CMEK, ele será criptografado usando a versão primária da chave KMS no momento da criação do backup. Depois que o backup é criado, a chave e a versão de chave não podem ser modificadas, mesmo que a chave KMS seja alternada. Para mais informações, consulte como criar um backup ativado para CMEK.

Um backup copiado usa a mesma configuração de criptografia, seja Google-owned and Google-managed encryption keys ou chaves de criptografia gerenciadas pelo cliente (CMEK), como a criptografia do backup de origem. É possível substituir esse comportamento especificando uma configuração de criptografia diferente ao copiar o backup. Se você quiser que o backup copiado seja criptografado com CMEK ao copiar entre regiões, especifique a chave do Cloud KMS correspondente à região de destino.

É possível especificar a configuração de criptografia ao criar ou modificar a programação de backup. Se você quiser que a programação de backup crie backups criptografados por chaves CMEK, especifique o caminho da chave.

Os backups incrementais oferecem suporte à criptografia usando apenas Google-owned and Google-managed encryption keys, mesmo que o banco de dados seja criptografado por uma chave CMEK.

Desempenho

Nesta seção, descrevemos o desempenho ideal de backup no Spanner.

Desempenho ao fazer backup

Ao executar um backup, o Spanner cria um job de backup para copiar dados diretamente do banco de dados para o armazenamento de backup e dimensiona esse job com base no tamanho do banco de dados. Esse job de backup não usa recursos da CPU alocados à instância do banco de dados. Portanto, ele não afeta o desempenho da instância. Além disso, a carga de computação na instância do banco de dados não afeta a velocidade da operação de backup. Para acompanhar o progresso e a conclusão de uma operação de backup, consulte Mostrar o progresso do backup.

Em geral, a maioria dos backups leva de 1 a 4 horas. Alguns backups podem levar mais tempo devido ao tamanho ou porque há filas internas para recursos. Se um backup estiver demorando mais do que o normal quando nenhum outro fator tiver mudado, talvez seja devido a um atraso na programação da tarefa de backup em uma zona. Isso pode levar até 30 minutos. Recomendamos que você não cancele e reinicie o backup, porque é provável que a nova operação tenha o mesmo atraso na programação.

Desempenho ao copiar um backup

O tempo necessário para copiar um backup depende de fatores como o tamanho do backup de origem e a região de destino escolhida para o backup copiado. Em geral, a maioria das cópias é concluída em uma a quatro horas. Algumas cópias podem levar mais tempo, dependendo do tamanho do backup e da região de destino. Copiar um backup não tem implicações de desempenho na instância ou no banco de dados de origem. É possível fazer várias cópias simultâneas do backup de origem para instâncias em regiões diferentes sem afetar a performance.

Ao copiar um backup incremental, o Spanner também copia todos os backups mais antigos na cadeia necessários para restaurar o backup copiado. Para melhorar o desempenho, o Spanner copia todos os backups simultaneamente em vez de sequencialmente. O Spanner também tenta evitar a cópia de backups mais antigos na mesma cadeia, quando possível. Para mais informações, consulte Backups incrementais.

Excluir um backup

Ao excluir um backup incremental, talvez não seja possível recuperar o armazenamento se houver backups incrementais mais recentes na mesma cadeia. Os backups incrementais mais recentes dependem dos dados presentes no backup incremental excluído e dos backups mais antigos na cadeia. O Spanner retém os dados e só libera o armazenamento quando todos os backups incrementais mais recentes expiram. O campo freeableSizeBytes mostra quanto espaço de armazenamento você pode recuperar se excluir o backup.

Preços

Você é cobrado com base na quantidade de armazenamento usada por seus backups por unidade de tempo. O faturamento começa quando a operação de backup é concluída e continua até que o backup seja excluído. Um backup concluído é cobrado por no mínimo 24 horas. Se você criar um backup e excluí-lo logo após a conclusão, ainda será cobrado por 24 horas.

Uma cópia de um backup está sujeita aos mesmos custos de armazenamento de um backup original. Se você criar uma cópia entre duas instâncias que ocupam regiões diferentes, os custos de transferência de dados de saída serão aplicados.

Por exemplo, se você copiar seu banco de dados da configuração de instância multirregional de origem nam7 para a configuração de instância multirregional de destino nam-eur-asia3, as seguintes cobranças serão aplicadas:

  • Sem cobrança pela região us-central1 sobreposta
  • Sem cobrança para a região de testemunha us-central2
  • A taxa de transferência de dados intercontinental é aplicada duas vezes: uma para cada novo continente (Europa e Ásia).
  • A cobrança de transferência de dados entre regiões no mesmo continente se aplica uma vez para us-east1
  • A cobrança de transferência de dados entre regiões no mesmo continente é aplicada uma vez na Europa

O Spanner otimiza o processo de cópia para minimizar o número de transferências entre regiões. Isso ajuda a minimizar os custos de transferência de dados e oferece uma experiência rápida de backup de cópia.

Os backups são armazenados e faturados separadamente. O armazenamento de backup não afeta o faturamento para armazenamento do banco de dados nem os limites de armazenamento do banco de dados. Para mais informações, consulte também Métricas de utilização do Storage.

Para informações mais completas sobre os custos de backup, consulte os preços do Spanner.

A seguir