Questa pagina descrive lo spostamento di un'istanza in Spanner.
Puoi spostare l'istanza Spanner da qualsiasi configurazione di istanza a qualsiasi altra configurazione di 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 elevata coerenzarte, 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 di istanza esistenti, devi prima creare una nuova configurazione
di 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:
- Aumenta la disponibilità: ottieni una disponibilità del 99,999% con zero tempi di inattività dopo aver eseguito uno spostamento da una regione a una doppia regione o a più regioni.
- 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 più regioni o da più regioni a più regioni.
- Riduzione dei costi: riduci i costi orari passando da una configurazione a due regioni o multiregionale a una configurazione regionale.
- Colloca il database: colloca il database Spanner con l'applicazione client spostando l'istanza in una posizione più ottimizzata.
Prezzi
Quando sposti un'istanza, sia la configurazione dell'istanza di origine che quella di destinazione sono soggette ad addebiti orari per il calcolo e l'archiviazione. Una volta completato lo spostamento, la fatturazione dello spazio di archiviazione dell'istanza viene eseguita in base alla configurazione di destinazione.
Se sposti l'istanza in una nuova configurazione di istanza regionale, a due regioni o multiregionale, potresti essere soggetto a costi per il trasferimento di dati in uscita. Per ulteriori informazioni, consulta la pagina 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 Standard Edition direttamente da una configurazione di istanza regionale a una configurazione di istanza multiregionale o a due regioni. Devi prima eseguire l'upgrade della versione della tua 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 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 di una configurazione dell'istanza e non vengono inclusi quando viene spostata un'istanza. Per maggiori informazioni, consulta Backup.
- Le seguenti API sono disabilitate durante lo spostamento di un'istanza:
InstanceAdmin.DeleteInstance
InstanceAdmin.UpdateInstance
DatabaseAdmin.CreateDatabase
DatabaseAdmin.UpdateDatabaseDdl
(disattivato sedefault_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 questa 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. Se gestisci le risorse Spanner tramite
l'automazione, assicurati di preparare e risolvere eventuali incongruenze che potrebbero
sorgere.
- 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 saperne di più sul comandoapply
, consulta Opzioni di applicazione di Terraform.
- Ad esempio, se utilizzi Terraform per
gestire le istanze e i database Spanner e attivi
- Durante lo spostamento dell'istanza, le metriche e i grafici di monitoraggio di Spanner potrebbero mostrare i dati nelle configurazioni dell'istanza di origine e di destinazione oppure potrebbero riflettere solo il rendimento in una configurazione dell'istanza.
- Se hai configurato lo strumento open source Autoscaler, non
devi disattivarlo. L'operazione non riesce perché
InstanceAdmin.UpdateInstance
(utilizzato per modifiche a nodi e unità di elaborazione) è disattivato. - Non puoi spostare un'istanza se è attiva la funzionalità
Gestore della scalabilità automatica gestito da Spanner. Per spostare l'istanza, devi disattivare
il gestore della scalabilità automatica gestito, spostare l'istanza e poi 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.
- Non puoi spostare un'istanza di prova gratuita di Spanner. Puoi spostare l'istanza dopo aver eseguito l'upgrade a un'istanza a pagamento.
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 lo spostamento di un'istanza, il rendimento varia 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 nell'istanza di origine non vengono spostati automaticamente nella nuova configurazione di destinazione. Lo spostamento dell'istanza viene interrotto se nella configurazione dell'istanza di origine esistono backup quando avvii lo spostamento dell'istanza. È importante copiare i backup e considerare il tuo piano di recupero dei dati prima di spostare la tua 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 dopo il completamento dello spostamento 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 tutti i backup esistenti nell'istanza di origine prima di poter spostare l'istanza. Al termine dello spostamento dell'istanza, avrai già una copia del backup nella configurazione di destinazione. Puoi anche creare un nuovo backup.
Per saperne di più sulla copia dei backup e sui costi associati, consulta Copiare un backup.
Come spostare un'istanza
Puoi spostare un'istanza con la console Cloud Shell Google Cloud e
gcloud CLId utilizzando i comandi gcloud
.
Prerequisiti
Prima di spostare la configurazione dell'istanza, assicurati di aver letto le sezioni Limitazioni e Considerazioni sulle prestazioni. Poi segui questi passaggi:
- Verifica di disporre dell'
spanner.instances.update
autorizzazione IAM sull'istanza di origine. - Se applicabile, sposta le istanze non di produzione (come test e staging) prima di spostare le istanze di produzione per valutare e comprendere l'impatto sul rendimento dei carichi di lavoro durante lo spostamento di un'istanza.
- 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 del trasferimento e importarli dopo. Per saperne di più, consulta Esportare e importare i tag.
Per le best practice, segui anche queste linee guida:
- Testa i workload di 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 gestione temporanea simile all'istanza di produzione per farti un'idea di quanto tempo ci vorrà per spostare l'istanza di produzione.
- Verifica che non siano presenti hotspot nei tuoi database utilizzando Key Visualizer.
- Verifica di disporre di una quota di nodi 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 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 conteggio dei 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 suggerimenti, lo spostamento viene in genere 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
Vai alla pagina Istanze nella console Google Cloud .
Seleziona l'istanza che vuoi spostare.
Nella pagina Panoramica istanza, accanto a Configurazione, fai clic su Modifica Sposta istanza in una nuova configurazione.
Nel riquadro Sposta il database nella nuova configurazione, seleziona la nuova configurazione dell'istanza.
Fai clic su Salva.
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ò trattarsi di una configurazione di istanza regionale, a due regioni o
multiregionale (ad esempio
nam3
,us-central1
ocustom-nam3-us-west2
).
Ad esempio, per spostare l'istanza test-instance
dalla configurazione attuale
dell'istanza a nam3
, esegui questo comando:
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
:
Clona la configurazione di base e aggiungi la replica di sola lettura alla nuova configurazione personalizzata dell'istanza
custom-nam3-us-west2
:gcloud spanner instance-configs create custom-nam3-us-west2 \ --clone-config=nam3 --add-replicas=location=us-west2, type=READ_ONLY
Sposta l'istanza
test-instance
dalla configurazione corrente a questa nuova configurazione dell'istanzacustom-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 comando gcloud spanner instances move
per spostare un'istanza con database abilitati per CMEK.
Devi includere il flag --target-database-move-configs
e i valori delle chiavi KMS
nel comando o configurare un file JSON o YAML con le chiavi KMS necessarie.
Note sull'utilizzo:
- Se nell'istanza sono presenti più database abilitati a CMEK che vuoi spostare, devi specificare
-—target-database-move-configs
per ognuno di essi. Puoi utilizzare le stesse chiavi per ogni database, ma devi specificarle 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 inus-east4
,us-east1
eus-central1
. - Non puoi impostare chiavi KMS per i database non abilitati per CMEK durante lo spostamento dell'istanza.
- Non devi disattivare o eliminare le chiavi CMEK nella configurazione dell'istanza di origine o di destinazione durante lo spostamento dell'istanza. Se provi, la migrazione non va a buon fine.
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. L'esempio di file di configurazione seguente contiene le chiavi KMS per due database, database-1
e database-2
, con le stesse chiavi in us-east4
, us-east1
e 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 l'avanzamento dello spostamento e dell'annullamento dell'istanza
Puoi utilizzare gcloud spanner operations describe
o creare una dashboard Cloud Monitoring personalizzata per monitorare l'avanzamento di uno spostamento di istanza.
Visualizzare l'avanzamento dell'operazione 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.
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 vuoi spostare.
L'output mostra un elenco di operazioni a lunga esecuzione, inclusa l'operazione di spostamento dell'istanza.
Esegui il comando
gcloud spanner operations describe
per visualizzare la percentuale e lo stato di avanzamento: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.
Monitorare un'operazione di spostamento dell'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 l'avanzamento del trasferimento. Puoi notare che lo spazio di archiviazione nella configurazione di origine diminuisce gradualmente, mentre quello nella configurazione di destinazione aumenta.
Google Cloud console
- Scarica il file
move-instance-dashboard.json
. Questo file contiene le informazioni necessarie per compilare una dashboard personalizzata in Monitoring. -
Nella Google Cloud console, vai alla pagina
Dashboard:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.
- Nella pagina Panoramica delle dashboard, fai clic su Crea dashboard.
- Nella barra degli strumenti della dashboard, fai clic sul menu a discesa Impostazioni dashboard. Poi seleziona JSON e poi Editor JSON.
- Nel riquadro Editor JSON, copia i contenuti del file
move-instance-dashboard.json
scaricato e incollali nell'editor. - Per applicare le modifiche al dashboard, fai clic su Applica modifiche. Se non vuoi utilizzare questa dashboard, torna alla pagina Panoramica delle dashboard.
- Dopo aver creato il prospetto, fai clic su Aggiungi filtro. Poi seleziona
project_id
oinstance_id
per monitorare l'avanzamento del trasferimento dell'istanza.
Interfaccia a riga di comando gcloud
- Scarica il file
move-instance-dashboard.json
. Questo file contiene le informazioni necessarie per compilare una dashboard personalizzata in Monitoring. 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 riferimento
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 istanza 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.
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 delle operazioni di spostamento delle istanze in corso.
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 regioni e zone diGoogle Cloud .