Mover uma instância

Esta página descreve 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, incluindo configurações regionais, birregionais e multirregionais. Mover sua instância não causa inatividade, e o Spanner continua a fornecer as garantias de transação usuais, incluindo consistência forte, durante a migraçã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âncias atuais, é necessário criar uma nova configuração de instância personalizada com a topologia desejada primeiro. 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 de instância personalizada.

Por que mover sua instância do Spanner?

Os benefícios de mover a instância incluem:

  • Aumente a disponibilidade: obtenha 99,999% de disponibilidade sem tempo de inatividade após realizar uma migração de regional para birregional ou multirregional.
  • Reduza a latência: reduza a latência e aumente a cobertura geográfica com mais réplicas somente leitura com uma mudança de regional para birregional ou multirregional ou de multirregional para multirregional.
  • Reduzir custos: reduza os custos por hora passando de uma configuração de duas ou várias regiões para uma configuração regional.
  • Colocate 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 da instância de origem e de destino estão sujeitas a taxas de computação e armazenamento por hora. Quando a migração for concluída, você vai receber uma cobrança pelo armazenamento de instâncias na configuração de destino.

Se você estiver movendo a instância para uma nova configuração 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 a instância, ela precisa ter pelo menos um nó (1.000 unidades de processamento).
  • Não é possível mover a instância entre projetos e contas do Google Cloud .
  • Não é possível mover uma instância que usa a edição Standard diretamente de uma configuração de instância regional para uma configuração de instância dual ou multirregional. Primeiro, faça upgrade da edição da sua instância para o Enterprise Plus e, em seguida, mova a instância.
  • Não é possível mover uma instância de teste gratuito do Spanner. Você pode mover a instância depois de fazer upgrade para uma instância paga.
  • Se você tiver solicitações ativas usando um endpoint de serviço regional em qualquer um dos recursos de instância, a movimentação da instância vai 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.DeleteInstance
    • InstanceAdmin.UpdateInstance
    • DatabaseAdmin.CreateDatabase
    • DatabaseAdmin.UpdateDatabaseDdl (desativado se default_leader for especificado na solicitação)
    • DatabaseAdmin.RestoreDatabase
    • DatabaseAdmin.CreateBackup
    • DatabaseAdmin.CreateBackupSchedule
    • DatabaseAdmin.CopyBackup
  • Não é possível mover instâncias que contêm 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 e 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 de líder padrão será limpa.
  • Mover uma instância muda o atributo de configuração da instância. Se você gerencia seus recursos do Spanner por automação, prepare-se e resolva todas as inconsistências que possam ocorrer.
    • Por exemplo, se você usa o Terraform para gerenciar instâncias e bancos de dados do Spanner e ativa o terraform apply --auto-approve para manter seus recursos sincronizados, todas as instâncias e recursos filhos são excluídos quando movemos a instância. Atualize a configuração para evitar a exclusão e a perda de dados. Consulte 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 de instância de origem e destino ou apenas refletir a performance em uma configuração de instância.
  • Se você tiver configurado a ferramenta de escalonamento automático de código aberto, não precisa 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, é necessário 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, provisione nós suficientes para o pico de uso da CPU de acordo com as recomendações máximas e desative o escalonamento automático antes de mover a instância.

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 migração pode aumentar até 100%, porque a migração de instâncias é realizada usando CPU 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, de regional para várias regiões).

Depois de mover uma instância, o desempenho dela varia de acordo com os detalhes da configuração. Por exemplo, configurações de duas regiões e multirregionais geralmente têm mais latência de gravação e menos latência de leitura do que configurações regionais.

Backups

Quando você move uma instância, os backups na instância de origem não são movidos para a nova configuração de destino de forma automática. A migração da instância será abortada se backups existirem na configuração da instância de origem quando você iniciar a migração da instância. É importante copiar os backups e considerar seu plano de recuperação de dados antes de mover a instância.

Se houver backups na sua instância de origem que você precisa manter, recomendamos copiar os backups para a configuração da instância de destino e outra instância 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 com a mesma configuração da instância de origem.

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

Para saber mais sobre a cópia de backups e os custos associados, consulte Copiar um backup.

Como mover uma instância

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

Pré-requisitos

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

  1. Verifique se você tem a permissão IAM spanner.instances.update na instância de origem.
  2. Se aplicável, mova as instâncias que não são de produção (como de teste e de preparação) antes de mover as instâncias de produção para ajudar a avaliar e entender o impacto de desempenho nas cargas de trabalho durante uma movimentação de instância.
  3. Quando você move uma instância do Spanner, o processo de migração exclui as tags de instância criadas no Data Catalog. Para preservar suas tags, exporte-as antes da mudança e importe-as depois. Para mais informações, consulte Exportar e importar tags.

Para práticas recomendadas, siga também estas diretrizes:

  • Teste cargas de trabalho de desempenho em instâncias que não são de 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 à sua 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 seus bancos de dados usando o Key Visualizer.
  • Verifique se você tem cota de nó suficiente na configuração da instância de destino para suportar o uso máximo 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 é menor que 40% para a configuração da instância que você moveu e se a quantidade de armazenamento por nó é menor que 1 Tebibyte (TiB).
  • Não faça mudanças na instância durante a mudança. 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 eliminação de bancos de dados e a criação ou exclusão de backups.

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

Mover uma instância

Google Cloud console

  1. Clique em Ativar o ícone do Cloud Shell Ativar o Cloud Shell na parte de cima 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 exibe um prompt de linha de comando. 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 onde você quer mover a instância. O novo local geográfico da sua instância. Pode ser uma configuração regional, birregional, 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 de leitura somente, us-west2, à configuração de 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 a nova configuração 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 onde você quer mover a instância. O novo local geográfico da sua instância. Pode ser uma configuração de instância regional, dual-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 de leitura somente, us-west2, à configuração de 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 a nova configuração custom-nam3-us-west2:

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

Como monitorar o progresso da migração e do cancelamento de instâncias

Você pode 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 mudança e cancelamento

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

  1. Para conferir o ID da operação de movimentação de 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 mover instância.

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

    gcloud spanner operations describe OPERATION_ID --instance=INSTANCE_ID
    

    Substitua:

    • OPERATION_ID: o ID da operação de movimentação de 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 para o 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 transferência. É possível ver o armazenamento na configuração da origem diminuindo gradualmente, enquanto o armazenamento na configuração de destino aumenta.

Google Cloud console

  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:

    Ir para Painéis

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

  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 e, depois, Editor de JSON.
  5. No painel Editor JSON, copie o conteúdo do arquivo move-instance-dashboard.json que você fez o download e cole no editor.
  6. Para aplicar as mudanças ao painel, clique em Aplicar mudanças. Se você não quiser usar esse painel, volte à 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 progresso 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 mudança de instância

Só é possível cancelar uma mudança de instância que ainda esteja em andamento. Se você quiser reverter uma mudança de instância já concluída, inicie uma nova.

Use 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 o tempo decorrido desde o início do movimento. 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 de instância em andamento.

  1. Para conferir 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.

  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 mover instância que você quer cancelar.

A seguir