Visão geral dos backups

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

O Spanner permite 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 de dados lógicos.

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 fica na mesma instância, região e projeto que o 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 uma versionTime mais antiga ao criar um backup sob demanda se ele estiver dentro do período de retenção da 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 desse período 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 o uso de 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 consistentes externamente 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 seu 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 fica 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 do esquema, incluindo nomes de tabelas, campos, tipos de dados, índices secundários, fluxos de mudanças 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 a versionTime.
  • Políticas de gerenciamento de identidade e acesso (IAM).
  • Alterar registros de dados do fluxo. Embora o esquema de fluxos de alterações seja armazenado, os dados do fluxo de alterações são transmitidos e consumidos quase simultaneamente às mudanças que descrevem.

Para 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 volte a ficar on-line. Os backups podem ser restaurados 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 recuperá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 completa 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 meio de uma programação de backup. Não é possível criar um backup incremental sob demanda.

A criação do backup começa em até 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 cenários:

  • 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 decidir se vai usar 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 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 a programação:

    • 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 é retido após a data de validade original se for necessário oferecer suporte a backups mais recentes na cadeia. A duração total de 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: quando você copia um backup incremental, o Spanner copia a cadeia de backups, começando pelo backup completo inicial e terminando com o backup incremental específico que você quer copiar. O Spanner cobra com base no armazenamento total usado.

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 nova 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 retenção de 7 dias. É possível editar ou excluir a programação de backup padrão depois que ela for criada.

Os horários de backup padrão são ativados 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 editá-la mais tarde.

É possível ativar programações de backup padrão para instâncias atuais. No entanto, as programações de backup padrão não se aplicam aos bancos de dados atuais na instância. Os planos de backup padrão se aplicam apenas aos 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 em 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.

Para instruções sobre como ativar ou desativar 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 liberados se você excluir o backup.
  • oldestVersionTime: mostra o versionTime do backup completo mais antigo da cadeia, mesmo que ele tenha expirado. Você pode usar 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 o incremental 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 um backup incremental mais recente existir, os dados de todos os backups mais antigos na cadeia não poderão ser excluídos do sistema, e o campo freeableSizeBytes de todos os backups mais antigos na mesma cadeia será zero.

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

Dia Tamanho do backup completo da programação Tamanho do backup da programação incremental
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, a programação de backup completa usa 600 GB de armazenamento, enquanto a programação de backup incremental usa cerca de 140 GB de armazenamento. Para uma programação 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 banco de dados do Spanner de uma instância para outra em uma região ou projeto diferente para oferecer mais recursos de compliance e proteção 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 de uma região, copie periodicamente seus 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 será 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, na sigla em inglês). 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 ativado para a 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 criar um backup ativado para CMEK.

Um backup copiado usa a mesma configuração de criptografia,Google-owned and Google-managed encryption keys ou chaves de criptografia gerenciadas pelo cliente (CMEK), como a criptografia de 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

Esta seção descreve a performance de backup ideal 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.

Geralmente, a maioria dos backups leva de uma a quatro horas. Alguns backups podem levar mais tempo devido ao tamanho ou porque há fila interna 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. Às vezes, isso pode levar até 30 minutos. Recomendamos que você não cancele e reinicie o backup, porque é provável que você encontre o mesmo atraso na programação com a nova operação de backup.

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. Geralmente, a maioria das cópias é concluída em uma a quatro horas. Algumas cópias podem demorar mais, 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 diferentes regiões sem problemas de implicações de desempenho.

Quando você copia um backup incremental, o Spanner também copia todos os backups mais antigos da cadeia. Em vez de copiar a cadeia de backups um por um, o Spanner copia todos os backups simultaneamente para melhorar o desempenho.

Excluir um backup

Ao excluir um backup incremental, talvez você não consiga 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 que 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 cobranças a seguir serão aplicadas:

  • Não há cobrança pela região us-central1 sobreposta
  • Não há cobrança para a região testemunha us-central2
  • A cobrança da 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 é aplicada 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 oferecer uma experiência de backup de cópia rápida.

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 Métricas de utilização do Storage.

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

A seguir