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
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 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:
- Um bucket do Cloud Storage de destino no seu projeto do Google Cloud .
- Uma conta de serviço do Google Cloud que recebeu o papel de Administrador de objetos do Storage (
roles/storage.objectAdmin) do Identity and Access Management (IAM) no bucket de destino. Para mais informações, consulte Papéis do IAM para o Cloud Storage. - Credenciais de autenticação configuradas no ambiente do Spanner Omni, como um arquivo de chave de conta de serviço ou credenciais trocadas pela federação de identidade da carga de trabalho. Para mais informações sobre como autenticar em ambientes externos, consulte Configurar a federação de identidade da carga de trabalho com VMs da AWS e Configurar a federação de identidade da carga de trabalho com o Kubernetes.
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:
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_NAMEListe os descritores de backup no armazenamento externo:
spanner external-storages backup-descriptors list EXTERNAL_STORAGE_IDImporte 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_PERIODSubstitua:
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,24hou30d.
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.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"
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.