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 de aplicativo causam corrupção de dados lógicos.

Visão geral do backup do Spanner Omni

Os backups são altamente disponíveis e podem ser retidos por até um ano a partir do momento da criação. Cada backup tem um createTime e um versionTime associados. O createTime é o carimbo de data/hora de quando 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, createTime e versionTime são iguais por padrão. Se necessário, é possível especificar um versionTime mais antigo ao criar um backup sob demanda, se ele estiver dentro do período de armazenamento de versões do banco de dados.

Para backups programados, versionTime é o horário que você escolhe ao criar a programação de backup. O Spanner Omni começa a criar o backup em até quatro horas após o versionTime, de modo que o createTime esteja 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.

Os backups do Spanner Omni só podem ser restaurados em implantações do Spanner Omni. Não é possível restaurar um backup gerenciado do Spanner no Spanner Omni nem restaurar um backup do Spanner Omni no Spanner gerenciado. Para transferir dados entre o Spanner e o Spanner Omni, use fluxo de alterações ou exporte e importe arquivos Avro. Para mais informações, consulte Replicar dados do Spanner para o Spanner Omni e Importar e exportar dados.

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 consistentes de forma transacional e externa 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 eles serão excluídos. O Spanner Omni exclui backups expirados de forma assíncrona. Portanto, pode haver um atraso entre o momento em que um backup expira e o momento em que 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 o 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

Antes de configurar o armazenamento externo do Cloud Storage, verifique se você tem estes itens:

Para registrar o bucket do Cloud Storage como armazenamento externo, execute este comando:

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

Substitua:

  • EXTERNAL_STORAGE_ID: um identificador exclusivo para a configuração de armazenamento externo, por exemplo, gcp-gcs-backup-target.
  • BUCKET_NAME: o nome do bucket do Cloud Storage de destino.

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 o 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 ver 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 arquivos de backups concluídos armazenados em um armazenamento externo.

spanner external-storages backup-descriptors list EXTERNAL_STORAGE_ID

Informações de backup

Quando você cria um backup, os metadados dele são armazenados no Spanner Omni, e os arquivos de backup ficam 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.

  • às políticas existentes do IAM.

  • 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 quase ao mesmo tempo que as alterações descritas.

Para ajudar a garantir a consistência externa do backup, o Spanner Omni fixa o conteúdo do banco de dados em versionTime. Isso impede 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

Criar um backup on demand.

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

Excluir backup

Exclua os metadados e os arquivos de backup.

spanner backups delete BACKUP_NAME

Descrever backup

Recuperar informações sobre um backup.

spanner backups describe BACKUP_NAME

Listar backups

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

spanner backups list

Atualizar validade do backup

Atualizar a data de validade de um backup.

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

Importar backup

Para recuperar um banco de dados em outra implantação do Spanner Omni, por exemplo, para recuperar entre implantações do Spanner Omni ou se você excluir a implantação original, importe backups se os arquivos de backup permanecerem no armazenamento externo:

  1. Crie um armazenamento externo na nova implantação que use o mesmo bucket do Amazon S3 ou do Cloud Storage que a implantação original, por exemplo:

    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. Importe os metadados de backup para a nova implantação:

    spanner backups import BACKUP_NAME \
      --external-storage=EXTERNAL_STORAGE_ID \
      --backup-descriptor=BACKUP_DESCRIPTOR \
      --retention-period=RETENTION_PERIOD
    

    Substitua:

    • BACKUP_NAME: um nome para o backup importado.
    • EXTERNAL_STORAGE_ID: o ID da configuração de armazenamento externo.
    • BACKUP_DESCRIPTOR: o ID do descritor retornado na etapa anterior.
    • RETENTION_PERIOD: a duração da retenção do backup, por exemplo, 24h ou 30d.

Depois de importar os metadados de backup, é possível restaurar o backup em um novo banco de dados na implantação. Para mais informações, consulte Restaurar um backup do Spanner Omni.

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ção 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"

Acessar uma programação de backup

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

spanner backup-schedules describe SCHEDULE_ID --database=DATABASE_ID

Listar programações de backup

Lista 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

Excluir 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 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

Comparação entre o armazenamento de backup e 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 do que o 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 às operações em andamento. As diferenças no formato e na compactação de dados também podem resultar em um tamanho de backup menor.

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

Por motivos semelhantes, quando você restaura um banco de dados de um backup, o armazenamento dele pode ser maior do que o do banco de dados. Isso pode ocorrer se um grande conjunto de dados for 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 será menor que o banco de dados ativo. No entanto, em algumas situações, o tamanho do backup pode ser maior.

A seguir