Mova uma instância

Esta página descreve a movimentação de uma instância no Spanner.

Pode mover a sua instância do Spanner de qualquer configuração de instância para qualquer outra configuração de instância, incluindo entre configurações regionais, de duas regiões e de várias regiões. A movimentação da sua instância não causa tempo de inatividade, e o Spanner continua a fornecer as garantias de transação habituais, incluindo uma forte consistência, durante a movimentação.

Também pode mover a sua instância da configuração da instância de origem para uma configuração da instância personalizada (por exemplo, uma nam3configuração base com uma us-west2réplica só de leitura). Como não pode atualizar a topologia das configurações de instâncias existentes, primeiro tem de criar uma nova configuração de instância personalizada com a topologia pretendida. Depois de criar a nova configuração de instância personalizada, pode mover a instância da configuração de instância de origem para a nova configuração de instância personalizada.

Por que motivo deve mover a sua instância do Spanner?

Seguem-se algumas vantagens da mudança da sua instância:

  • Aumente a disponibilidade: obtenha uma disponibilidade de 99,999% sem tempo de inatividade depois de fazer uma mudança de uma região para uma região dupla ou várias regiões.
  • Reduza a latência: reduza a latência e aumente a cobertura geográfica com réplicas adicionais de leitura através de uma mudança de regional para birregional ou multirregional, ou de multirregional para multirregional.
  • Reduzir o custo: reduza os custos por hora mudando de uma configuração de região dupla ou multirregional para uma configuração regional.
  • Colocação conjunta da base de dados: coloque conjuntamente a base de dados do Spanner com a aplicação cliente movendo a instância para uma localização mais otimizada.

Preços

Quando move uma instância, as configurações da instância de origem e de destino estão sujeitas a custos de computação e armazenamento por hora. Quando a mudança estiver concluída, a cobrança do armazenamento da instância é feita na configuração de destino.

Se estiver a mover a sua instância para uma nova configuração de instância regional, de duas regiões ou de várias regiões, pode estar sujeita a custos de transferência de dados de saída. Para mais informações, consulte os preços do Spanner.

Limitações

  • Para mover a sua instância, esta tem de ter, pelo menos, 1 nó (1000 unidades de processamento).
  • Não pode mover a sua instância entre projetos e Google Cloud contas.
  • Não pode mover uma instância que esteja a usar a edição Standard diretamente de uma configuração de instância regional para uma configuração de instância de região dupla ou multirregião. Primeiro, tem de atualizar a edição da sua instância para a edição Enterprise Plus e, em seguida, mover a instância.
  • Se tiver pedidos ativos que usem um ponto final de serviço regional em qualquer um dos recursos de instância, a mudança de instância afeta todos os pedidos que usam o ponto final regional, porque a aplicação regional bloqueia o acesso a instâncias entre regiões. Os pedidos que usam um ponto final global não são afetados.
  • As cópias de segurança do Spanner são específicas de uma configuração de instância e não estão incluídas quando move uma instância. Para mais informações, consulte o artigo Cópias de segurança.
  • As seguintes APIs estão desativadas durante a movimentação de uma instância:
    • InstanceAdmin.DeleteInstance
    • InstanceAdmin.UpdateInstance
    • DatabaseAdmin.CreateDatabase
    • DatabaseAdmin.UpdateDatabaseDdl (Desativado se default_leader for especificado no pedido.)
    • DatabaseAdmin.RestoreDatabase
    • DatabaseAdmin.CreateBackup
    • DatabaseAdmin.CreateBackupSchedule
    • DatabaseAdmin.CopyBackup
  • Se uma base de dados tiver um líder predefinido modificado, a seleção é preservada se nomear uma região de leitura/escrita na configuração da instância de destino e essa configuração for multirregião. Se a configuração de destino for regional ou não incluir a região de leitura/escrita com nome, a seleção de líder predefinida é limpa.
  • A movimentação de uma instância altera o atributo de configuração da instância da sua instância. Se gerir os seus recursos do Spanner através da automação, certifique-se de que prepara e resolve quaisquer inconsistências que possam surgir.
    • Por exemplo, se usar o Terraform para gerir as suas instâncias e bases de dados do Spanner e ativar o terraform apply --auto-approve para manter os seus recursos sincronizados, todas as instâncias e recursos secundários são eliminados quando movemos a instância. Atualize a configuração em conformidade para evitar a eliminação e a perda de dados. Consulte as opções de aplicação do Terraform para mais informações sobre o comando apply.
  • Enquanto a instância está a ser movida, as métricas e os gráficos de monitorização do Spanner podem mostrar dados nas configurações da instância de origem e de destino, ou podem refletir apenas o desempenho numa configuração da instância.
  • Se configurou a ferramenta de escalamento automático de código aberto, não precisa de a desativar. Falha porque InstanceAdmin.UpdateInstance (usado para alterações de nós e unidades de processamento) está desativado.
  • Não pode mover uma instância se a funcionalidade Spanner managed autoscaler estiver ativada na mesma. Para mover a instância, tem de desativar o redimensionador automático gerido, mover a instância e, em seguida, reativar o redimensionador automático gerido.
    • Além disso, se estiver a usar o dimensionamento automático, tem de aprovisionar nós suficientes para o pico de utilização da CPU de acordo com as recomendações máximas indicadas e, em seguida, desativar o dimensionamento automático antes de mover a instância.
  • Não pode mover uma instância de avaliação gratuita do Spanner. Pode mover a instância depois de atualizar para uma instância paga.

Considerações sobre o desempenho

Quando uma instância está a ser movida, regista latências de leitura/escrita mais elevadas e uma taxa de anulação de transações mais elevada. A utilização da CPU durante a mudança pode atingir 100% porque a mudança da instância é realizada através da CPU sobresselente aprovisionada pelo utilizador. No entanto, a movimentação de uma instância não causa qualquer tempo de inatividade. O tempo necessário para mover uma instância depende de vários fatores, incluindo o tamanho das bases de dados, o número de nós e o tipo de movimento (por exemplo, de regional para multirregional).

Após mover uma instância, o desempenho da instância varia consoante os detalhes da configuração da instância. Por exemplo, as configurações de duas regiões e as configurações de várias regiões têm geralmente uma latência de gravação mais elevada e uma latência de leitura mais baixa do que as configurações regionais.

Cópias de segurança

Quando move uma instância, as cópias de segurança na configuração original da instância não são movidas automaticamente para a nova configuração de destino. A movimentação da instância é anulada se existirem cópias de segurança na configuração original da instância quando iniciar a movimentação da instância. É importante que copie as suas cópias de segurança e considere o seu plano de recuperação de dados antes de mover a sua instância.

Se existirem cópias de segurança na configuração original da instância que precise de manter, recomendamos que copie as cópias de segurança para duas instâncias temporárias pequenas (100 UPs) placeholder-source e placeholder-dest:

  • placeholder-source: uma instância com a mesma configuração da instância original da instância a mover. Isto permite-lhe restaurar as suas cópias de segurança para a configuração original se precisar de cancelar a mudança.

  • placeholder-dest: uma instância com a mesma configuração de instância que a configuração de instância de destino. Isto garante que tem uma cópia de segurança facilmente disponível na nova configuração imediatamente após a conclusão da mudança.

A funcionalidade de restauro não suporta restauros entre configurações. Por isso, estas instâncias de marcadores de posição são essenciais para uma reversão ou uma recuperação rápida na nova configuração, se necessário. Fornecem uma rede de segurança em caso de problemas com a instância movida.

Depois de copiar as cópias de segurança para placeholder-source e placeholder-dest, tem de eliminar todas as cópias de segurança existentes na configuração original da instância antes de poder mover a instância. Em seguida, após a conclusão da mudança da instância, já tem uma cópia da cópia de segurança na configuração de destino. Também pode criar uma nova cópia de segurança.

Ao seguir esta abordagem, garante a continuidade da empresa e minimiza o potencial tempo de inatividade ou perda de dados durante o processo de mudança da instância.

Como mover uma instância

Pode mover uma instância com a Google Cloud consola Cloud Shell e a CLI gcloud através de comandos gcloud.

Pré-requisitos

Antes de mover a configuração da instância, certifique-se de que leu as secções Limitações e Considerações de desempenho. Depois, siga estes passos:

  1. Verifique se tem a spanner.instances.update autorização do IAM na instância em movimento.
  2. Se aplicável, mova as instâncias de não produção (como teste e preparação) antes de mover as instâncias de produção para ajudar a avaliar e compreender o impacto no desempenho das cargas de trabalho durante uma movimentação de instâncias.
  3. Quando move uma instância do Spanner, o processo de movimento elimina as etiquetas da instância que criou no Data Catalog. Para preservar as suas etiquetas, tem de exportá-las antes da mudança e importá-las depois da mudança. Para mais informações, consulte o artigo Exporte e importe etiquetas.

Para conhecer as 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. Experimente mover uma instância de preparação semelhante à instância de produção para ter uma ideia do tempo que vai demorar a mover a instância de produção.
  • Verifique se existem hotspots nas suas bases de dados através do Key Visualizer.
  • Reveja para garantir que tem quota de nós suficiente na configuração da instância de destino para suportar o pico de utilização esperado da instância. Para mais informações, consulte o artigo Quotas e limites do Spanner.
  • Certifique-se de que a utilização da CPU máxima da sua instância é inferior a 40% para a configuração da instância que moveu e que a quantidade de armazenamento por nó é inferior a 1 tebibyte (TiB).
  • Não faça alterações à instância durante a mudança. Isto inclui alterar a contagem de nós da instância, alterar esquemas de bases de dados, criar ou eliminar bases de dados e criar ou eliminar cópias de segurança.

Se mover a sua instância de acordo com estas recomendações, a mudança normalmente é concluída no prazo de 24 horas. No entanto, dependendo da carga de trabalho da aplicação, o tempo de conclusão pode ser mais longo ou mais curto.

Mova uma instância

Google Cloud consola

  1. Aceda à página Instâncias na Google Cloud consola.

    Instâncias

  2. Selecione a instância que quer mover.

  3. Na página Descrição geral da instância, junto a Configuração, clique em editar Mover instância para uma nova configuração.

  4. No painel Mover base de dados para nova configuração, selecione a nova configuração da instância para a sua instância.

  5. Clique em Guardar.

CLI gcloud

Use o comando gcloud spanner instances move para mover a instância.

gcloud spanner instances move INSTANCE_ID \
--target-config=TARGET_CONFIG

Substitua o seguinte:

  • INSTANCE_ID: o identificador permanente da instância que quer mover.
  • TARGET_CONFIG: um identificador permanente da configuração da instância para onde quer mover a sua instância. A nova localização geográfica da sua instância. Esta pode ser uma configuração de instância regional, de duas regiões ou de várias regiões (por exemplo, nam3, regional-us-central1 ou custom-nam3-us-west2).

Por exemplo, para mover a 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 quiser adicionar uma réplica só de leitura na região us-west2 à configuração da instância base em nam3, faça o seguinte:

  1. Clone a configuração base e adicione a réplica só de 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_ONLY
    
  2. Mova a sua instância test-instance da configuração da instância atual para esta nova configuração da instância custom-nam3-us-west2:

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

Opcional: mova uma instância com bases de dados ativadas com CMEK

Use o comando gcloud spanner instances move para mover uma instância com bases de dados ativadas com CMEK. Tem de incluir o sinalizador --target-database-move-configs e os valores das chaves do KMS no comando ou configurar um ficheiro JSON ou YAML com as chaves do KMS necessárias.

Notas de utilização:

  • Se tiver várias bases de dados com a CMEK ativada na instância que quer mover, tem de especificar --target-database-move-configs para cada uma delas. Pode usar as mesmas chaves para todas as bases de dados, mas tem de especificar as chaves para cada base de dados ativada para CMEK.
  • As suas chaves têm de 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, tem de definir chaves em regional-us-east4, regional-us-east1 e regional-us-central1.
  • Não pode definir chaves do KMS para bases de dados que não tenham a CMEK ativada enquanto move a instância.
  • Não deve desativar nem destruir chaves CMEK na configuração da instância de origem ou de destino enquanto move a instância. Se tentar, a migração não é concluída.
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 ficheiro CONFIG_FILE_PATH com os IDs da base de dados e as chaves do KMS. O exemplo de ficheiro de configuração seguinte contém as chaves do KMS para duas bases de dados, database-1 e database-2, com as mesmas chaves em regional-us-east4, regional-us-east1 e regional-us-central1 para abranger 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 monitorizar o progresso da movimentação e do cancelamento de instâncias

Pode usar gcloud spanner operations describe ou criar um painel de controlo do Cloud Monitoring personalizado para monitorizar o progresso de uma mudança de instância.

Veja o progresso da operação de movimento e cancelamento

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

  1. Obtenha o ID da operação de movimento da instância executando o seguinte comando:

    gcloud spanner operations list --instance="INSTANCE_ID"
    

    Substitua o seguinte:

    • INSTANCE_ID: o identificador permanente da instância que quer mover.

    A saída mostra uma lista de operações de longa duração, incluindo a operação de movimento da instância.

  2. Execute o comando gcloud spanner operations describe para ver a percentagem de progresso e o estado:

    gcloud spanner operations describe OPERATION_ID --instance=INSTANCE_ID
    

    Substitua o seguinte:

    • OPERATION_ID: o ID da operação de movimento da instância que quer verificar.
    • INSTANCE_ID: o ID da instância que quer verificar.

Monitorize uma operação de movimento de instância

Pode criar um painel de controlo personalizado do Cloud Monitoring para apresentar e monitorizar métricas durante a movimentação da instância, uma operação de longa duração com potenciais implicações no serviço.

Os gráficos Armazenamento total e Armazenamento total da base de dados por bases de dados no painel de controlo são úteis para monitorizar o progresso da mudança. Pode ver o armazenamento na configuração de origem diminuir gradualmente enquanto o armazenamento na configuração de destino aumenta.

Google Cloud consola

  1. Transfira o ficheiro move-instance-dashboard.json. Este ficheiro tem as informações necessárias para preencher um painel de controlo personalizado na monitorização.
  2. Na Google Cloud consola, aceda à página  Painéis de controlo:

    Aceda a Painéis de controlo

    Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.

  3. Na página Vista geral dos painéis de controlo, clique em Criar painel de controlo.
  4. Na barra de ferramentas do painel de controlo, clique no menu pendente Definições do painel de controlo. Em seguida, selecione JSON e, depois, Editor de JSON.
  5. No painel Editor JSON, copie o conteúdo do ficheiro move-instance-dashboard.json que transferiu e cole-o no editor.
  6. Para aplicar as alterações ao painel de controlo, clique em Aplicar alterações. Se não quiser usar este painel de controlo, navegue novamente para a página Vista geral dos painéis de controlo.
  7. Depois de criar o painel de controlo, clique em Adicionar filtro. Em seguida, selecione project_id ou instance_id para monitorizar o progresso da movimentação da instância.

CLI gcloud

  1. Transfira o ficheiro move-instance-dashboard.json. Este ficheiro tem as informações necessárias para preencher um painel de controlo personalizado na monitorização.
  2. Para criar um painel de controlo num 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 gcloud monitoring dashboards create referência.

Como cancelar a movimentação de uma instância

Só pode cancelar uma mudança de instância que ainda esteja em curso. Se quiser reverter um movimento de instância já concluído, tem de iniciar um novo movimento.

Pode usar gcloud spanner operations cancel para cancelar operações de movimento de instâncias. O cancelamento não é instantâneo e demora aproximadamente o mesmo tempo que decorreu desde o início da mudança. Isto deve-se ao facto de os dados terem de ser movidos novamente para a configuração da instância de origem.

Este comando requer o ID da operação de movimento da instância em curso.

  1. Execute o seguinte comando para obter o ID da operação:

    gcloud spanner operations list --type=INSTANCE --instance="INSTANCE_ID"
    --filter="done:False AND metadata.@type:MoveInstanceMetadata
    

    Substitua o seguinte:

    • INSTANCE_ID: o identificador permanente da instância que quer mover.

    A saída mostra uma lista de operações de movimento de instâncias em curso.

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

    gcloud spanner operations cancel OPERATION_ID
    

    Substitua o seguinte:

    • OPERATION_ID: o ID da operação de movimento da instância que quer cancelar.

O que se segue?