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 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 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:
- 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, 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 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 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, 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 e multirregionais do Spanner.
- Saiba mais sobre as regiões e zonas do Google Cloud.