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
versionTimedo 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.
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_NAMEListe os descritores de backup no armazenamento externo.
spanner external-storages backup-descriptors list EXTERNAL_STORAGE_IDSelecione 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.backupAdminCriar 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.