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, 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 de instância 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 sua 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.
- Reduzir latência: reduza a latência e aumente a cobertura geográfica com o réplicas somente leitura adicionais por meio de uma região regional para birregional ou multirregional ou multirregião para multirregião.
- Reduzir custos: reduza os custos por hora passando de uma configuração de região dupla ou multirregião para uma configuração regional.
- Colocar banco de dados: colocar 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 horárias. Quando a migração for concluída, você será cobrado pelo armazenamento da instância no configuração de destino.
Se você estiver movendo sua instância para um novo local regional, birregional ou multirregional configuração da instância, você 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 deve ter um mínimo de 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 que usa a edição Standard diretamente de uma configuração de instância regional para uma instância birregional ou configuração de instância 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. É 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 afeta 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 de instância e não são incluídos na movimentação de uma instância. Para Para mais informações, consulte Backups.
- As seguintes APIs são desativadas durante uma movimentação de instância:
InstanceAdmin.DeleteInstance
InstanceAdmin.UpdateInstance
DatabaseAdmin.CreateDatabase
DatabaseAdmin.UpdateDatabaseDdl
(desativado sedefault_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 incluem a região de leitura/gravação nomeada, a seleção líder padrão será limpos.
- Mover uma instância altera o atributo de configuração da instância
instância. Se você gerencia os recursos do Spanner por
automação, prepare e resolva quaisquer inconsistências que possam
surgir.
- Por exemplo, se você usar o Terraform para
gerenciar instâncias e bancos de dados do Spanner e
ative
terraform apply --auto-approve
para manter seus recursos sincronizados todas as instâncias e recursos filhos são excluídos quando a instância é movida. Atualize a configuração para evitar exclusão e perda de dados. Consulte Opções de aplicação do Terraform para mais informações sobre o comandoapply
.
- Por exemplo, se você usar o Terraform para
gerenciar instâncias e bancos de dados do Spanner e
ative
- 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
será 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, é preciso desativar o escalonador automático gerenciado, mover a instância e reativar o escalonador automático.
Além disso, se você estiver usando o escalonamento automático, você precisa provisionar nós suficientes para o uso máximo da CPU de acordo com o as recomendações máximas observadas e, em seguida, 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 horário para mover uma instância depende de vários fatores, incluindo o tamanho bancos de dados, o número de nós e o tipo de mudança (por exemplo, regional para multirregional).
Depois de mover uma instância, o desempenho dela varia de acordo com os detalhes da configuração. Por exemplo: birregional e configurações multirregionais geralmente têm maior latência de gravação e menor latência de leitura 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 automaticamente. A movimentação da instância será cancelada se Há backups na configuração da instância de origem quando ela é iniciada se moverem. É 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 mudança.
- 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 seus backups para outra instância, é necessário excluir na instância de origem antes de movê-la. Depois que a migração 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 usando o Cloud Shell do console do Google Cloud e
a CLI gcloud usando comandos gcloud
.
Pré-requisitos
Antes de mover a configuração da instância, verifique se você leia as Limitações e Considerações sobre desempenho em outras seções. Em seguida, siga estas etapas:
- Verifique se você tem a permissão IAM
spanner.instances.update
na instância de origem. - Se aplicável, mova as instâncias que não são de produção. (como teste e preparo) antes de mover as instâncias de produção para ajudar avaliar e entender o impacto no desempenho das cargas de trabalho durante uma instância se moverem.
- Quando você move uma instância do Spanner, o processo de movimentação exclui as tags de instância criadas no Data Catalog. Para preservar sua você precisará exportá-las antes da movimentação e importá-las após a movimentação. Para mais informações, consulte Exportar e importar tags.
Para práticas recomendadas, siga também estas diretrizes:
- Teste as 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. Testar 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 dar suporte ao pico de uso esperado da instância. Para mais informações, consulte Cotas e limites do Spanner.
- Verifique se o uso máximo da CPU de sua instância for menor que 40% para a configuração da instância movida e a quantidade de armazenamento por nó for menor que 1 tebibyte (TiB);
- Não faça mudanças na instância durante a mudança. Isso inclui alterar o número de nós da instância, alterar esquemas do banco de dados, criação ou eliminação de bancos de dados e criação ou exclusão de backups.
Se você mover sua instância de acordo com essas recomendações, a migração geralmente é 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
Console do Google Cloud
Clique em Ativar o Cloud Shell na parte de cima do console do Google Cloud.
Uma sessão do Cloud Shell é aberta em um novo frame no na parte de baixo do console do Google Cloud e mostra um prompt de linha de comando. 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 que você quer mover.
- TARGET_CONFIG: um identificador permanente da instância.
configuração para onde quer mover a instância. A nova área geográfica
o local da instância. Pode ser regional, birregional,
multirregional ou de instância personalizada (por exemplo,
nam3
,us-central1
oucustom-nam3-us-west2
).
Por exemplo, para mover a instância test-instance
da atual
configuração da instância como 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
, à base
configuração da instância 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 a nova configuraçãocustom-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 que você quer mover.
- TARGET_CONFIG: um identificador permanente da instância.
configuração para onde quer mover a instância. O novo local geográfico da sua instância. Pode ser regional, birregional ou
configuração de instância multirregional (por exemplo,
nam3
,us-central1
, oucustom-nam3-us-west2
).
Por exemplo, para mover a instância test-instance
da atual
configuração da instância como 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
, à base
configuração da instância 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 a nova configuraçãocustom-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
Você pode usar gcloud spanner operations describe
ou criar um
Painel 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 movimentação ou cancelamento de movimentação de uma instância
operação, use o método gcloud spanner operations describe
kubectl. Esse comando exige o ID da operação da migração da instância em andamento.
operação
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ê querem se mover.
A saída mostra uma lista de operações de longa duração, incluindo a operação de mover instância.
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 verificação.
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.
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. Depois, Selecione JSON e, em seguida, Editor do JSON.
- No painel Editor JSON, copie o conteúdo do
arquivo
move-instance-dashboard.json
que você fez o download e cole no editor. - Para aplicar as mudanças ao painel, clique em Aplicar alterações. Se você não quiser usar esse painel, volte à 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 progresso da instância. se moverem.
CLI da gcloud
- Faça o download do
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 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.
Você pode usar o 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 a
início da mudança. Isso ocorre porque os dados precisam ser movidos de volta para a instância de origem
configuração do Terraform.
Esse comando exige o ID da operação da migração da instância em andamento. operação
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ância em andamento.
Execute o comando
gcloud spanner operations cancel
para cancelar a instância mover:gcloud spanner operations cancel OPERATION_ID
Substitua:
- OPERATION_ID: o ID da operação de mover instância que você quer cancelar.
A seguir
- Saiba mais sobre o Spanner Configurações regionais, birregionais e multirregionais.
- Saiba mais sobre regiões e zonas do Google Cloud.