Sposta un'istanza

Questa pagina descrive lo spostamento di un'istanza in Spanner.

Puoi spostare l'istanza Spanner da qualsiasi configurazione a qualsiasi altra configurazione dell'istanza, incluse le configurazioni regionali, a due regioni e multiregionali. Il trasferimento dell'istanza non causa tempi di riposo e Spanner continua a fornire le consuete garanzie di transazione, inclusa elevata coerenza, durante il trasferimento.

Puoi anche spostare l'istanza dalla configurazione dell'istanza di origine a una configurazione dell'istanza personalizzata (ad esempio una configurazione di base nam3 con una replica di sola lettura us-west2). Poiché non puoi aggiornare la topologia delle configurazioni di istanze esistenti, devi prima creare una nuova configurazione dell'istanza personalizzata con la topologia che preferisci. Dopo aver creato la nuova configurazione dell'istanza personalizzata, puoi spostare l'istanza dalla configurazione dell'istanza di origine alla nuova configurazione dell'istanza personalizzata.

Perché spostare l'istanza Spanner?

I vantaggi del trasferimento dell'istanza includono:

  • Aumenta la disponibilità: ottieni una disponibilità del 99,999% senza tempi di inattività dopo aver eseguito il trasferimento da una regione a due regioni o a più regioni.
  • Riduci la latenza: riduci la latenza e aumenta la copertura geografica con altre repliche di sola lettura tramite un trasferimento da una regione a due regioni o da una regione a più regioni o da più regioni a più regioni.
  • Riduci i costi: riduci i costi orari passando da una configurazione a due regioni o multiregionale a una configurazione regionale.
  • Database in co-locazione: colloca il database Spanner con l'applicazione client spostando l'istanza in una posizione più ottimizzata.

Prezzi

Quando sposti un'istanza, sia le configurazioni dell'istanza di origine che quelle dell'istanza di destinazione sono soggette a addebiti orari per l'elaborazione e lo spazio di archiviazione. Al termine del trasferimento, ti verrà addebitato lo spazio di archiviazione dell'istanza nella configurazione di destinazione.

Se stai spostando l'istanza in una nuova configurazione di istanze regionali, a due regioni o multiregionali, potresti essere soggetto a costi di trasferimento di dati in uscita. Per ulteriori informazioni, consulta Prezzi di Spanner.

Limitazioni

  • Per spostare l'istanza, è necessario disporre di almeno 1 nodo (1000 unità di elaborazione).
  • Non puoi spostare l'istanza tra progetti e account Google Cloud .
  • Non puoi spostare un'istanza che utilizza la versione Standard direttamente da una configurazione di istanze regionali a una configurazione di istanze a due o più regioni. Devi prima eseguire l'upgrade della versione della tua istanza alla versione Enterprise Plus, quindi muoverla.
  • Non puoi spostare un'istanza di prova gratuita di Spanner. Puoi spostare l'istanza dopo aver eseguito l'upgrade a un'istanza a pagamento.
  • Se hai richieste attive che utilizzano un endpoint di servizio a livello di regione su una delle risorse dell'istanza, il trasferimento dell'istanza influisce su tutte le richieste che utilizzano l'endpoint regionale perché l'applicazione delle norme a livello di regione blocca l'accesso alle istanze tra regioni. Le richieste che utilizzano un endpoint globale non sono interessate.
  • I backup di Spanner sono specifici di una configurazione dell'istanza e non sono inclusi durante lo spostamento di un'istanza. Per ulteriori informazioni, consulta Backup.
  • Le seguenti API vengono disattivate durante lo spostamento di un'istanza:
    • InstanceAdmin.DeleteInstance
    • InstanceAdmin.UpdateInstance
    • DatabaseAdmin.CreateDatabase
    • DatabaseAdmin.UpdateDatabaseDdl (disattivato se default_leader è specificato nella richiesta).
    • DatabaseAdmin.RestoreDatabase
    • DatabaseAdmin.CreateBackup
    • DatabaseAdmin.CreateBackupSchedule
    • DatabaseAdmin.CopyBackup
  • Non puoi spostare le istanze che contengono database CMEK abilitati.
  • Se un database ha un leader predefinito modificato, la selezione viene conservata se nella configurazione dell'istanza di destinazione viene indicata una regione di lettura/scrittura e questa configurazione è multiregione. Se la configurazione di destinazione è regionale o non include la regione di lettura/scrittura denominata, la selezione del leader predefinito viene cancellata.
  • Il trasferimento di un'istanza modifica l'attributo di configurazione dell'istanza. Se gestisci le risorse Spanner tramite l'automazione, assicurati di preparare e risolvere eventuali incoerenze che potrebbero verificarsi.
    • Ad esempio, se utilizzi Terraform per gestire le istanze e i database Spanner e attivi terraform apply --auto-approve per mantenere sincronizzate le risorse, tutte le istanze e le risorse secondarie vengono eliminate quando spostiamo l'istanza. Aggiorna la configurazione di conseguenza per evitare l'eliminazione e la perdita di dati. Per ulteriori informazioni sul comando apply, consulta Opzioni di applicazione di Terraform.
  • Durante lo spostamento dell'istanza, le metriche e i grafici di monitoraggio di Spanner potrebbero mostrare i dati sia nelle configurazioni dell'istanza di origine sia in quelle di destinazione oppure potrebbero riflettere solo le prestazioni in una configurazione dell'istanza.
  • Se hai configurato lo strumento Autoscaler open source, non è necessario disattivarlo. L'operazione non riesce perché InstanceAdmin.UpdateInstance (utilizzato per le modifiche ai nodi e alle unità di elaborazione) è disattivato.
  • Non puoi spostare un'istanza se la funzionalità di autoscaling gestito di Spanner è attivata. Per spostare l'istanza, devi disattivare il gestore della scalabilità automatica gestito, spostare l'istanza e riattivare il gestore della scalabilità automatica gestito.

    Inoltre, se utilizzi la scalabilità automatica, devi eseguire il provisioning di un numero sufficiente di nodi per l'utilizzo massimo della CPU in base ai consigli massimi indicati, quindi disattivare la scalabilità automatica prima di spostare l'istanza.

Considerazioni sulle prestazioni

Durante lo spostamento di un'istanza, le latenze di lettura/scrittura sono più elevate e il tasso di interruzione delle transazioni è maggiore. L'utilizzo della CPU durante il trasferimento potrebbe aumentare fino al 100% perché il trasferimento dell'istanza viene eseguito utilizzando la CPU di riserva di cui è stato eseguito il provisioning dall'utente. Tuttavia, lo spostamento di un'istanza non causa tempi di inattività. Il tempo necessario per spostare un'istanza dipende da vari fattori, tra cui le dimensioni dei database, il numero di nodi e il tipo di spostamento (ad es. da regionale a multi-regionale).

Dopo lo spostamento di un'istanza, il rendimento dell'istanza varia in base ai dettagli della configurazione dell'istanza. Ad esempio, le configurazioni a due regioni e multi-regione in genere hanno una latenza di scrittura più elevata e una latenza di lettura inferiore rispetto alle configurazioni regionali.

Backup

Quando sposti un'istanza, i backup nell'istanza di origine non vengono spostati automaticamente nella nuova configurazione di destinazione. Il trasferimento dell'istanza viene interrotto se esistono backup nella configurazione dell'istanza di origine quando avvii il trasferimento. È importante copiare i backup e prendere in considerazione il piano di recupero dei dati prima di spostare l'istanza.

Se nell'istanza di origine sono presenti backup che devi conservare, ti consigliamo di copiarli nella configurazione dell'istanza di destinazione e in un'altra istanza con la stessa configurazione dell'istanza di origine da spostare. In questo modo:

  • Puoi copiare i backup nella configurazione dell'istanza di destinazione immediatamente al termine del trasferimento dell'istanza.
  • Se devi annullare lo spostamento dell'istanza, puoi anche ripristinare rapidamente i backup dall'istanza con la stessa configurazione dell'istanza di origine.

Dopo aver copiato i backup in un'altra istanza, devi eliminare eventuali backup esistenti nell'istanza di origine prima di poter spostare l'istanza. Al termine del trasferimento dell'istanza, avrai già una copia del backup nella configurazione di destinazione. Puoi anche creare un nuovo backup.

Per scoprire di più sulla copia dei backup e sui costi associati, consulta Copiare un backup.

Come spostare un'istanza

Puoi spostare un'istanza con Cloud Shell della console Google Cloud e gcloud CLI utilizzando i comandi gcloud.

Prerequisiti

Prima di spostare la configurazione dell'istanza, assicurati di aver letto le sezioni Limitazioni e Considerazioni sul rendimento. Poi segui questi passaggi:

  1. Verifica di disporre dell'spanner.instances.update autorizzazione IAM sull'istanza di origine.
  2. Se applicabile, sposta le istanze non di produzione (ad esempio di test e di staging) prima di spostare le istanze di produzione per contribuire a valutare e comprendere l'impatto del rendimento sui carichi di lavoro durante lo spostamento delle istanze.
  3. Quando sposti un'istanza Spanner, il processo di spostamento elimina i tag istanza che hai creato in Data Catalog. Per conservare i tag, devi esportarli prima del trasferimento e importarli dopo. Per ulteriori informazioni, consulta Esportare e importare i tag.

Per le best practice, segui anche queste linee guida:

  • Testa i carichi di lavoro relativi al rendimento nelle istanze non di produzione nella configurazione dell'istanza di destinazione prima di spostare l'istanza di produzione. Prova a spostare un'istanza di staging simile a quella di produzione per avere un'idea del tempo necessario per spostare l'istanza di produzione.
  • Verifica che non siano presenti hotspot nei tuoi database utilizzando Key Visualizer.
  • Verifica di disporre di quota del nodo sufficiente nella configurazione dell'istanza di destinazione per supportare il picco di utilizzo previsto dell'istanza. Per ulteriori informazioni, consulta Quote e limiti di Spanner.
  • Assicurati che l'utilizzo della CPU di picco della tua istanza sia inferiore al 40% per la configurazione dell'istanza spostata e che la quantità di spazio di archiviazione per nodo sia inferiore a 1 Tebibyte (TiB).
  • Non apportare modifiche all'istanza durante lo spostamento. Sono incluse la modifica del numero di nodi dell'istanza, la modifica degli schemi di database, la creazione o l'eliminazione di database e la creazione o l'eliminazione di backup.

Se sposti l'istanza in base a questi consigli, lo spostamento solitamente viene completato entro 24 ore. Tuttavia, a seconda del carico di lavoro dell'applicazione, il tempo di completamento potrebbe essere più lungo o più breve.

Sposta un'istanza

Google Cloud console

  1. Fai clic su Attiva l'icona di Cloud Shell Attiva Cloud Shell nella parte superiore della console Google Cloud .

    All'interno di un nuovo frame nella parte inferiore della console Google Cloud si apre una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. L'inizializzazione della sessione può richiedere alcuni secondi.

  2. Utilizza il comando gcloud spanner instances move per spostare l'istanza.

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

    Sostituisci quanto segue:

    • INSTANCE_ID: l'identificatore permanente dell'istanza che vuoi spostare.
    • TARGET_CONFIG: un identificatore permanente della configurazione dell'istanza in cui vuoi spostare l'istanza. La nuova posizione geografica della tua istanza. Può essere una configurazione a livello di regione, a due regioni, per più regioni o personalizzata (ad esempio nam3, us-central1 o custom-nam3-us-west2).

Ad esempio, per spostare l'istanza test-instance dalla configurazione attuale a nam3, esegui quanto segue:

  gcloud spanner instances move test-instance --target-config=nam3

(Facoltativo) Se vuoi aggiungere una replica di sola lettura, us-west2, alla configurazione dell'istanza di base nam3:

  1. Clona la configurazione di base e aggiungi la replica di sola lettura:

    gcloud spanner instance-configs create custom-nam3-us-west2 \
    --clone-config=nam3 --add-replicas=location=us-west2, type=READ_ONLY
    
  2. Sposta l'istanza test-instance dalla sua configurazione attuale a questa nuova configurazione dell'istanza custom-nam3-us-west2:

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

Interfaccia a riga di comando gcloud

Utilizza il comando gcloud spanner instances move per spostare l'istanza.

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

Sostituisci quanto segue:

  • INSTANCE_ID: l'identificatore permanente dell'istanza che vuoi spostare.
  • TARGET_CONFIG: un identificatore permanente della configurazione dell'istanza in cui vuoi spostare l'istanza. La nuova posizione geografica della tua istanza. Può essere una configurazione di istanze a livello di regione, a due regioni o per più regioni (ad esempio nam3, us-central1 o custom-nam3-us-west2).

Ad esempio, per spostare l'istanza test-instance dalla configurazione attuale a nam3, esegui quanto segue:

  gcloud spanner instances move test-instance --target-config=nam3

(Facoltativo) Se vuoi aggiungere una replica di sola lettura, us-west2, alla configurazione dell'istanza di base nam3:

  1. Clona la configurazione di base e aggiungi la replica di sola lettura:

    gcloud spanner instance-configs create custom-nam3-us-west2 \
    --clone-config=nam3 --add-replicas=location=us-west2, type=READ_ONLY
    
  2. Sposta l'istanza test-instance dalla sua configurazione attuale a questa nuova configurazione dell'istanza custom-nam3-us-west2:

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

Come monitorare l'avanzamento dello spostamento e dell'annullamento delle istanze

Puoi utilizzare gcloud spanner operations describe o creare una dashboard personalizzata di Cloud Monitoring per monitorare lo stato di avanzamento del trasferimento di un'istanza.

Visualizzare l'avanzamento delle operazioni di trasferimento e annullamento

Per monitorare l'avanzamento di un'operazione di spostamento o annullamento dello spostamento di un'istanza, utilizza il comando gcloud spanner operations describe. Questo comando richiede l'ID operazione dello spostamento dell'istanza in corso.

  1. Per recuperare l'ID operazione per lo spostamento dell'istanza, esegui:

    gcloud spanner operations list --instance="INSTANCE_ID"
    

    Sostituisci quanto segue:

    • INSTANCE_ID: l'identificatore permanente dell'istanza che vuoi spostare.

    L'output mostra un elenco di operazioni a lunga esecuzione, inclusa l'operazione di trasferimento dell'istanza.

  2. Esegui il comando gcloud spanner operations describe per visualizzare la percentuale di avanzamento e lo stato:

    gcloud spanner operations describe OPERATION_ID --instance=INSTANCE_ID
    

    Sostituisci quanto segue:

    • OPERATION_ID: l'ID operazione del trasferimento dell'istanza che vuoi controllare.
    • INSTANCE_ID: l'ID istanza dell'istanza che vuoi controllare.

Monitorare un'operazione di spostamento di un'istanza

Puoi creare una dashboard Cloud Monitoring personalizzata per visualizzare e monitorare le metriche durante lo spostamento dell'istanza, un'operazione a lunga esecuzione con potenziali implicazioni per il servizio.

I grafici Spazio di archiviazione totale e Spazio di archiviazione totale del database per database nella dashboard sono utili per monitorare lo stato di avanzamento del trasferimento. Puoi vedere che lo spazio di archiviazione nella configurazione di origine diminuisce gradualmente, mentre quello nella configurazione di destinazione aumenta.

Google Cloud console

  1. Scarica il file move-instance-dashboard.json. Questo file contiene le informazioni necessarie per compilare una dashboard personalizzata in Monitoraggio.
  2. Nella console Google Cloud , vai alla pagina  Dashboard:

    Vai a Dashboard

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.

  3. Nella pagina Panoramica delle dashboard, fai clic su Crea dashboard.
  4. Nella barra degli strumenti della dashboard, fai clic sul menu a discesa Impostazioni dashboard. Quindi, selezionare JSON e poi Editor JSON.
  5. Nel riquadro Editor JSON, copia i contenuti del file move-instance-dashboard.json che hai scaricato e incollali nell' editor.
  6. Per applicare le modifiche alla dashboard, fai clic su Applica modifiche. Se non vuoi utilizzare questa dashboard, torna alla pagina Panoramica delle dashboard.
  7. Dopo aver creato la dashboard, fai clic su Aggiungi filtro. Quindi seleziona project_id o instance_id per monitorare l'avanzamento del trasferimento dell'istanza.

Interfaccia a riga di comando gcloud

  1. Scarica il file move-instance-dashboard.json. Questo file contiene le informazioni necessarie per compilare una dashboard personalizzata in Monitoraggio.
  2. Per creare una dashboard in un progetto, utilizza il comando gcloud monitoring dashboards create:

    gcloud monitoring dashboards create --config-from-file=move-instance-dashboard.json
    

    Per ulteriori informazioni, consulta la documentazione di riferimento di gcloud monitoring dashboards create.

Come annullare lo spostamento di un'istanza

Puoi annullare solo lo spostamento di un'istanza ancora in corso. Se vuoi ripristinare uno spostamento di istanze già completato, devi avviarne uno nuovo.

Puoi utilizzare gcloud spanner operations cancel per annullare le operazioni di spostamento delle istanze. L'annullamento non è istantaneo e richiede all'incirca lo stesso tempo trascorso dall'inizio del trasferimento. Questo perché i dati devono essere spostati di nuovo nella configurazione dell'istanza di origine.

Questo comando richiede l'ID operazione dello spostamento dell'istanza in corso.

  1. Recupera l'ID operazione eseguendo:

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

    Sostituisci quanto segue:

    • INSTANCE_ID: l'identificatore permanente dell'istanza che vuoi spostare.

    L'output mostra un elenco di operazioni di spostamento delle istanze in corso.

  2. Esegui il comando gcloud spanner operations cancel per annullare il trasferimento dell'istanza:

    gcloud spanner operations cancel OPERATION_ID
    

    Sostituisci quanto segue:

    • OPERATION_ID: l'ID operazione del trasferimento dell'istanza che vuoi annullare.

Passaggi successivi