Mover uma instância

Nesta página, descrevemos como mover uma instância no Spanner.

É possível mover sua instância do Spanner de qualquer configuração de instância para qualquer outra configuração de instância, inclusive entre configurações regionais e multirregionais. A migração da instância não causa inatividade, e o Spanner continua a fornecer as garantias de transação usuais, incluindo consistência forte, durante a movimentação.

Também é possível mover sua instância da configuração de instância de origem para uma configuração de instância personalizada (por exemplo, uma configuração base nam3 com uma réplica somente leitura us-west2). Como não é possível atualizar a topologia das configurações de instâncias atuais, primeiro você precisa criar uma nova configuração de instância personalizada com a topologia desejada. Depois de criar a nova configuração da instância personalizada, você pode mover a instância da configuração da instância 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: tenha 99,999% de disponibilidade sem inatividade após realizar uma mudança regional para 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 mudança regional para multirregional ou multirregional para multirregião.
  • Reduzir custos: reduza os custos por hora mudando de uma configuração multirregional para uma regional.
  • Colocar banco de dados: posicione 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 da instância de origem e de destino estão sujeitas a cobranças de computação e armazenamento por hora. Quando a migração for concluída, você será cobrado pelo 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 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 1 nó (1.000 unidades de processamento).
  • Não é possível mover sua instância entre projetos e contas do Google Cloud.
  • Não é possível mover uma instância de teste gratuito do Spanner. É possível mover a instância após o upgrade para uma instância paga.
  • 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 vai afetar todas as solicitações que usam 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 para uma configuração da instância e não são incluídos ao mover uma instância. Para mais informações, consulte Backups.
  • As seguintes APIs são desativadas durante a movimentação de uma instância:
    • InstanceAdmin.DeleteInstance
    • InstanceAdmin.UpdateInstance
    • DatabaseAdmin.CreateDatabase
    • DatabaseAdmin.UpdateDatabaseDdl (desativado se default_leader for especificado na solicitação).
    • DatabaseAdmin.RestoreDatabase
    • DatabaseAdmin.CreateBackup
    • DatabaseAdmin.CopyBackup
  • Não é possível mover instâncias que contenham bancos de dados ativados para CMEK.
  • Se um banco de dados tiver um líder padrão modificado, a seleção será preservada se 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 líder padrão será limpa.
  • Mover uma instância altera o atributo de configuração dela. Se você gerencia os recursos do Spanner por meio da automação, prepare e resolva as possíveis inconsistências.
    • Por exemplo, se você usar o Terraform para gerenciar as instâncias e os bancos de dados do Spanner e ativar o terraform apply --auto-approve para manter os recursos sincronizados, todas as instâncias e recursos filhos serão excluídos quando a instância for movida. Atualize a configuração para evitar exclusão e perda de dados. Confira Opções de aplicação do Terraform para mais informações sobre o comando apply.
  • Enquanto a instância está sendo movida, as métricas e os gráficos de monitoramento do Spanner podem mostrar dados nas configurações da instância de origem e de destino ou refletir apenas o desempenho em uma configuração de instância.
  • Se você configurou a ferramenta de escalonamento automático de código aberto, não é necessário desativá-la. Ela falha porque InstanceAdmin.UpdateInstance (usado para alterações de nó e unidade de processamento) está desativado.
  • Não é possível mover uma instância se o recurso escalonador automático gerenciado do Spanner estiver ativado nela. Para mover a instância, você precisa desativar o escalonador automático gerenciado, mover a instância e reativar o escalonador automático gerenciado.

    Além disso, se você estiver usando o escalonamento automático, será necessário provisionar nós suficientes para o pico de uso da CPU, de acordo com as recomendações máximas observadas, e desativar o escalonamento automático antes de mover a instância.

Considerações sobre performance

Quando uma instância está sendo movida, ela passa por maiores latências de leitura/gravação e maior taxa de cancelamento de transações. A utilização da CPU durante a movimentação pode subir para 100% porque a movimentação da instância é realizada usando a CPU extra 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, de regional para multirregião).

Depois de mover uma instância, o desempenho dela varia de acordo com os detalhes de configuração. Por exemplo, configurações multirregionais costumam ter maior latência de gravação e menor latência de leitura do que as configurações regionais.

Backups

Quando você move uma instância, os backups na instância de origem não são transferidos automaticamente para a nova configuração de destino. A movimentação da instância será cancelada se houver backups na configuração da instância de origem quando você iniciar a movimentação da instância. É importante que você copie os backups e considere seu plano de recuperação de dados antes de mover a instância.

Se houver backups na instância de origem que precisam ser mantidos, recomendamos copiar os backups para a configuração de instância de destino e outra com a mesma configuração da instância de origem a ser movida. Dessa forma:

  • É possível copiar os backups para a configuração da instância de destino imediatamente após a conclusão da movimentação da instância.
  • Se você precisar cancelar a movimentação da instância, também poderá restaurar rapidamente os backups da instância usando a mesma configuração da instância de origem.

Depois de copiar os backups para outra instância, exclua todos os backups atuais na instância de origem antes de movê-la. Em seguida, quando a movimento da instância é concluída, você já tem uma cópia do backup na configuração de destino. Também é possível criar um backup.

Para saber mais sobre como copiar backups e os custos associados, consulte Copiar um backup.

Como mover uma instância

É possível mover uma instância com o Cloud Shell do console do Google Cloud e a CLI gcloud usando os comandos gcloud.

Pré-requisitos

Antes de mover a configuração da instância, leia as seções Limitações e Considerações de desempenho. Em seguida, siga estas etapas:

  1. Verifique se você tem a permissão do IAM spanner.instances.update na instância de origem.
  2. Se aplicável, mova as 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 no desempenho nas cargas de trabalho durante uma movimentação de instância.
  3. Quando você move uma instância do Spanner, esse processo exclui as tags da instância criadas no Data Catalog. Para preservar suas tags, você precisa exportá-las antes da movimentação e importá-las após a movimentação. Para mais informações, consulte Exportar e importar tags.

Para ter acesso às práticas recomendadas, siga também estas diretrizes:

  • Teste as cargas de trabalho de desempenho 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 teste semelhante à sua instância de produção para ter uma noção de quanto tempo levará para mover sua instância de produção.
  • Use o Key Visualizer para verificar se não há pontos de acesso nos seus bancos de dados.
  • Verifique se você tem uma cota de nós suficiente na configuração da instância de destino para suportar o pico de uso esperado da instância. Para mais informações, consulte Cotas e limites do Spanner.
  • Verifique se o pico de uso da CPU da instância é inferior a 40% para a configuração da instância movida e se a quantidade de armazenamento por nó é inferior a 1 tebibyte (TiB).
  • Não faça alterações na instância durante a movimentação. Isso inclui alterar a contagem de nós da instância, alterar esquemas de banco de dados, criar ou eliminar bancos de dados e criar ou excluir backups.

Se você mover sua instância de acordo com essas recomendações, a transferência geralmente será concluída em até 24 horas. No entanto, dependendo da carga de trabalho do aplicativo, o tempo de conclusão pode ser maior ou menor.

Mover uma instância

Console do Google Cloud

  1. Clique em Ícone "Ativar o Cloud Shell" Ativar o Cloud Shell na parte superior do console do Google Cloud.

    Uma sessão do Cloud Shell é aberta em um novo frame na parte inferior do console do Google Cloud e um prompt de linha de comando é exibido. A inicialização da sessão pode levar alguns segundos.

  2. Use o comando gcloud spanner instances move 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 a qual você quer movê-la. A nova localização geográfica da instância. Pode ser uma configuração de instância regional, multirregional ou personalizada (por exemplo, nam3, us-central1 ou custom-nam3-us-west2).

Por exemplo, para mover a instância test-instance da configuração 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, us-west2, à configuração da instância base nam3, faça o seguinte:

  1. Clone a configuração de base e adicione a réplica somente leitura:

    gcloud spanner instance-configs create custom-nam3-us-west2 \
    --clone-config=nam3 --add-replicas=location=us-west2, type=READ_ONLY
    
  2. Mova a instância test-instance da configuração atual para esta nova configuração de instância custom-nam3-us-west2:

    gcloud spanner instances move test-instance --target-config=custom-nam3-us-west2
    

CLI da gcloud

Use o comando gcloud spanner instances move 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 a qual você quer movê-la. A nova localização geográfica da instância. Pode ser uma configuração de instância regional ou multirregional, por exemplo, nam3, us-central1 ou custom-nam3-us-west2.

Por exemplo, para mover a instância test-instance da configuração 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, us-west2, à configuração da instância base nam3, faça o seguinte:

  1. Clone a configuração de base e adicione a réplica somente leitura:

    gcloud spanner instance-configs create custom-nam3-us-west2 \
    --clone-config=nam3 --add-replicas=location=us-west2, type=READ_ONLY
    
  2. Mova a instância test-instance da configuração atual para esta nova configuração de instância custom-nam3-us-west2:

    gcloud spanner instances move test-instance --target-config=custom-nam3-us-west2
    

Como monitorar o progresso da movimentação e do cancelamento da instância

Use gcloud spanner operations describe ou crie um painel personalizado do Cloud Monitoring para monitorar o progresso de uma movimentação de instância.

Ver o progresso da operação de movimentação e cancelamento

Para acompanhar o progresso de uma operação de movimentação ou cancelamento de movimentação da instância, use o comando gcloud spanner operations describe. Esse comando requer o ID da operação de movimentação da instância em andamento.

  1. Para saber o ID da operação de transferência da instância, execute o seguinte comando:

    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.

  2. Execute o comando gcloud spanner operations describe para visualizar a porcentagem e o status do progresso:

    gcloud spanner operations describe OPERATION_ID --instance=INSTANCE_ID
    

    Substitua:

    • 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 exibir e monitorar métricas durante a movimentação da instância, uma operação de longa duração com possíveis implicações no 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 mudança. O armazenamento na configuração de origem cai gradualmente enquanto o armazenamento na configuração de destino aumenta.

Console do Google Cloud

  1. Faça o download do arquivo move-instance-dashboard.json. Esse arquivo tem as informações necessárias para preencher um painel personalizado no Monitoring.
  2. No console do Google Cloud, acesse a página  Painéis:

    Acessar Painéis

    Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.

  3. Na página Visão geral dos painéis, clique em Criar painel.
  4. Na barra de ferramentas do painel, clique no menu suspenso Configurações do painel. Em seguida, selecione JSON, seguido por JSON Editor.
  5. No painel JSON Editor, copie o conteúdo do arquivo move-instance-dashboard.json que você salvou e cole no editor.
  6. Para aplicar as mudanças ao painel, clique em Aplicar alterações. Se não quiser usar esse painel, volte para a página "Visão geral dos painéis".
  7. Depois que o painel for criado, clique em Adicionar filtro. Em seguida, selecione project_id ou instance_id para monitorar o andamento da movimentação da instância.

CLI da gcloud

  1. Faça o download do arquivo move-instance-dashboard.json. Esse arquivo tem as informações necessárias para preencher um painel personalizado no Monitoring.
  2. Para criar um painel em um projeto, use o comando gcloud monitoring dashboards create:

    gcloud monitoring dashboards create --config-from-file=move-instance-dashboard.json
    

    Para mais informações, consulte a referência gcloud monitoring dashboards create.

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âncias. O cancelamento não é instantâneo e leva aproximadamente o mesmo tempo decorrido desde o início da mudança. Isso ocorre porque os dados precisam ser movidos de volta para a configuração da instância de origem.

Esse comando requer o ID da operação de movimentação da instância em andamento.

  1. Encontre o ID da operação executando:

    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âncias em andamento.

  2. Execute o comando gcloud spanner operations cancel para cancelar a movimentação da instância:

    gcloud spanner operations cancel OPERATION_ID
    

    Substitua:

    • OPERATION_ID: o ID da operação de movimentação da instância a ser cancelada.

A seguir