Sposta un'istanza

Questa pagina descrive come spostare un'istanza in Spanner.

Puoi spostare l'istanza Spanner da qualsiasi configurazione dell'istanza a qualsiasi altra configurazione dell'istanza, incluse le configurazioni regionali, a due regioni e multiregionali. Lo spostamento dell'istanza non causa tempi di inattività e Spanner continua a fornire le consuete garanzie di transazione, inclusa l'elevata coerenza, durante lo spostamento.

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 delle 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 dello spostamento dell'istanza includono:

  • Aumentare la disponibilità: ottieni una disponibilità del 99,999% senza tempi di inattività dopo aver eseguito uno spostamento da una regione a due regioni o multiregionale.
  • Ridurre la latenza: riduci la latenza e aumenta la copertura geografica con repliche di sola lettura aggiuntive tramite uno spostamento da una regione a due regioni o multiregionale o da una regione multiregionale a una regione multiregionale.
  • Ridurre i costi: riduci i costi orari passando da una configurazione a due regioni o multiregionale a una configurazione regionale.
  • Collocare il database: colloca il database Spanner con l' applicazione client spostando l'istanza in una località più ottimizzata.

Prezzi

Quando sposti un'istanza, sia la configurazione dell'istanza di origine che quella di destinazione sono soggette a costi orari di calcolo e spazio di archiviazione. Al termine dello spostamento, ti viene addebitato lo spazio di archiviazione dell'istanza nella configurazione di destinazione.

Se sposti l'istanza in una nuova configurazione dell'istanza regionale, a due regioni o multiregionale, potresti essere soggetto a costi di trasferimento dei dati in uscita. Per ulteriori informazioni, consulta i prezzi di Spanner.

Limitazioni

  • Per spostare l'istanza, deve avere un minimo di 1 nodo (1000 unità di elaborazione).
  • Non puoi spostare l'istanza tra progetti e Google Cloud account.
  • Non puoi spostare un'istanza che utilizza la versione Standard direttamente da una configurazione dell'istanza regionale a una configurazione dell'istanza a due regioni o multiregionale. Devi prima eseguire l'upgrade della versione dell'istanza alla versione Enterprise Plus e poi spostare l'istanza.
  • Se hai richieste attive che utilizzano un endpoint di servizio regionale su una delle risorse dell'istanza, lo spostamento dell'istanza influisce su tutte le richieste che utilizzano l'endpoint regionale perché l'applicazione regionale blocca l'accesso alle istanze tra regioni. Le richieste che utilizzano un endpoint globale non sono interessate.
  • I backup di Spanner sono specifici per una configurazione dell'istanza e non sono inclusi quando sposti un'istanza. Per ulteriori informazioni, vedi Backup.
  • Le seguenti API sono disabilitate durante lo spostamento di un'istanza:
    • InstanceAdmin.DeleteInstance
    • InstanceAdmin.UpdateInstance
    • InstanceAdmin.CreateInstancePartition
    • InstanceAdmin.UpdateInstancePartition
    • InstanceAdmin.DeleteInstancePartition
    • DatabaseAdmin.CreateDatabase
    • DatabaseAdmin.UpdateDatabaseDdl (disabilitata se default_leader è specificato nella richiesta.)
    • DatabaseAdmin.RestoreDatabase
    • DatabaseAdmin.CreateBackup
    • DatabaseAdmin.CreateBackupSchedule
    • DatabaseAdmin.CopyBackup
  • Se un database ha un leader predefinito modificato, la selezione viene mantenuta se nomina una regione di lettura/scrittura nella configurazione dell'istanza di destinazione e se la configurazione è multiregionale. Se la configurazione di destinazione è regionale o non include la regione di lettura/scrittura denominata, la selezione del leader predefinito viene cancellata.
  • Lo spostamento di un'istanza modifica l'attributo di configurazione dell'istanza 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 abiliti terraform apply --auto-approve per mantenere le risorse sincronizzate, 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 nella configurazione dell'istanza di origine che in quella di destinazione oppure potrebbero riflettere solo le prestazioni in una configurazione dell'istanza.
  • Se hai configurato lo strumento Autoscaler open source, non devi disattivarlo. L'operazione non riesce perché InstanceAdmin.UpdateInstance (utilizzata per le modifiche di nodi e unità di elaborazione) è disabilitata.
  • Non puoi spostare un'istanza se è abilitata la funzionalità di scalabilità automatica gestita di Spanner. Per spostare l'istanza, devi disabilitare la scalabilità automatica gestita, spostare l'istanza e poi riattivarla.
    • Inoltre, se utilizzi la scalabilità automatica, devi eseguire il provisioning di un numero sufficiente di nodi per l'utilizzo massimo della CPU in base alle raccomandazioni massime indicate, quindi disattivare la scalabilità automatica prima di spostare l'istanza.
  • Non puoi spostare un'istanza di prova senza costi di Spanner. Puoi spostare l'istanza dopo aver eseguito l'upgrade a un'istanza a pagamento.
  • Se l'istanza utilizza il partizionamento geografico, allora lo spostamento dell'istanza sposta solo la partizione dell'istanza predefinita, non le partizioni dell'istanza aggiuntive.

Considerazioni sulle prestazioni

Quando un'istanza viene spostata, si verificano latenze di lettura/scrittura più elevate e un tasso di interruzione delle transazioni più elevato. L'utilizzo della CPU durante lo spostamento potrebbe raggiungere il 100% perché lo spostamento 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 multiregionale).

Dopo aver spostato un'istanza, le prestazioni dell'istanza variano a seconda dei dettagli della configurazione dell'istanza. Ad esempio, le configurazioni a due regioni e multiregionali 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 nella configurazione originale dell'istanza non vengono spostati automaticamente nella nuova configurazione di destinazione. Lo spostamento dell'istanza viene interrotto se esistono backup nella configurazione originale dell'istanza quando avvii lo spostamento dell'istanza. È importante copiare i backup e considerare il piano di ripristino dei dati prima di spostare l'istanza.

Se nella configurazione originale dell'istanza sono presenti backup che devi conservare, ti consigliamo di copiarli in due piccole istanze temporanee (100 unità di elaborazione), placeholder-source e placeholder-dest:

  • placeholder-source: un'istanza con la stessa configurazione dell'istanza della configurazione originale dell'istanza in movimento. In questo modo puoi ripristinare i backup nella configurazione originale se devi annullare lo spostamento.

  • placeholder-dest: un'istanza con la stessa configurazione dell'istanza della configurazione dell'istanza di destinazione. In questo modo, avrai un backup disponibile nella nuova configurazione immediatamente dopo il completamento dello spostamento.

La funzionalità di ripristino non supporta i ripristini tra configurazioni, pertanto queste istanze segnaposto sono essenziali per un rollback o un ripristino rapido nella nuova configurazione, se necessario, fornendo una rete di sicurezza in caso di problemi con l'istanza spostata.

Dopo aver copiato i backup in placeholder-source e placeholder-dest, devi eliminare tutti i backup esistenti nella configurazione originale dell'istanza prima di poter spostare l'istanza. Poi, al termine dello spostamento dell'istanza, avrai già una copia del backup nella configurazione di destinazione. Puoi anche creare un nuovo backup.

Seguendo questo approccio, garantisci la continuità operativa e riduci al minimo i potenziali tempi di inattività o la perdita di dati durante il processo di spostamento dell'istanza.

Come spostare un'istanza

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

Prerequisiti

Prima di spostare la configurazione dell'istanza, assicurati di aver letto le sezioni Limitazioni e Considerazioni sulle prestazioni. Quindi, segui questi passaggi:

  1. Verifica di disporre dell'spanner.instances.update autorizzazione IAM sull'istanza in movimento.
  2. Se applicabile, sposta le istanze non di produzione (ad esempio test e staging) prima di spostare le istanze di produzione per valutare e comprendere l'impatto sulle prestazioni dei workload durante lo spostamento di un'istanza.
  3. Quando sposti un'istanza Spanner, il processo di spostamento elimina i tag dell'istanza che hai creato in Data Catalog. Per conservare i tag, devi esportarli prima dello spostamento e importarli dopo lo spostamento. Per ulteriori informazioni, vedi Esportare e importare tag.

Per le best practice, segui anche queste linee guida:

  • Testa i workload di prestazioni 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 all'istanza di produzione per farti un'idea di quanto tempo ci vorrà per spostare l'istanza di produzione.
  • Verifica che non ci siano hotspot nei database utilizzando il Key Visualizer.
  • Esamina per assicurarti di avere una quota di nodi sufficiente nella configurazione dell'istanza di destinazione per supportare l'utilizzo massimo previsto dell'istanza. Per ulteriori informazioni, vedi Quote e limiti di Spanner.
  • Assicurati che l'utilizzo massimo della CPU dell' istanza sia inferiore al 40% per la configurazione dell'istanza che hai spostato e che la quantità di spazio di archiviazione per nodo sia inferiore a 1 tebibyte (TiB).
  • Non apportare modifiche all'istanza durante lo spostamento. Ciò include 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 queste raccomandazioni, in genere lo spostamento viene completato entro 24 ore. Tuttavia, a seconda del workload dell'applicazione, il tempo di completamento potrebbe essere più lungo o più breve.

Sposta un'istanza

Google Cloud Console

  1. Vai alla pagina Istanze nella Google Cloud console.

    Istanze

  2. Seleziona l'istanza che vuoi spostare.

  3. Nella pagina Panoramica dell'istanza, accanto a Configurazione, fai clic su Sposta l'istanza in una nuova configurazione.

  4. Nel riquadro Sposta il database in una nuova configurazione, seleziona la nuova configurazione dell'istanza per l'istanza.

  5. Fai clic su Salva.

gcloud CLI

Utilizza il gcloud spanner instances move comando 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 dell'istanza. Può trattarsi di una configurazione dell'istanza regionale, a due regioni o multiregionale (ad esempio, nam3, regional-us-central1, o custom-nam3-us-west2).

Ad esempio, per spostare l'istanza test-instance dalla configurazione dell'istanza attuale a nam3, esegui il comando seguente:

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

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

  1. Clona la configurazione di base e aggiungi la replica di sola lettura alla nuova configurazione dell'istanza personalizzata 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. Sposta l'istanza test-instance dalla configurazione dell'istanza attuale a questa nuova configurazione dell'istanza custom-nam3-us-west2:

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

(Facoltativo) Sposta un'istanza con database abilitati per CMEK

Utilizza il gcloud spanner instances move comando per spostare un'istanza con database abilitati per CMEK. Devi includere il flag --target-database-move-configs e i valori della chiave KMS nel comando oppure configurare un file JSON o YAML con le chiavi KMS necessarie.

Note sull'utilizzo:

  • Se hai più database abilitati per CMEK nell'istanza che vuoi spostare, devi specificare --target-database-move-configs per ognuno di essi. Puoi utilizzare le stesse chiavi per ogni database, ma devi specificare le chiavi per ogni database abilitato per CMEK.
  • Le chiavi devono coprire tutte le regioni nella configurazione dell'istanza di destinazione. Ad esempio, se la configurazione dell'istanza di destinazione è in nam3, devi impostare le chiavi in regional-us-east4, regional-us-east1 e regional-us-central1.
  • Non puoi impostare le chiavi KMS per i database non abilitati per CMEK durante lo spostamento dell'istanza.
  • Non devi disabilitare o eliminare le chiavi CMEK nella configurazione dell'istanza di origine o di destinazione durante lo spostamento dell'istanza. La migrazione non procede se provi.
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 ... ]

o

gcloud spanner instances move INSTANCE_ID \
  --target-config=TARGET_CONFIG \
  --target-database-move-configs=CONFIG_FILE_PATH

Configura il file CONFIG_FILE_PATH con gli ID database e le chiavi KMS. Il seguente esempio di file di configurazione contiene le chiavi KMS per due database, database-1 e database-2, con le stesse chiavi in regional-us-east4, regional-us-east1 e regional-us-central1 per coprire tutte le regioni in 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]",
  },
]

Come monitorare lo stato di avanzamento dello spostamento e dell'annullamento dell'istanza

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

Visualizza lo stato di avanzamento dell'operazione di spostamento e annullamento

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

  1. Recupera l'ID operazione per l'operazione di spostamento dell'istanza eseguendo:

    gcloud spanner operations list --instance="INSTANCE_ID"
    

    Sostituisci quanto segue:

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

    L'output mostra un elenco di operazioni a lunga esecuzione, inclusa l'operazione di spostamento 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 dell'operazione di spostamento dell'istanza che vuoi controllare.
    • INSTANCE_ID: l'ID istanza dell'istanza che vuoi controllare.

Monitora un'operazione di spostamento dell'istanza

Puoi creare una dashboard personalizzata di Cloud Monitoring 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 dello spostamento. Puoi vedere che lo spazio di archiviazione nella configurazione di origine diminuisce gradualmente mentre lo spazio di archiviazione nella configurazione di destinazione aumenta.

Google Cloud Console

  1. Scarica il move-instance-dashboard.json file. Questo file contiene le informazioni necessarie per popolare una dashboard personalizzata in Monitoring.
  2. Nella Google Cloud console, 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. Seleziona JSON, quindi 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 lo stato di avanzamento dello spostamento dell'istanza.

gcloud CLI

  1. Scarica il move-instance-dashboard.json file. Questo file contiene le informazioni necessarie per popolare una dashboard personalizzata in Monitoring.
  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 il gcloud monitoring dashboards create riferimento.

Come annullare lo spostamento di un'istanza

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

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

Questo comando richiede l'ID operazione dell'operazione di 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 tu vuoi spostare.

    L'output mostra un elenco di operazioni di spostamento dell'istanza in corso.

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

    gcloud spanner operations cancel OPERATION_ID
    

    Sostituisci quanto segue:

    • OPERATION_ID: l'ID operazione dell'operazione di spostamento dell'istanza che vuoi annullare.

Passaggi successivi

  • Scopri di più sulle configurazioni regionali, a due regioni e multiregionali di Spanner .
  • Scopri di più su Google Cloud regioni e zone.