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 configuração de instância, inclusive entre configurações regionais, birregionais e multirregionais. A migração da instância não causa inatividade, e o Spanner continua a fornecer as garantias de transação normais 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 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 mudança regional para birregional, multirregional ou multirregional para multirregional.
- Reduzir custos: reduza os custos por hora mudando de uma configuração birregional ou 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ê mover sua 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 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 sedefault_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 comandoapply
.
- Por exemplo, se você usar o Terraform para gerenciar as instâncias e os bancos de dados do Spanner e ativar o
- 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 desempenho
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 birregionais e 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:
- Verifique se você tem a permissão do IAM
spanner.instances.update
na instância de origem. - 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.
- 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
Clique em
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.
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, birregional,
multirregional ou personalizada (por exemplo,
nam3
,us-central1
oucustom-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:
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
Mova a instância
test-instance
da configuração atual para esta nova configuração de instânciacustom-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, birregional ou
multirregional (por exemplo,
nam3
,us-central1
oucustom-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:
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
Mova a instância
test-instance
da configuração atual para esta nova configuração de instânciacustom-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.
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.
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
- 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. -
No console do Google Cloud, acesse a página
Painéis:
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoramento.
- 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, seguido por JSON Editor.
- No painel JSON Editor, copie o conteúdo do
arquivo
move-instance-dashboard.json
que você salvou e cole no editor. - 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".
- Depois que o painel for criado, clique em Adicionar filtro. Em seguida, selecione
project_id
ouinstance_id
para monitorar o andamento da movimentação da instância.
CLI da gcloud
- 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. 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.
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.
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
- Saiba mais sobre as configurações regionais, birregionais e multirregionais do Spanner.
- Saiba mais sobre as regiões e zonas do Google Cloud.