Backups do Spanner Omni

O Spanner Omni permite criar backups completos de bancos de dados sob demanda ou usando uma programação de backup. Os backups armazenam todos os dados de um banco de dados. É possível restaurar os backups quando erros de operador ou aplicativo causam corrupção lógica de dados.

Visão geral do backup do Spanner Omni

Os backups são altamente disponíveis e podem ser mantidos por até um ano a partir da data de criação. Cada backup tem um createTime e um versionTime associados. O createTime é o carimbo de data/hora em que o Spanner Omni começa a criar o backup. O versionTime é o carimbo de data/hora em que o backup captura o conteúdo do banco de dados. O backup contém uma visualização consistente do banco de dados no versionTime.

Para backups sob demanda, o createTime e o versionTime são iguais por padrão. Se necessário, é possível especificar um versionTime mais antigo ao criar um backup sob demanda, desde que ele esteja dentro do período de armazenamento 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 Omni começa a criar o backup em até quatro horas do versionTime. Portanto, o createTime fica dentro dessa janela de quatro horas. Isso é diferente dos backups sob demanda, em que o Spanner Omni 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 (todos os dias às 7h UTC). Isso significa que, para cada backup, o versionTime é 7h UTC e o createTime é um carimbo de data/hora dentro da janela de quatro horas entre 7h UTC e 11h UTC.

Principais recursos

Os backups do Spanner Omni oferecem consistência de dados, replicação externa resiliente e expiração automatizada.

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

  • Replicação: os arquivos de backup são armazenados em um sistema de armazenamento externo, fora da implantação do Spanner Omni.

  • Expiração automática: todos os backups têm uma data de validade especificada pelo usuário que determina quando ele será excluído. O Spanner Omni 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.

Armazenamento externo

O armazenamento externo representa o armazenamento remoto que está fora da implantação do Spanner Omni. É possível configurar o Amazon Simple Storage Service (Amazon S3), o Cloud Storage ou qualquer armazenamento compatível com o Amazon S3 como armazenamento externo. O Spanner Omni armazena os arquivos de backup nesse armazenamento externo.

Gerenciamento de armazenamento externo

Gerencie o armazenamento externo criando, excluindo e listando locais de armazenamento para seus backups.

Criar armazenamento externo

Para criar um armazenamento externo do Amazon S3, execute o seguinte comando:

spanner external-storages create EXTERNAL_STORAGE_ID \
  --s3-bucket-name=BUCKET_NAME \
  --s3-region=AWS_REGION \
  --s3-assume-role-arn=ASSUME_ROLE_ARN

Criar armazenamento externo do Cloud Storage

Para criar um armazenamento externo do Cloud Storage, execute o seguinte comando:

spanner external-storages create EXTERNAL_STORAGE_ID \
   --gcs-bucket-name=BUCKET_NAME

Criar armazenamento externo compatível com o Amazon S3

Para criar um armazenamento externo compatível com o Amazon S3, execute o seguinte comando:

spanner external-storages create EXTERNAL_STORAGE_ID \
    --s3-compatible-bucket-name=BUCKET_NAME \
    --s3-compatible-endpoint=ENDPOINT \
    --s3-compatible-credential-file-path=FILE

Excluir armazenamento externo

Para excluir o armazenamento externo, primeiro verifique se não há backups atuais ou em andamento. Em seguida, execute o comando:

spanner external-storages delete EXTERNAL_STORAGE_ID

Descrever armazenamento externo

Para receber informações sobre o armazenamento externo, execute o seguinte comando:

spanner external-storages describe EXTERNAL_STORAGE_ID

Listar armazenamento externo

Para receber uma lista de armazenamento externo, execute o seguinte comando:

spanner external-storages list

Descritor de backup

Um descritor de backup representa os metadados e os caminhos de arquivo de backup de backups concluídos armazenados em um armazenamento externo.

spanner external-storages backup-descriptors list EXTERNAL_STORAGE_ID

Informações de backup

Ao criar um backup, os metadados de backup são armazenados no Spanner Omni e os arquivos de backup residem no armazenamento externo.

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

  • Um backup completo contém todos os dados.

  • 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 Omni não inclui as seguintes informações:

  • Qualquer modificação nos dados ou no esquema após o versionTime.

  • Políticas do Identity and Access Management (IAM, na sigla em inglês).

  • Registros de dados do fluxo de alterações. Embora o esquema de fluxos de alterações seja armazenado, os dados do fluxo de alterações precisam ser transmitidos e consumidos aproximadamente ao mesmo tempo que as mudanças que ele descreve.

Para ajudar a garantir a consistência externa do backup, o Spanner Omni fixa o conteúdo do banco de dados no versionTime. Isso evita que o sistema de coleta de lixo remova os valores de dados relevantes durante a operação de backup.

Gerenciamento de backups

Para criar backups, você precisa das seguintes permissões. Peça ao administrador para conceder a você os seguintes papéis do IAM em uma implantação:

Ação Papel do IAM
Criar, visualizar, atualizar e excluir backups roles/spanner.backupAdmin
Criar e visualizar backups roles/spanner.backupWriter

Criar backup

Crie um backup sob demanda.

spanner backups create BACKUP_NAME \
--database=DATABASE_ID \
--retention-period=RETENTION_PERIOD \
--async

Excluir backup

Exclua os metadados e arquivos de backup.

spanner backups delete BACKUP_NAME

Descrever backup

Recupere informações sobre um backup.

spanner backups describe BACKUP_NAME

Listar backups

Liste os backups do Spanner Omni na implantação.

spanner backups list

Atualizar a expiração do backup

Atualize a data de validade de um backup.

spanner backups update-metadata BACKUP_NAME \
--expiration-date=EXPIRATION_DATE

Importar backup

Se você excluir uma implantação acidentalmente, poderá importar backups dela se não tiver excluído os arquivos de backup do armazenamento externo.

  1. Crie um armazenamento externo na nova implantação que use o mesmo bucket do Amazon S3 ou do Cloud Storage da implantação original.

    spanner external-storages create EXTERNAL_STORAGE_ID \
      --gcs-bucket-name=BUCKET_NAME
    
  2. Liste os descritores de backup no armazenamento externo.

    spanner external-storages backup-descriptors list EXTERNAL_STORAGE_ID
    
  3. Selecione o descritor de backup e importe-o para a nova implantação.

    spanner backups import BACKUP_NAME \
     --external-storage EXTERNAL_STORAGE_ID \
     --backup-descriptor BACKUP_DESCRIPTOR \
     --retention-period 24h
    

Programações de backup

O Spanner Omni permite programar backups completos para bancos de dados. É possível especificar com que frequência o Spanner Omni cria backups na programação.

Uma programação de backup completo cria backups a cada 12 horas ou mais. Os backups começam em uma janela de 30 minutos do horário programado. É possível ter no máximo quatro programações de backup por banco de dados.

Gerenciamento de programações de backup

Para criar e gerenciar programações de backup, você precisa das seguintes permissões. Peça ao administrador para conceder a você os seguintes papéis do IAM na implantação:

  • Criar, visualizar, atualizar e excluir programações de backup: roles/spanner.backupAdmin

  • Criar e visualizar programações de backup: roles/spanner.backupWriter

Criar programação de backup

Crie uma nova programação de backup para o banco de dados do Spanner Omni.

spanner backup-schedules create SCHEDULE_ID \
  --database=DATABASE_ID \
  --retention-duration=RETENTION_DURATION \
  --cron="CRONTAB_EXPRESSION"

Receber uma programação de backup

Receba informações sobre uma programação de backup específica.

spanner backup-schedules describe SCHEDULE_ID --database=DATABASE_ID

Listar programações de backup

Liste todas as programações de backup de um determinado banco de dados.

spanner backup-schedules list --database=DATABASE_ID

Atualizar uma programação de backup

Atualize as propriedades de uma programação de backup.

spanner backup-schedules update SCHEDULE_ID \
  --database=DATABASE_ID \
  --retention-duration=RETENTION_DURATION \
  --cron="CRONTAB_EXPRESSION"

Excluir uma programação de backup

Exclua uma programação de backup do banco de dados.

spanner backup-schedules delete SCHEDULE_ID --database=DATABASE_ID

Definir a política de controle de acesso do IAM

Defina a política de controle de acesso do IAM para uma programação de backup.

spanner backup-schedules set-iam-policy SCHEDULE_ID \
  --database=DATABASE_ID \
  policy.json

Receber a política de controle de acesso do IAM

Receba a política de controle de acesso do IAM para uma programação de backup.

spanner backup-schedules get-iam-policy SCHEDULE_ID --database=DATABASE_ID

Comparar o armazenamento de backup com o armazenamento de banco de dados

O tamanho do armazenamento de um backup pode ser menor ou maior que o tamanho do armazenamento do banco de dados de origem no momento da criação.

O armazenamento de um backup pode ser menor que o armazenamento do banco de dados porque um backup contém apenas uma versão dos dados, enquanto o banco de dados ativo pode conter várias versões devido a operações em andamento. As diferenças no formato de dados e na compactação também podem resultar em um tamanho de backup menor.

Por outro lado, o armazenamento de um backup pode ser maior que o armazenamento do banco de dados, dependendo do estado do banco de dados e de quando você cria o backup.

Por motivos semelhantes, ao restaurar um banco de dados de um backup, o armazenamento dele pode ser maior que o armazenamento do banco de dados. Isso pode ocorrer se um grande conjunto de dados foi excluído e compactado após a criação do backup. Portanto, o tamanho do backup depende de quando ele foi criado e das operações subsequentes no banco de dados.

Nenhuma fórmula prevê o tamanho de um backup em relação ao banco de dados ativo. Para um banco de dados com uma alta taxa de gravações (um banco de dados ativo), o backup provavelmente é menor que o banco de dados ativo. No entanto, em algumas situações, o tamanho do backup pode ser maior.