Esta página descreve como mover uma instância no Spanner.
É possível mover sua instância do Spanner de qualquer configuração para outra configuração de instância, incluindo configurações regionais, birregionais e multirregionais. Mover a instância não causa inatividade, e o Spanner continua a fornecer as garantias de transação comuns, incluindo consistência forte, durante a movimentação.
Também é possível mover a instância da configuração de origem para uma configuração personalizada (por exemplo, uma configuração de base nam3 com uma réplica somente leitura us-west2). Como não é possível atualizar a topologia das configurações de instância atuais, primeiro crie uma nova configuração de instância personalizada com a topologia desejada. Depois de criar a nova configuração de instância personalizada, você pode mover a instância da configuração de origem para a nova configuração personalizada.
Por que mover sua instância do Spanner?
Os benefícios de mover sua instância incluem:
- Aumentar a disponibilidade: obtenha 99,999% de disponibilidade sem inatividade após realizar uma movimentação regional para birregional ou multirregional.
- Reduzir a latência: reduza a latência e aumente a cobertura geográfica com réplicas somente leitura adicionais por meio de uma movimentação regional para birregional ou multirregional ou multirregional para multirregional.
- Reduzir o custo: reduza os custos por hora movendo de uma configuração birregional ou multirregional para uma configuração regional.
- Colocar o banco de dados: coloque o banco de dados do Spanner com o aplicativo cliente movendo a instância para um local mais otimizado.
Preços
Ao mover uma instância, as configurações de instância de origem e de destino estão sujeitas a cobranças de computação e armazenamento por hora. Quando a movimentação for concluída, você receberá a cobrança do armazenamento da instância na configuração de destino.
Se você estiver movendo sua instância para uma nova configuração de instância regional, birregional ou multirregional, poderá estar sujeito a cobranças de transferência de dados de saída. Para mais informações, consulte Preços do Spanner.
Limitações
- Para mover sua instância, ela precisa ter no mínimo um nó (1.000 unidades de processamento).
- Não é possível mover sua instância entre projetos e Google Cloud contas.
- Não é possível mover uma instância que esteja usando a edição Standard diretamente de uma configuração de instância regional para uma configuração de instância birregional ou multirregional. Primeiro, faça upgrade da edição da instância para a edição Enterprise Plus e, em seguida, mova a instância.
- Se você tiver solicitações ativas usando um endpoint de serviço regional em qualquer um dos recursos da instância, a movimentação da instância afetará todas as solicitações que estão usando o endpoint regional, porque a aplicação regional bloqueia o acesso a instâncias entre regiões. As solicitações que usam um endpoint global não são afetadas.
- Os backups do Spanner são específicos de uma configuração de instância e não são incluídos ao mover uma instância. Para mais informações, consulte Backups.
- As APIs a seguir são desativadas durante uma movimentação de instância:
InstanceAdmin.DeleteInstanceInstanceAdmin.UpdateInstanceDatabaseAdmin.CreateDatabaseDatabaseAdmin.UpdateDatabaseDdl(desativado sedefault_leaderfor especificado na solicitação)DatabaseAdmin.RestoreDatabaseDatabaseAdmin.CreateBackupDatabaseAdmin.CreateBackupScheduleDatabaseAdmin.CopyBackup
- Se um banco de dados tiver um líder padrão modificado, a seleção será preservada se ele nomear uma região de leitura/gravação na configuração da instância de destino e essa configuração for multirregional. Se a configuração de destino for regional ou não incluir a região de leitura/gravação nomeada, a seleção do líder padrão será limpa.
- Mover uma instância muda o atributo de configuração da instância. Se você gerenciar seus recursos do Spanner por automação, prepare-se e resolva as inconsistências que possam surgir.
- Por exemplo, se você usar Terraform para
gerenciar suas instâncias e bancos de dados do Spanner e
ativar
terraform apply --auto-approvepara manter seus recursos sincronizados, todas as instâncias e recursos filhos serão excluídos quando movermos a instância. Atualize a configuração de acordo para evitar a exclusão e a perda de dados. Consulte Opções de aplicação do Terraform para mais informações sobre o comandoapply.
- Por exemplo, se você usar Terraform para
gerenciar suas instâncias e bancos de dados do Spanner e
ativar
- Enquanto a instância está sendo movida, as métricas e os gráficos de monitoramento do Spanner podem mostrar dados nas configurações de instância de origem e de destino ou apenas refletir a performance em uma configuração de instância.
- Se você configurou a ferramenta de autoescalador de código aberto, não é necessário desativá-la. Ela falha porque
InstanceAdmin.UpdateInstance(usado para mudanças de nó e unidade de processamento) está desativado. - Não é possível mover uma instância se o
recurso de autoescalador gerenciado do Spanner
estiver ativado nela. Para mover a instância, é necessário desativar o autoescalador gerenciado, mover a instância e reativar o autoescalador gerenciado.
- Além disso, se você estiver usando escalonamento automático, provisione nós suficientes para o uso máximo da CPU de acordo com as recomendações máximas observadas e desative o escalonamento automático antes de mover a instância.
- Não é possível mover uma instância de teste sem custo financeiro do Spanner. Você pode mover a instância depois de fazer upgrade para uma instância paga.
Considerações sobre desempenho
Quando uma instância está sendo movida, ela tem latências de leitura/gravação maiores e uma taxa de cancelamento de transação maior. A utilização da CPU durante a movimentação pode chegar a 100%, porque a movimentação da instância é realizada usando a CPU de reserva provisionada pelo usuário. No entanto, mover uma instância não causa inatividade. O tempo necessário para mover uma instância depende de vários fatores, incluindo o tamanho dos bancos de dados, o número de nós e o tipo de movimentação (por exemplo, regional para multirregional).
Após a movimentação de uma instância, a performance dela varia de acordo com os detalhes da configuração. Por exemplo, as configurações birregionais e multirregionais geralmente têm mais latência de gravação e menos latência de leitura do que as configurações regionais.
Backups
Ao mover uma instância, os backups na configuração original da instância não são movidos automaticamente para a nova configuração de destino. A movimentação da instância será interrompida se houver backups na configuração original da instância quando você iniciar a movimentação. É importante copiar os backups e considerar seu plano de recuperação de dados antes de mover a instância.
Se houver backups na configuração original da instância que você precisa
manter, recomendamos que você copie seus backups
para duas instâncias temporárias pequenas (100 unidades de processamento), placeholder-source e
placeholder-dest:
placeholder-source: uma instância com a mesma configuração da instância original da instância em movimentação. Isso permite restaurar os backups para a configuração original se você precisar cancelar a movimentação.placeholder-dest: uma instância com a mesma configuração da instância de destino. Isso garante que você tenha um backup disponível na nova configuração imediatamente após a conclusão da movimentação.
O recurso de restauração não oferece suporte a restaurações entre configurações. Portanto, essas instâncias de marcador são essenciais para uma reversão ou recuperação rápida na nova configuração, se necessário, fornecendo uma rede de segurança em caso de problemas com a instância movida.
Depois de copiar os backups para placeholder-source e placeholder-dest, exclua todos os backups atuais na configuração original da instância antes de mover a instância. Em seguida, após a conclusão da movimentação da instância, você já terá uma cópia do backup na configuração de destino. Também é possível
criar um novo backup.
Ao seguir essa abordagem, você garante a continuidade dos negócios e minimiza possíveis inatividades ou perda de dados durante o processo de movimentação da instância.
Como mover uma instância
É possível mover uma instância com o Google Cloud console Cloud Shell e
a CLI gcloud usando gcloud comandos.
Pré-requisitos
Antes de mover a configuração da instância, certifique-se de ter lido as seções Limitações e Considerações sobre desempenho. Em seguida, siga estas etapas:
- Verifique se você tem a
spanner.instances.updatepermissão do IAM na instância em movimentação. - Se aplicável, mova suas instâncias de não produção (como teste e preparo) antes de mover as instâncias de produção para ajudar a avaliar e entender o impacto da performance nas cargas de trabalho durante uma movimentação de instância.
- Ao mover uma instância do Spanner, o processo de movimentação exclui as tags de instância criadas no Data Catalog. Para preservar as tags, é necessário exportá-las antes da movimentação e importá-las após a movimentação. Para mais informações, consulte Exportar e importar tags.
Para práticas recomendadas, siga também estas diretrizes:
- Teste as cargas de trabalho de performance em instâncias de não produção na configuração da instância de destino antes de mover a instância de produção. Tente mover uma instância de preparo semelhante à instância de produção para ter uma ideia de quanto tempo levará para mover a instância de produção.
- Verifique se não há pontos de acesso nos bancos de dados usando o Key Visualizer.
- Revise para garantir que você tenha cota de nós suficiente na configuração da instância de destino para oferecer suporte ao uso máximo esperado da instância. Para mais informações, consulte Cotas e limites do Spanner.
- Verifique se a utilização máxima da CPU da instância é menor que 40% para a configuração da instância movida e se a quantidade de armazenamento por nó é menor que 1 tebibyte (TiB).
- Não faça mudanças na instância durante a movimentação. Isso inclui a alteração da contagem de nós da instância, a alteração de esquemas de banco de dados, a criação ou a eliminação de bancos de dados e a criação ou exclusão de backups.
Se você mover sua instância de acordo com essas recomendações, a movimentação será concluída em 24 horas. No entanto, dependendo da carga de trabalho do aplicativo, o tempo de conclusão poderá ser maior ou menor.
Mover uma instância
Google Cloud Console do
Acesse a página Instâncias no Google Cloud console.
Selecione a instância que você quer mover.
Na página de visão geral da instância, ao lado de Configuração, clique em Mover instância para uma nova configuração.
No painel Mover banco de dados para nova configuração, selecione a nova configuração de instância.
Clique em Salvar.
CLI gcloud
Use o gcloud spanner instances move
comando para mover a instância.
gcloud spanner instances move INSTANCE_ID \
--target-config=TARGET_CONFIG
Substitua:
- INSTANCE_ID: o identificador permanente da instância que você quer mover.
- TARGET_CONFIG: um identificador permanente da configuração da instância
para onde você quer mover a instância. O novo local geográfico da instância. Essa pode ser uma configuração de instância regional, birregional ou
multirregional (por exemplo,
nam3,regional-us-central1, oucustom-nam3-us-west2).
Por exemplo, para mover sua instância test-instance da configuração de instância atual para nam3, execute o seguinte:
gcloud spanner instances move test-instance --target-config=nam3
Opcional: se você quiser adicionar uma réplica somente leitura na região us-west2 à configuração de instância de base em nam3, faça o seguinte:
Clone a configuração de base e adicione a réplica somente leitura à nova configuração de instância personalizada
custom-nam3-us-west2:gcloud spanner instance-configs create custom-nam3-us-west2 \ --clone-config=nam3 --add-replicas=location=us-west2, type=READ_ONLYMova sua instância
test-instanceda configuração de instância atual para essa nova configuração de instânciacustom-nam3-us-west2:gcloud spanner instances move test-instance --target-config=custom-nam3-us-west2
Opcional: mover uma instância com bancos de dados ativados para CMEK
Use o gcloud spanner instances move
comando para mover uma instância com bancos de dados ativados para CMEK.
É necessário incluir a flag --target-database-move-configs e os valores da chave do KMS no comando ou configurar um arquivo JSON ou YAML com as chaves do KMS necessárias.
Observações sobre o uso:
- Se você tiver vários bancos de dados ativados para CMEK na instância que você quer mover, especifique
--target-database-move-configspara cada um deles. É possível usar as mesmas chaves para cada banco de dados, mas é necessário especificar as chaves para cada banco de dados ativado para CMEK. - As chaves precisam abranger todas as regiões na configuração da instância de destino. Por exemplo, se a configuração da instância de destino estiver em
nam3, defina as chaves emregional-us-east4,regional-us-east1eregional-us-central1. - Não é possível definir chaves do KMS para bancos de dados que não estão ativados para CMEK ao mover a instância.
- Não desative nem destrua as chaves CMEK na configuração da instância de origem ou de destino ao mover a instância. A migração não prossegue se você tentar.
- Não é possível mover uma instância que tenha partições de instância. Para mais informações sobre as limitações de geoparticionamento, consulte as limitações na visão geral do geoparticionamento.
gcloud spanner instances move INSTANCE_ID \
--target-config=TARGET_CONFIG \
--target-database-move-configs=^:^database-id=DATABASE_ID_1:kms-key-names=KMS_KEY_1[, KMS_KEY_2 ... ] \
[--target-database-move-configs=^:^database-id=DATABASE_ID_2:kms-key-names=KMS_KEY_1 ... ]
ou
gcloud spanner instances move INSTANCE_ID \
--target-config=TARGET_CONFIG \
--target-database-move-configs=CONFIG_FILE_PATH
Configure o arquivo CONFIG_FILE_PATH com seus IDs de banco de dados
e chaves do KMS. O exemplo de arquivo de configuração a seguir contém as chaves do KMS para dois bancos de dados, database-1 e database-2, com as mesmas chaves em regional-us-east4, regional-us-east1 e regional-us-central1 para cobrir todas as regiões em nam3.
[
{
database-id: database-1,
kms-key-names:
"projects/[your-project]/locations/us-east4/keyRings/[your-keyring]/cryptoKeys/[your-key],projects/[your-project]/locations/us-east1/keyRings/[your-keyring]/cryptoKeys/[your-key],projects/[your-project]/locations/us-central1/keyRings/[your-keyring]/cryptoKeys/[your-key]",
},
{
database-id: database-2,
kms-key-names:
"projects/[your-project]/locations/us-east4/keyRings/[your-keyring]/cryptoKeys/[your-key],projects/[your-project]/locations/us-east1/keyRings/[your-keyring]/cryptoKeys/[your-key],projects/[your-project]/locations/us-central1/keyRings/[your-keyring]/cryptoKeys/[your-key]",
},
]
Como monitorar a movimentação da instância e o progresso do cancelamento
É possível usar gcloud spanner operations describe ou criar um painel personalizado do Cloud Monitoring para monitorar o progresso de uma movimentação de instância.
Conferir o progresso da operação de movimentação e cancelamento
Para acompanhar o progresso de uma movimentação de instância ou de uma operação de cancelamento de movimentação de instância, use o gcloud spanner operations describe
comando. Esse comando exige o ID da operação de movimentação de instância em andamento.
Para receber o ID da operação de movimentação da instância, execute:
gcloud spanner operations list --instance="INSTANCE_ID"Substitua:
- INSTANCE_ID: o identificador permanente da instância que você quer mover.
A saída mostra uma lista de operações de longa duração, incluindo a operação de movimentação da instância.
Execute o comando
gcloud spanner operations describepara conferir a porcentagem de progresso e o status:gcloud spanner operations describe OPERATION_ID --instance=INSTANCE_IDSubstitua:
- OPERATION_ID: o ID da operação de movimentação da instância que você quer verificar.
- INSTANCE_ID: o ID da instância que você quer verificar.
Monitorar uma operação de movimentação de instância
É possível criar um painel personalizado do Cloud Monitoring para mostrar e monitorar métricas durante a movimentação da instância, uma operação de longa duração com possíveis implicações de serviço.
Os gráficos Armazenamento total e Armazenamento total do banco de dados por bancos de dados no painel são úteis para monitorar o progresso da movimentação. É possível observar o armazenamento na configuração de origem diminuir gradualmente enquanto o armazenamento na configuração de destino aumenta.
Google Cloud Console do
- Faça o download do
move-instance-dashboard.jsonarquivo. Esse arquivo tem as informações necessárias para preencher um painel personalizado no Monitoring. -
Noconsole, acesse a página Painéis do painel: Google Cloud
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.
- Na página Visão geral dos painéis, clique em Criar painel.
- Na barra de ferramentas do painel, clique no menu suspenso Configurações do painel. Em seguida, selecione JSON e Editor de JSON.
- No painel Editor de JSON, copie o conteúdo do arquivo
move-instance-dashboard.jsonque você fez o download e cole-o no editor. - Para aplicar as mudanças ao painel, clique em Aplicar mudanças. Se você não quiser usar esse painel, volte para a página Visão geral dos painéis.
- Depois que o painel for criado, clique em Adicionar filtro. Em seguida, selecione
project_idouinstance_idpara monitorar o progresso da movimentação da instância.
CLI gcloud
- Faça o download do
move-instance-dashboard.jsonarquivo. Esse arquivo tem as informações necessárias para preencher um painel personalizado no Monitoring. Para criar um painel em um projeto, use o
gcloud monitoring dashboards createcomando:gcloud monitoring dashboards create --config-from-file=move-instance-dashboard.jsonPara mais informações, consulte a
gcloud monitoring dashboards createreferência.
Como cancelar uma movimentação de instância
Só é possível cancelar uma movimentação de instância que ainda está em andamento. Se você quiser reverter uma movimentação de instância já concluída, inicie uma nova movimentação.
É possível usar gcloud spanner operations cancel
para cancelar operações de movimentação de instância. O cancelamento não é instantâneo e leva aproximadamente o mesmo tempo que decorreu desde o início da movimentação. Isso ocorre porque os dados precisam ser movidos de volta para a configuração da instância de origem.
Esse comando exige o ID da operação de movimentação de instância em andamento.
Para receber o ID da operação, execute:
gcloud spanner operations list --type=INSTANCE --instance="INSTANCE_ID" --filter="done:False AND metadata.@type:MoveInstanceMetadata"Substitua:
- INSTANCE_ID: o identificador permanente da instância que você quer mover.
A saída mostra uma lista de operações de movimentação de instância em andamento.
Execute o comando
gcloud spanner operations cancelpara cancelar a movimentação da instância:gcloud spanner operations cancel OPERATION_IDSubstitua:
- OPERATION_ID: o ID da operação de movimentação da instância que você quer cancelar.
A seguir
- Saiba mais sobre as configurações regionais, birregionais e multirregionais do Spanner .
- Saiba mais sobre Google Cloud regiões e zonas.