Com o Spanner Omni, é possível 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 lógica de dados.
A versão Prévia do Spanner Omni não é compatível com backups ou restaurações. Para ter acesso aos recursos que permitem criar e restaurar backups, entre em contato com o Google e peça acesso antecipado à versão completa do Spanner Omni.
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 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, 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, 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 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 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 e 11h UTC.
Principais recursos
Os backups do Spanner Omni oferecem consistência de dados, replicação externa resiliente e expiração automática.
Consistência de dados: os backups de um banco de dados do Spanner Omni são transacionalmente 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 ela será excluída. 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 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 em andamento ou existentes. 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 conferir 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
Quando você cria um backup, os metadados dele são armazenados no Spanner Omni, e os arquivos 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.Políticas do Identity and Access Management (IAM).
Registros de dados do fluxo de alterações. Embora o esquema de fluxo de alterações seja armazenado, os dados do fluxo precisam ser transmitidos e consumidos aproximadamente ao mesmo tempo que as mudanças 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 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 acessar 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
Recupera 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
Atualizar 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 por engano, 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
Com o Spanner Omni, é possível programar backups completos de 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 a partir 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.backupAdminCriar e ver 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
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 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
Recebe 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 de armazenamento de um backup pode ser menor ou maior que o tamanho de 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 a operações em andamento. Diferenças no formato de dados e na compactação também podem resultar em um tamanho menor do backup.
Por outro lado, o armazenamento de um backup pode ser maior do que o do banco de dados, dependendo do estado do banco de dados e de quando o backup é criado.
Por motivos semelhantes, quando você restaura um banco de dados de um backup, o armazenamento dele pode ser maior do que o armazenamento do banco de dados. Isso pode acontecer se um grande conjunto de dados for excluído e compactado depois que o backup for criado. 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 do que o banco de dados ativo. No entanto, em algumas situações, o tamanho do backup pode ser maior.