Questa pagina descrive come eseguire l'upgrade della versione principale del database eseguendo l'upgrade dell'istanza Cloud SQL sul posto anziché eseguendo la migrazione dei dati.
Introduzione
I fornitori di software di database rilasciano periodicamente nuove versioni principali che contengono nuove funzionalità, miglioramenti delle prestazioni e della sicurezza. Cloud SQL accetta le nuove versioni dopo il loro rilascio. Dopo che Cloud SQL offre il supporto per una nuova versione principale, puoi eseguire l'upgrade delle istanze per mantenere aggiornato il database.
Puoi eseguire l'upgrade della versione del database di un'istanza sul posto o tramite la migrazione dei dati. Gli upgrade sul posto sono un modo più semplice per eseguire l'upgrade della versione principale dell'istanza. Non è necessario migrare i dati o modificare le stringhe di connessione dell'applicazione. Con gli upgrade in loco, puoi conservare il nome, l'indirizzo IP e altre impostazioni dell'istanza attuale dopo l'upgrade. Gli upgrade sul posto non richiedono lo spostamento dei file di dati e possono essere completati più rapidamente. In alcuni casi, il tempo di inattività è inferiore a quello richiesto per la migrazione dei dati.
L'operazione di upgrade in loco di Cloud SQL per PostgreSQL utilizza l'utilitàpg_upgrade
.
Pianificare un upgrade della versione principale
- Verifica di disporre del ruolo richiesto per eseguire un upgrade della versione principale: Proprietario Cloud SQL o Amministratore Cloud SQL.
Scegli una versione principale di destinazione.
gcloud
Per informazioni sull'installazione e su come iniziare a utilizzare gcloud CLI, vedi Installa gcloud CLI. Per informazioni sull'avvio di Cloud Shell, consulta Utilizzare Cloud Shell.
Per controllare le versioni del database a cui puoi fare riferimento per un upgrade in loco sulla tua istanza:
- Esegui questo comando.
- Nell'output del comando,
individua la sezione etichettata
upgradableDatabaseVersions
. - Ogni sottosezione restituisce una versione del database disponibile per l'upgrade. In ogni sottosezione, esamina i seguenti campi.
majorVersion
: la versione principale a cui puoi fare riferimento per l'upgrade in loco.name
: la stringa della versione del database che include la versione principale.displayName
: il nome visualizzato per la versione del database.
gcloud sql instances describe INSTANCE_NAME
Sostituisci INSTANCE_NAME con il nome dell'istanza.
REST v1
Per controllare quali versioni del database di destinazione sono disponibili per un upgrade in loco della versione principale, utilizza il metodo
instances.get
dell'API Cloud SQL Admin.Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- INSTANCE_NAME: il nome dell'istanza.
Metodo HTTP e URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
upgradableDatabaseVersions: { major_version: "POSTGRES_15_0" name: "POSTGRES_15_0" display_name: "PostgreSQL 15.0" }
REST v1beta4
Per controllare quali versioni del database di destinazione sono disponibili per l'upgrade in loco della versione principale di un'istanza, utilizza il metodo
instances.get
dell'API Cloud SQL Admin.Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- INSTANCE_NAME: il nome dell'istanza.
Metodo HTTP e URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
upgradableDatabaseVersions: { major_version: "POSTGRES_15_0" name: "POSTGRES_15_0" display_name: "PostgreSQL 15.0" }
Per l'elenco completo delle versioni del database supportate da Cloud SQL, consulta Versioni del database e criteri delle versioni.
Considera le funzionalità offerte in ogni versione principale del database e risolvi le incompatibilità.
Le nuove versioni principali introducono modifiche incompatibili che potrebbero richiedere di modificare il codice dell'applicazione, lo schema o le impostazioni del database. Prima di poter eseguire l'upgrade dell'istanza di database, consulta le note di rilascio della versione principale di destinazione per determinare le incompatibilità da risolvere.
Esegui il controllo preliminare per gli upgrade.
Testa l'upgrade con un test dry run.
Esegui una prova del processo di upgrade end-to-end in un ambiente di test prima di eseguire l'upgrade del database di produzione. Puoi clonare l'istanza per creare una copia identica dei dati su cui testare la procedura di upgrade.
Oltre a verificare che l'upgrade venga completato correttamente, esegui test per assicurarti che l'applicazione si comporti come previsto nel database aggiornato.
Decidi un orario per l'upgrade.
L'upgrade richiede che l'istanza non sia disponibile per un periodo di tempo. Pianifica l'upgrade durante un periodo di attività ridotta del database.
Prepararsi per un upgrade della versione principale
Prima di eseguire l'upgrade, completa i seguenti passaggi.
-
Controlla il valore di
LC_COLLATE
per i databasetemplate
epostgres
. Il set di caratteri per ogni database deve essereen_US.UTF8
.Se il valore di
LC_COLLATE
per i databasetemplate
epostgres
non èen_US.UTF8
, l'upgrade della versione principale non riesce. Per risolvere il problema, se uno dei due database ha un set di caratteri diverso daen_US.UTF8
, modifica il valoreLC_COLLATE
inen_US.UTF8
prima di eseguire l'upgrade.Per modificare la codifica di un database:
- Esegui il dump del database.
- Elimina il database.
- Crea un nuovo database con una codifica diversa (per questo esempio,
en_US.UTF8
). - Ricarica i dati.
Un'altra opzione è rinominare il database:
- Chiudi tutte le connessioni al database.
- Rinomina il database.
- Aggiorna le configurazioni dell'applicazione in modo che utilizzino il nuovo nome del database.
- Crea un nuovo database vuoto con la codifica predefinita.
Ti consigliamo di eseguire questi passaggi su un'istanza clonata prima di applicarli a un'istanza di produzione.
Gestisci le estensioni PostgreSQL rimanenti.
La maggior parte delle estensioni funziona con la versione principale del database aggiornata. Elimina le estensioni non più supportate nella versione di destinazione. Ad esempio, elimina l'estensione
chkpass
se esegui l'upgrade a PostgreSQL 11 o versioni successive.Puoi eseguire l'upgrade di PostGIS e delle relative estensioni alle ultime versioni supportate manualmente.
A volte, l'upgrade dalle versioni 2.x di PostGIS può creare una situazione in cui sono presenti oggetti di database rimanenti che non sono associati all'estensione PostGIS. Ciò può bloccare l'operazione di upgrade. Per informazioni sulla risoluzione del problema, vedi Risoluzione di un'installazione raster PostGIS danneggiata.
A volte, l'upgrade alla versione 3.1.7 o successive di PostGIS non può essere completato a causa di oggetti che utilizzano funzioni deprecate. Ciò può bloccare l'operazione di upgrade. Per controllare lo stato dell'upgrade, esegui
Per scoprire di più sull'upgrade delle estensioni PostGIS, consulta Upgrade di PostGIS. Per i problemi associati all'upgrade di PostGIS, consulta Controllare la versione dell'istanza PostgreSQL.SELECT PostGIS_full_version();
. Se sono presenti avvisi, elimina tutti gli oggetti che utilizzano le funzioni ritirate e aggiorna l'estensione PostGIS a una versione intermedia o successiva. Dopo aver completato queste azioni, esegui di nuovo il comandoSELECT PostGIS_full_version();
. Verifica che non vengano visualizzati avvisi. Dopodiché, procedi con l'operazione di upgrade.- Gestisci i flag di database personalizzati. Controlla i nomi di eventuali flag di database personalizzati che hai configurato per l'istanza PostgreSQL. Per i problemi associati a questi flag, consulta Controllare i flag personalizzati per l'istanza PostgreSQL.
- Quando esegui l'upgrade da una versione principale a un'altra,
prova a connetterti a ogni database per verificare se ci sono problemi di compatibilità.
Assicurati che i database possano connettersi tra loro. Controlla il campo
datallowconn
per ogni database per assicurarti che sia consentita una connessione. Un valoret
indica che è consentito, mentre un valoref
indica che non è possibile stabilire una connessione. - Se utilizzi l'installazione di Datadog per eseguire l'upgrade dell'istanza Cloud SQL a PostgreSQL 10 o versioni successive, prima di eseguire l'upgrade, elimina la funzione pg_stat_activity().
Limitazioni note
I seguenti limiti influiscono sugli upgrade della versione principale in loco per Cloud SQL per PostgreSQL:
- Non puoi eseguire un upgrade in loco della versione principale su una replica esterna.
- L'upgrade di istanze con più di 1000 database da una versione all'altra potrebbe richiedere molto tempo e causare un timeout.
- Utilizza l'istruzione
select * from pg_largeobject_metadata;
per eseguire query sul numero di oggetti di grandi dimensioni in ogni database PostgreSQL dell'istanza Cloud SQL. Se il risultato di tutti i tuoi database è superiore a 10 milioni di oggetti di grandi dimensioni, l'upgrade non va a buon fine. Cloud SQL esegue il rollback alla versione precedente del database. - Prima di eseguire un upgrade in loco della versione principale a PostgreSQL 16 e versioni successive, esegui l'upgrade dell'estensione PostGIS per tutti i tuoi database alla versione 3.4.0. Per PostgreSQL 18, esegui l'upgrade alla versione 3.6.0 di PostGIS.
- Prima di eseguire un upgrade in loco della versione principale a PostgreSQL 17, esegui l'upgrade dell'estensione
rdkit
per tutti i tuoi database alla versione 4.6.1. - Prima di eseguire un upgrade in loco della versione principale a PostgreSQL 16, 17 o 18, esegui l'upgrade dell'estensione
pg_squeeze
per tutti i tuoi database alla versione 1.6, 1.7 o 1.8 rispettivamente. - Se utilizzi PostgreSQL versioni 9.6, 10, 11 o 12, la versione 3.4.0 dell'estensione PostGIS non è supportata. Pertanto, per eseguire un upgrade in loco della versione principale a PostgreSQL 16 e versioni successive, devi prima eseguire l'upgrade a una versione intermedia di PostgreSQL (versioni 13, 14 o 15).
Se installi l'estensione
pg_ivm
per la tua istanza, non puoi eseguire un upgrade della versione principale. Per risolvere il problema, disinstalla questa estensione ed esegui l'upgrade. Per ulteriori informazioni sulle estensioni, vedi Configurare le estensioni PostgreSQL.Se abiliti i flag vacuum_defer_cleanup_age e force_parallel_mode, non puoi eseguire l'upgrade di una versione principale. Per risolvere il problema, elimina questi flag e poi esegui l'upgrade. Per ulteriori informazioni sui flag, incluso come eliminarli, consulta Configurare i flag di database.
Valuta la preparazione all'upgrade per la tua istanza
Cloud SQL ti consente di eseguire un controllo preliminare sull'istanza prima di un upgrade della versione principale. Questo controllo preliminare è un'operazione a lunga esecuzione (LRO) che verifica se la tua istanza è pronta per un upgrade. Aiuta a trovare potenziali problemi come incompatibilità, problemi di configurazione o problemi di dati prima dell'operazione di upgrade.
Il controllo preliminare conferma che è possibile eseguire l'upgrade dell'istanza o elenca i problemi che devi risolvere e le relative soluzioni. Questi problemi potrebbero essere dovuti a estensioni incompatibili, dipendenze non supportate o problemi di formato dei dati.
Il controllo preliminare legge principalmente i metadati dell'istanza ed esegue i controlli. Queste attività non influiscono sulle prestazioni dell'istanza né causano tempi di inattività. Consigliamo vivamente di eseguire il controllo preliminare, in quanto contribuisce a evitare errori di upgrade e tempi di inattività imprevisti.
Quando esegui il controllo preliminare, si verifica una delle seguenti situazioni:
- Nessun problema rilevato: il controllo preliminare è stato completato correttamente e non sono stati rilevati problemi.
- Rilevati problemi di blocco dell'upgrade: il controllo preliminare è stato completato correttamente, ma sono stati rilevati errori che impediscono l'upgrade. I problemi devono essere risolti prima dell'upgrade.
- Trovati avvisi non bloccanti: il controllo preliminare è stato completato correttamente e sono stati trovati avvisi, ma nessuno di questi impedisce l'upgrade.
A seconda dei risultati del controllo preliminare, puoi procedere con l'upgrade o risolvere i problemi identificati prima di eseguire l'upgrade.
Limitazioni
Quando utilizzi il controllo preliminare dell'upgrade della versione principale, tieni presente queste limitazioni:
- Lo stato dell'istanza deve essere impostato su
RUNNING
. - L'istanza deve essere un'istanza principale. Il controllo preliminare non supporta le istanze di replica.
L'istanza non deve avere operazioni di blocco in attesa. Se è in attesa un'operazione di blocco, il controllo preliminare genera un errore con il seguente messaggio:
Operation failed because another operation was already in progress. Try your request after the current operation is complete.
Il controllo preliminare deve connettersi a tutti i database dell'istanza. Se un database è inaccessibile, bloccato o non risponde, il controllo preliminare potrebbe non riuscire o mostrare errori. Sebbene il controllo preliminare non influisca sulle prestazioni dell'istanza né causi tempi di inattività, ti consigliamo di eseguirlo quando il carico del database è basso.
Prima di iniziare
- Assicurati che l'API Cloud SQL Admin sia abilitata per la tua istanza.
- Verifica di disporre dell'
cloudsql.instances.preCheckMajorVersionUpgrade
autorizzazione IAM.
Esegui il precontrollo
Per eseguire il controllo preliminare dell'upgrade della versione principale:
gcloud
Esegui il controllo preliminare:
gcloud sql instances pre-check-major-version-upgrade INSTANCE_NAME \ --target-database-version=TARGET_DATABASE_VERSION \ --project=PROJECT_ID \ [--async]
Sostituisci quanto segue:
- INSTANCE_NAME: il nome dell'istanza
- TARGET_DATABASE_VERSION: la versione principale a cui vuoi eseguire l'upgrade dell'istanza. Per trovare la versione del database, vedi Pianificare un upgrade.
- PROJECT_ID: l'ID del tuo Google Cloud progetto.
Recupera il nome dell'operazione di controllo preliminare:
Utilizza il comando
gcloud sql operations list
con il flag--instance
:gcloud sql operations list --instance=INSTANCE_NAME
Sostituisci quanto segue:
- INSTANCE_NAME: il nome dell'istanza
Monitora lo stato del controllo preliminare.
Utilizza il comando
gcloud sql operations describe
:gcloud sql operations describe OPERATION_NAME
Sostituisci quanto segue:
- OPERATION_NAME: il nome dell'operazione di controllo preliminare recuperato nel passaggio precedente.
REST v1
Esegui il controllo preliminare.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID progetto
- INSTANCE_ID: l'ID istanza
- TARGET_DATABASE_VERSION: La versione principale a cui eseguire l'upgrade. Per trovare un elenco delle versioni del database disponibili, consulta Pianificare un upgrade.
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1b/projects/PROJECT-ID/instances/INSTANCE_ID/preCheckMajorVersionUpgrade
Corpo JSON della richiesta:
{ "preCheckMajorVersionUpgradeContext": { "targetDatabaseVersion": "TARGET_DATABASE_VERSION" } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "message": "Precheck description of finding", "message_type": "ERROR", "actions_required": [ "Precheck action required to fix the finding" ] }
Ottieni il nome dell'operazione di precontrollo.
Utilizza la richiesta GET con il metodo
operations.list
dopo aver sostituitoPROJECT_ID
con l'ID del progetto.GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations
Sostituisci quanto segue:
- PROJECT_ID: l'ID del tuo Google Cloud progetto.
Monitora lo stato del controllo preliminare.
Utilizza la richiesta GET con il metodo
operations.list
:GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operation/OPERATION_NAME
Sostituisci quanto segue:
- PROJECT_ID: l'ID del tuo Google Cloud progetto.
- OPERATION_NAME: il nome dell'operazione di precontrollo recuperato nel passaggio precedente.
REST v1beta4
Esegui il controllo preliminare.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID progetto
- INSTANCE_ID: l'ID istanza
- TARGET_DATABASE_VERSION: La versione principale a cui eseguire l'upgrade. Per trovare un elenco delle versioni del database disponibili, consulta Pianificare un upgrade.
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/preCheckMajorVersionUpgrade
Corpo JSON della richiesta:
{ "preCheckMajorVersionUpgradeContext": { "targetDatabaseVersion": "TARGET_DATABASE_VERSION" } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "message": "Precheck description of finding", "message_type": "ERROR", "actions_required": [ "Precheck action required to fix the finding" ] }
Ottieni il nome dell'operazione di precontrollo.
Utilizza la richiesta GET con il metodo
operations.list
dopo aver sostituitoPROJECT_ID
con l'ID del progetto.GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations
Sostituisci quanto segue:
- PROJECT_ID: l'ID del tuo Google Cloud progetto.
Monitora lo stato del controllo preliminare.
Utilizza la richiesta GET con il metodo
operations.list
:GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operation/OPERATION_NAME
Sostituisci quanto segue:
- PROJECT_ID: l'ID del tuo Google Cloud progetto.
- operation_name: il nome dell'operazione di precontrollo recuperato nel passaggio precedente.
Esaminare i risultati del controllo preliminare
Al termine del controllo preliminare, l'istanza è pronta per l'upgrade oppure presenta problemi che richiedono la tua attenzione.
Pronto per l'upgrade
Se il controllo preliminare viene completato correttamente e l'array preCheckResponse
è vuoto, significa che non sono stati rilevati problemi o avvisi. La tua istanza è pronta per
l'upgrade della versione principale. Per continuare, consulta
Esegui l'upgrade della versione principale.
Non pronto per l'upgrade
Se il controllo preliminare è stato eseguito correttamente e l'array preCheckResponse
contiene
problemi, la tua istanza non è pronta per l'upgrade e richiede attenzione. I problemi
identificati potrebbero bloccare o meno l'upgrade. Questi problemi sono
annotati nel preCheckResponse
con i seguenti tipi di messaggi:
Tipo | Descrizione | Blocco dell'upgrade? |
---|---|---|
INFO |
Un messaggio informativo. | No |
WARNING |
È stato rilevato un potenziale problema, ma non blocca l'upgrade. Cloud SQL consiglia di esaminare e risolvere l'avviso prima di eseguire l'upgrade per garantire la piena compatibilità. | No |
ERROR |
È stato rilevato un problema critico che blocca l'upgrade. Questi problemi potrebbero causare il mancato upgrade. Devi risolverli prima di eseguire l'upgrade dell'istanza. | Sì |
Se la tua istanza ha solo INFO
o WARNING
messaggi, puoi eseguirne l'upgrade,
ma potresti riscontrare problemi dopo l'upgrade. Ti consigliamo di esaminare i dettagli del messaggio e risolvere il problema prima di eseguire l'upgrade. Se la tua istanza
ha ERROR
messaggi, devi risolvere questi problemi prima dell'upgrade.
Ogni tipo di problema include un campo message
e un campo actions_required
. Esamina
ogni problema per comprenderne il tipo e come risolverlo. Per saperne di più
sui problemi comuni e sulle relative soluzioni, consulta
Errori comuni di controllo preliminare dell'upgrade della versione principale.
Dopo aver risolto i problemi, esegui nuovamente il controllo preliminare per verificare che la tua istanza sia pronta per l'upgrade. Dopodiché, procedi con l'upgrade dell'istanza una volta che il controllo preliminare è stato superato.
Esegui l'upgrade della versione principale
Puoi eseguire l'upgrade della versione principale di una singola istanza Cloud SQL oppure puoi eseguire l'upgrade della versione principale di un'istanza principale e includere tutte le relative repliche, incluse le repliche in cascata e quelle cross-region.
Esegui l'upgrade della versione principale di una singola istanza
Quando avvii un'operazione di upgrade per una singola istanza, Cloud SQL esegue le seguenti operazioni:
- Controlla la configurazione dell'istanza per assicurarsi che sia compatibile per un upgrade.
- Dopo che Cloud SQL verifica la configurazione, l'istanza non è più disponibile.
- Esegue un backup pre-upgrade.
- Esegue l'upgrade dell'istanza.
- Rende disponibile l'istanza.
- Esegue un backup post-upgrade.
Console
-
Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.
- Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
- Fai clic su Modifica.
- Nella sezione Informazioni istanza, fai clic sul pulsante Esegui l'upgrade e conferma di voler passare alla pagina di upgrade.
- Nella pagina Scegli una versione del database, fai clic sull'elenco Versione del database per l'upgrade e seleziona una delle versioni principali del database disponibili.
- Fai clic su Continua.
- Nella casella ID istanza, inserisci il nome dell'istanza e poi fai clic sul pulsante Avvia upgrade.
Verifica che la versione principale del database aggiornato venga visualizzata sotto il nome dell'istanza nella pagina Panoramica dell'istanza.
gcloud
Avvia l'upgrade.
Utilizza il comando
gcloud sql instances patch
con il flag--database-version
.Prima di eseguire il comando, sostituisci quanto segue:
- INSTANCE_NAME: il nome dell'istanza.
- DATABASE_VERSION: l'enumerazione per la versione principale del database, che deve essere successiva alla versione attuale. Specifica una versione del database per una versione principale disponibile come destinazione dell'upgrade per l'istanza. Puoi ottenere questo enum come primo passaggio di Plan for upgrade. Se hai bisogno di un elenco completo degli enum delle versioni del database, consulta SqlDatabaseEnums.
gcloud sql instances patch INSTANCE_NAME \ --database-version=DATABASE_VERSION
Il completamento degli upgrade delle versioni principali richiede diversi minuti. Potresti visualizzare un messaggio che indica che l'operazione sta richiedendo più tempo del previsto. Puoi ignorare questo messaggio o eseguire il comando
gcloud sql operations wait
per chiuderlo.Recupera il nome dell'operazione di upgrade.
Utilizza il comando
gcloud sql operations list
con il flag--instance
.Prima di eseguire il comando, sostituisci la variabile INSTANCE_NAME con il nome dell'istanza.
gcloud sql operations list --instance=INSTANCE_NAME
Monitora lo stato dell'upgrade.
Utilizza il comando
gcloud sql operations describe
.Prima di eseguire il comando, sostituisci la variabile OPERATION con il nome dell'operazione di upgrade recuperato nel passaggio precedente.
gcloud sql operations describe OPERATION
REST v1
Avvia l'upgrade in loco.
Utilizza una richiesta PATCH con il metodo
instances:patch
.Prima di utilizzare i dati della richiesta, sostituisci queste variabili:
- PROJECT_ID: l'ID del progetto.
- INSTANCE_NAME: il nome dell'istanza.
Metodo HTTP e URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Corpo JSON della richiesta:
{ "databaseVersion": DATABASE_VERSION }
Sostituisci DATABASE_VERSION con l'enum per la versione principale del database, che deve essere successiva alla versione corrente. Specifica una versione del database per una versione principale disponibile come destinazione dell'upgrade per l'istanza. Puoi ottenere questo enum come primo passaggio di Plan for upgrade. Se hai bisogno di un elenco completo degli enum delle versioni del database, consulta SqlDatabaseVersion.
Recupera il nome dell'operazione di upgrade.
Utilizza una richiesta GET con il metodo
operations.list
dopo aver sostituito PROJECT_ID con l'ID del progetto.Metodo HTTP e URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations
Monitora lo stato dell'upgrade.
Utilizza una richiesta GET con il metodo
operations.get
dopo aver sostituito le seguenti variabili:- PROJECT_ID: l'ID del progetto.
- OPERATION_NAME: il nome dell'operazione di upgrade recuperato nel passaggio precedente.
Metodo HTTP e URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operation/OPERATION_NAME
Terraform
Per aggiornare la versione del database, utilizza una risorsa Terraform e il provider Terraform per Google Cloud, versione 4.34.0 o successive.
Applica le modifiche
Per applicare la configurazione di Terraform in un progetto Google Cloud , completa i passaggi nelle sezioni seguenti.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito in cui vuoi applicare le configurazioni Terraform.
Devi eseguire questo comando una sola volta per progetto e puoi eseguirlo in qualsiasi directory.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Le variabili di ambiente vengono sostituite se imposti valori espliciti nel file di configurazione Terraform.
Prepara la directory
Ogni file di configurazione Terraform deve avere la propria directory (chiamata anche modulo radice).
-
In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome file deve avere l'estensione
.tf
, ad esempiomain.tf
. In questo tutorial, il file viene denominatomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.
Copia il codice campione nel
main.tf
appena creato.(Facoltativo) Copia il codice da GitHub. Questa operazione è consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.
- Rivedi e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
Inizializza Terraform. Devi effettuare questa operazione una sola volta per directory.
terraform init
(Facoltativo) Per utilizzare l'ultima versione del provider Google, includi l'opzione
-upgrade
:terraform init -upgrade
Applica le modifiche
-
Rivedi la configurazione e verifica che le risorse che Terraform creerà o
aggiornerà corrispondano alle tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione di Terraform eseguendo il comando seguente e inserendo
yes
al prompt:terraform apply
Attendi che Terraform visualizzi il messaggio "Apply complete!".
- Apri il tuo Google Cloud progetto per visualizzare i risultati. Nella console Google Cloud , vai alle risorse nell'interfaccia utente per assicurarti che Terraform le abbia create o aggiornate.
Elimina le modifiche
Per eliminare le modifiche:
- Per disattivare la protezione dall'eliminazione, nel file di configurazione Terraform imposta l'argomento
deletion_protection
sufalse
.deletion_protection = "false"
- Applica la configurazione Terraform aggiornata eseguendo il comando seguente e
inserendo
yes
al prompt:terraform apply
-
Rimuovi le risorse applicate in precedenza con la configurazione Terraform eseguendo il comando seguente e inserendo
yes
al prompt:terraform destroy
Quando invii una richiesta di upgrade in loco, Cloud SQL esegue innanzitutto un controllo pre-upgrade. Se Cloud SQL determina che la tua istanza non è pronta per un upgrade, la richiesta di upgrade non va a buon fine e viene visualizzato un messaggio che suggerisce come risolvere il problema. Vedi anche Risolvere i problemi relativi all'upgrade di una versione principale.
Includi le repliche nell'upgrade della versione principale
Se l'istanza principale ha repliche, puoi includerle tutte nell'upgrade. Cloud SQL può eseguire l'upgrade di tutte le repliche dell'istanza principale, incluse le repliche tra regioni e le repliche a cascata.
Quando includi le repliche in un upgrade della versione principale, Cloud SQL esegue le seguenti operazioni:
- Controlla la configurazione dell'istanza principale e delle repliche per assicurarsi che l'istanza e le repliche siano compatibili per un upgrade.
- Rende l'istanza principale non disponibile.
- Crea un backup pre-upgrade dell'istanza principale.
- Interrompe la replica per tutte le repliche.
- Esegue l'upgrade dell'istanza principale.
- Se l'upgrade sull'istanza primaria va a buon fine, l'istanza primaria torna disponibile e la replica viene riavviata.
- Cloud SQL esegue un backup post-upgrade dell'istanza principale.
- Cloud SQL procede all'upgrade di tutte le repliche.
Anche se l'upgrade della versione principale di una replica non va a buon fine, l'istanza principale continua a essere disponibile.
Per includere le repliche in un upgrade della versione principale, non puoi utilizzare la consoleGoogle Cloud o Terraform. Puoi utilizzare solo gcloud CLI o l'API Cloud SQL Admin.
gcloud
Avvia l'upgrade.
Utilizza il comando
gcloud sql instances patch
con i flag--database-version
e .--include-replicas-for-major-version-upgrade
Prima di eseguire il comando, sostituisci quanto segue:
- INSTANCE_NAME: il nome dell'istanza principale.
- DATABASE_VERSION: l'enumerazione per la versione principale del database, che deve essere successiva alla versione attuale. Specifica una versione del database per una versione principale disponibile come destinazione dell'upgrade per l'istanza. Puoi ottenere questo enum come primo passaggio di Plan for upgrade. Se hai bisogno di un elenco completo degli enum delle versioni del database, consulta SqlDatabaseEnums.
gcloud sql instances patch INSTANCE_NAME \ --database-version=DATABASE_VERSION \ --include-replicas-for-major-version-upgrade
Il completamento degli upgrade delle versioni principali richiede diversi minuti. Potresti visualizzare un messaggio che indica che l'operazione sta richiedendo più tempo del previsto. Puoi ignorare questo messaggio o eseguire il comando
gcloud sql operations wait
per chiuderlo. L'upgrade delle repliche può richiedere diversi minuti. Per controllare lo stato dell'upgrade:Recupera il nome dell'operazione di upgrade.
Utilizza il comando
gcloud sql operations list
con il flag--instance
.Prima di eseguire il comando, sostituisci la variabile INSTANCE_NAME con il nome dell'istanza.
gcloud sql operations list --instance=INSTANCE_NAME
Monitora lo stato dell'upgrade.
Utilizza il comando
gcloud sql operations describe
.Prima di eseguire il comando, sostituisci la variabile OPERATION con il nome dell'operazione di upgrade recuperato nel passaggio precedente.
gcloud sql operations describe OPERATION
REST
Avvia l'upgrade in loco.
Utilizza una richiesta PATCH con il metodo
instances:patch
.Prima di utilizzare i dati della richiesta, sostituisci queste variabili:
- PROJECT_ID: l'ID del progetto.
- INSTANCE_NAME: il nome dell'istanza.
Metodo HTTP e URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Corpo JSON della richiesta:
{ "databaseVersion": DATABASE_VERSION "includeReplicasForMajorVersionUpgrade": true }
- Sostituisci DATABASE_VERSION con l'enum per la versione principale del database, che deve essere successiva alla versione corrente. Specifica una versione del database per una versione principale disponibile come destinazione dell'upgrade per l'istanza. Puoi ottenere questo enum come primo passaggio di Plan for upgrade. Se hai bisogno di un elenco completo degli enum delle versioni del database, consulta SqlDatabaseVersion.
- Nel campo
includeReplicasForMajorVersionUpgrade
, specificatrue
.
Recupera il nome dell'operazione di upgrade.
Utilizza una richiesta GET con il metodo
operations.list
dopo aver sostituito PROJECT_ID con l'ID del progetto.Metodo HTTP e URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations
Monitora lo stato dell'upgrade.
Utilizza una richiesta GET con il metodo
operations.get
dopo aver sostituito le seguenti variabili:- PROJECT_ID: l'ID del progetto.
- OPERATION_NAME: il nome dell'operazione di upgrade recuperato nel passaggio precedente.
Metodo HTTP e URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operation/OPERATION_NAME
Backup automatici degli upgrade
Quando esegui un upgrade della versione principale, Cloud SQL esegue automaticamente due backup on demand, chiamati backup di upgrade:
- Il primo backup dell'upgrade è il backup pre-upgrade, che viene eseguito immediatamente prima di iniziare l'upgrade. Puoi utilizzare questo backup per ripristinare l'istanza di database allo stato della versione precedente.
- Il secondo backup dell'upgrade è il backup post-upgrade, che viene eseguito immediatamente dopo che sono consentite nuove scritture nell'istanza del database aggiornata.
Quando visualizzi l'elenco dei
backup, i
backup dell'upgrade sono elencati con il tipo On-demand
. I backup di upgrade sono etichettati in modo
da poterli identificare rapidamente.
Ad esempio, se esegui l'upgrade da PostgreSQL 14 a PostgreSQL 15, il backup pre-upgrade è etichettato Pre-upgrade backup, POSTGRES_14 to POSTGRES_15.
e il backup post-upgrade è etichettato Post-upgrade backup, POSTGRES_14 to
POSTGRES_15.
.
Come per gli altri backup on demand, i backup dell'upgrade vengono conservati finché non li elimini o finché non elimini l'istanza. Se hai attivato il recupero temporizzato, non puoi eliminare i backup dell'upgrade mentre si trovano nel periodo di conservazione. Se devi eliminare i backup dell'upgrade, devi disattivare PITR o attendere che i backup dell'upgrade non rientrino più nella finestra di conservazione.
Completa l'upgrade della versione principale
Dopo aver completato l'upgrade dell'istanza principale, segui questi passaggi per completare l'upgrade:
Aggiorna le statistiche del database.
Esegui
ANALYZE
sull'istanza principale per aggiornare le statistiche di sistema dopo l'upgrade. Statistiche accurate assicurano che il pianificatore di query PostgreSQL elabori le query in modo ottimale. Le statistiche mancanti possono portare a piani di query errati, che a loro volta potrebbero peggiorare le prestazioni e occupare memoria eccessiva.Esegui i test di accettazione.
Esegui test per assicurarti che il sistema aggiornato funzioni come previsto.
Risolvere i problemi relativi all'upgrade di una versione principale
Cloud SQL restituisce un messaggio di errore se tenti un comando di upgrade non valido, ad esempio se l'istanza contiene flag di database non validi per la nuova versione.
Se la richiesta di upgrade non va a buon fine, controlla la sintassi della richiesta. Se la richiesta ha una struttura valida, prova a esaminare i seguenti suggerimenti.
Visualizza log degli errori
Se si verificano problemi con una richiesta di upgrade valida, Cloud SQL
pubblica i log degli errori in projects/PROJECT_ID/logs/cloudsql.googleapis.com%2Fpostgres-upgrade.log
. Ogni voce di log contiene un'etichetta con l'identificatore dell'istanza per aiutarti a identificare l'istanza con l'errore di upgrade.
Cerca questi errori di upgrade e risolvili.
Per visualizzare i log degli errori, utilizza la console Google Cloud:
-
Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.
- Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
Nel riquadro Operazioni e log della pagina Panoramica dell'istanza, fai clic sul link Visualizza log degli errori di PostgreSQL.
Si apre la pagina Esplora log.
Visualizza i log nel seguente modo:
- Per elencare tutti i log degli errori in un progetto, seleziona il nome del log nel filtro log Nome log.
Per saperne di più sui filtri delle query, consulta Query avanzate.
- Per filtrare i log degli errori di upgrade per una singola istanza, inserisci la
seguente query nella casella Cerca in tutti i campi, dopo aver sostituito
DATABASE_ID
con l'ID progetto seguito dal nome dell'istanza in questo formato:
project_id:instance_name
.resource.type="cloudsql_database" resource.labels.database_id="DATABASE_ID" logName : "projects/PROJECT_ID/logs/cloudsql.googleapis.com%2Fpostgres-upgrade.log"
Ad esempio, per filtrare i log degli errori di upgrade in base a un'istanza denominata
shopping-db
in esecuzione nel progettobuylots
, utilizza il seguente filtro query:resource.type="cloudsql_database" resource.labels.database_id="buylots:shopping-db" logName : "projects/buylots/logs/cloudsql.googleapis.com%2Fpostgres-upgrade.log"
Puoi esaminare tutti i log segnalati in un determinato periodo di tempo oppure filtrare i log in base alla gravità. Un'opzione comune per la risoluzione dei problemi potrebbe includere la selezione dei seguenti filtri:
- Emergenza
- Avviso
- Critico
- Errore
Le voci di log con il prefisso pg_upgrade_dump
indicano che si è verificato un errore di upgrade. Ad esempio:
pg_upgrade_dump: error: query failed: ERROR: out of shared memory
HINT: You might need to increase max_locks_per_transaction.
Inoltre, le voci di log etichettate con un nome file secondario .txt
potrebbero elencare
altri errori che potresti voler risolvere prima di tentare di nuovo l'upgrade.
Tutti i nomi dei file si trovano nel file postgres-upgrade.log
. Per individuare un nome file,
guarda il campo labels.FILE_NAME
.
I nomi file che potrebbero contenere errori da risolvere includono:
tables_with_oids.txt:
Questo file contiene tabelle elencate con identificatori di oggetti (OID). Elimina le tabelle o modificale in modo che non utilizzino OID.tables_using_composite.txt:
Questo file contiene tabelle elencate utilizzando tipi compositi definiti dal sistema. Elimina le tabelle o modificale in modo che non utilizzino questi tipi composti.tables_using_unknown.txt:
Questo file contiene tabelle elencate utilizzando il tipo di datiUNKNOWN
. Elimina le tabelle o modificale in modo che non utilizzino questo tipo di dati.tables_using_sql_identifier.txt:
Questo file contiene tabelle elencate utilizzando il tipo di datiSQL_IDENTIFIER
. Elimina le tabelle o modificale in modo che non utilizzino questo tipo di dati.tables_using_reg.txt:
Questo file contiene tabelle elencate utilizzando il tipo di datiREG*
(ad esempioREGCOLLATION
oREGNAMESPACE
). Elimina le tabelle o modificale in modo che non utilizzino questo tipo di dati.postfix_ops.txt:
Questo file contiene tabelle elencate utilizzando operatori di suffisso (unari a destra). Elimina le tabelle o modificale in modo che non utilizzino questi operatori.
Controllare la memoria
Se l'istanza non dispone di memoria condivisa sufficiente, potresti visualizzare questo messaggio di errore: ERROR: out of shared memory.
Questo errore si verifica più facilmente se hai più di 10.000 tabelle.
Prima di tentare un upgrade, imposta il valore del
flag max_locks_per_transaction
su un valore pari a circa il doppio del numero di tabelle nell'istanza. L'istanza
viene riavviata quando modifichi il valore di questo flag.
Controllare la capacità delle connessioni
Se la tua istanza ha una capacità di connessione insufficiente, potresti visualizzare questo
messaggio di errore: ERROR: Insufficient connections.
Cloud SQL consiglia di aumentare il valore del flag max_connections
in base al numero di database nell'istanza. L'istanza viene
riavviata quando modifichi il valore di questo flag.
Controlla la presenza di un riferimento di colonna ambiguo
Cloud SQL esegue automaticamente un controllo pre-upgrade per identificare le viste definite dall'utente che dipendono dalle viste del catalogo di sistema, ad esempio pg_stat_activity
o
pg_stat_replication
. La struttura delle colonne di queste viste del catalogo di sistema può
cambiare tra le versioni principali di PostgreSQL. Se hai visualizzazioni che select *
o
si basano sull'ordine delle colonne di queste visualizzazioni di sistema, potrebbero diventare
incompatibili dopo un upgrade, causando un errore, ad esempio
ERROR: column reference "column_name" is ambiguous
.
Il controllo pre-upgrade rileva queste visualizzazioni controllando le dipendenze. Se vengono trovate viste incompatibili, il processo di upgrade viene interrotto e viene visualizzato un messaggio di errore. Questo messaggio elenca le viste incompatibili in ogni database che devono essere risolte.
Esempio di messaggio di errore
Per problemi relativi a
pg_stat_activity
:Please remove the following usages of views that depend on functions returning data types of pg_stat_activity before attempting an upgrade: (database: my_db, schema name: public, view name: my_stat_activity_view)
Per problemi relativi a
pg_stat_replication
:Please remove the following usages of views that depend on functions returning data types of pg_stat_replication before attempting an upgrade: (database: my_db, schema name: public, view name: my_replication_stats_view)
Per risolvere questi problemi e procedere con l'upgrade: 1. Identifica le viste elencate nel messaggio di errore del controllo pre-upgrade.
Trascina queste visualizzazioni utilizzando
DROP VIEW view_name;
.Riprova l'upgrade della versione principale.
Una volta completato l'upgrade, ricrea le visualizzazioni. Assicurati che le nuove definizioni delle viste siano compatibili con lo schema delle viste del catalogo di sistema nella versione corrente di PostgreSQL. Potresti dover elencare esplicitamente le colonne anziché utilizzare
select *
per evitare problemi futuri.
Per un esempio più dettagliato del problema e ulteriori approfondimenti, consulta questa discussione su Stack Overflow.
Controllare la presenza di SRF nelle istruzioni CASE
Se stai eseguendo l'upgrade dell'istanza dalla versione 9.6 e utilizzi funzioni di restituzione di set nelle istruzioni CASE, potresti visualizzare questo messaggio di errore ERROR: set-returning functions are not allowed in CASE
. Questo problema si verifica perché
a partire dalla versione 10, l'utilizzo di funzioni che restituiscono set nelle istruzioni CASE non è consentito.
Per risolvere il problema ed eseguire l'upgrade dell'istanza, assicurati che tutte le istruzioni CASE che utilizzano funzioni che restituiscono set vengano modificate per evitare il loro utilizzo prima di riprovare l'upgrade. Alcuni SRF di uso comune includono:
- unnest()
- generate_series()
- array_agg()
- regexp_split_to_table()
- jsonb_array_elements()
- json_array_elements()
- sonb_each()
- json_each()
Controllare le visualizzazioni create sui cast personalizzati
Se hai creato una visualizzazione su un cast personalizzato, viene visualizzato un messaggio di errore simile al seguente: ERROR: cannot cast type <type_1> to <type_2>
.
Questo problema si verifica a causa di problemi di autorizzazione sui cast creati personalizzati.
Per risolvere il problema, aggiorna l'istanza a [PostgreSQL version].R20240910.01_02
Per saperne di più, consulta Manutenzione self-service.
Controllare la proprietà del trigger evento
In Cloud SQL, tutti i trigger di eventi devono essere di proprietà di un utente con il ruolo
cloudsqlsuperuser
. Cloud SQL esegue un controllo pre-upgrade per
convalidare la proprietà di tutti i trigger di eventi. Se un trigger evento è di proprietà di un utente che non dispone del ruolo cloudsqlsuperuser
, la procedura di upgrade viene interrotta e potresti ricevere un messaggio di errore, ad esempio:
Please ensure that the owners of all event triggers have the cloudsqlsuperuser role assigned to them before attempting an upgrade: (database: your_db, triggerName your_trigger, owner: non_super_user)
Per risolvere il problema, cambia il proprietario del trigger evento in un utente
che disponga del ruolo cloudsqlsuperuser
, ad esempio postgres
, oppure assegna il ruolo
cloudsqlsuperuser
al proprietario attuale.
Per identificare i trigger evento con proprietari che non dispongono del ruolo richiesto, esegui il seguente comando:
SELECT t.evtname AS trigger_name, r.rolname AS current_owner FROM pg_event_trigger t JOIN pg_roles r ON t.evtowner = r.oid WHERE NOT pg_has_role(r.rolname, 'cloudsqlsuperuser', 'member');
I risultati mostrano qualsiasi attivatore di eventi con un proprietario che non dispone del ruolo
cloudsqlsuperuser
.
Controlla le colonne generate dalle tabelle non registrate
Se hai una tabella non registrata che ha generato colonne, potresti visualizzare il messaggio di errore
ERROR: unexpected request for new relfilenumber in binary upgrade mode
.
Questo problema si verifica a causa di discrepanze nelle caratteristiche di persistenza tra
le tabelle e le relative sequenze per le colonne generate.
Per risolvere il problema:
- Elimina le tabelle non registrate: se possibile, elimina le tabelle non registrate collegate alle colonne generate. Prima di procedere, assicurati che la perdita di dati possa essere mitigata in modo sicuro.
-
Converti in tabelle permanenti: converti temporaneamente le tabelle non registrate in tabelle permanenti
utilizzando i seguenti passaggi:
- Converti la tabella in una tabella registrata
ALTER TABLE
SET LOGGED; - Esegui l'upgrade della versione principale
- Converti di nuovo la tabella in una tabella non registrata
ALTER TABLE
SET UNLOGGED
- Converti la tabella in una tabella registrata
Puoi identificare tutte queste tabelle utilizzando la seguente query :
SELECT relnamespace::regnamespace, c.relname AS table_name, a.attname AS column_name, a.attidentity AS identity_type FROM pg_catalog.pg_class c JOIN pg_catalog.pg_attribute a ON a.attrelid = c.oid WHERE a.attidentity IN ('a', 'd') AND c.relkind = 'r' AND c.relpersistence = 'u' ORDER BY c.relname, a.attname;
Controlla i flag personalizzati per l'istanza PostgreSQL
Se esegui l'upgrade a un'istanza PostgreSQL, versione 14 o successive, controlla i nomi di eventuali flag di database personalizzati che hai configurato per l'istanza. Questo perché PostgreSQL ha imposto ulteriori limitazioni ai nomi consentiti per i parametri personalizzati.
Il primo carattere di un flag di database personalizzato deve essere alfabetico (A-Z o a-z). Tutti i caratteri successivi possono essere alfanumerici, il carattere speciale trattino basso (_) o il carattere speciale segno del dollaro ($).
Rimuovere le estensioni
Se esegui l'upgrade dell'istanza Cloud SQL,
potresti visualizzare questo messaggio di errore: pg_restore: error: could not execute
query: ERROR: role "16447" does not exist
.
Per risolvere il problema, segui questi passaggi:
- Rimuovi le estensioni
pg_stat_statements
epgstattuple
. - Esegui l'upgrade.
- Reinstalla le estensioni.
Operazione MVU in esecuzione per un periodo di tempo più lungo
Esistono due attività sottostanti associate a un upgrade della versione principale:
- Operazione di pre-controllo: restituisce un errore di timeout se non viene completata entro tre ore.
- Operazione di upgrade: restituisce un errore di timeout se non viene completata entro sei ore.
Se l'istanza ha un'operazione MAJOR_VERSION_UPGRADE
in corso per
un periodo di tempo più lungo del previsto, allora
esamina i log degli errori di PostgreSQL. Ciò potrebbe essere dovuto a problemi comuni, ad esempio:
- Un numero elevato di tabelle, viste o indici
- Risorse insufficienti, ad esempio CPU o memoria
- Transazioni principali che bloccano l'arresto dei database per l'avvio del processo di upgrade. Puoi utilizzare la console Google Cloud per controllare i processi in corso.
Errori comuni di controllo preliminare dell'upgrade della versione principale
I problemi rilevati dal controllo preliminare dell'upgrade della versione principale rientrano nelle seguenti categorie:
Estensioni incompatibili: si tratta di estensioni Cloud SQL per PostgreSQL sulla tua istanza che non funzionano con la nuova versione principale.
Dipendenze non supportate: si tratta di dipendenze che non sono supportate dalla nuova versione principale o che devono essere aggiornate per funzionare.
Incompatibilità del database: si tratta di problemi con il database o i dati che potrebbero verificarsi dopo un upgrade della versione principale. Ciò include differenze nelle strutture del database, nei tipi di dati, nella codifica, nelle regole di confronto o nelle modifiche al catalogo di sistema specifiche della nuova versione.
Estensioni non compatibili
La seguente tabella elenca gli errori comuni relativi alle estensioni incompatibili che il controllo preliminare dell'upgrade della versione principale potrebbe rilevare:
Tipo | Esempio di errore | Risoluzione |
---|---|---|
Estensione non supportata o ritirata | Your installation contains unsupported extensions for the
new version. These extensions must be removed before attempting an
upgrade: (database: %s, Extension name: %s) |
Rimuovi l'estensione da tutti i database che la utilizzano con
DROP EXTENSION $extension_name; . |
Versione dell'estensione incompatibile | Your installation contains incompatible version extensions.
These extensions must be upgraded to a compatible version before
attempting an upgrade: (database: %s, Extension name: %s) |
Aggiorna l'estensione a una versione compatibile con la versione di Cloud SQL per PostgreSQL di destinazione. Per le versioni compatibili, consulta Configurare le estensioni Cloud SQL per PostgreSQL. |
PostGIS file non pacchettizzati |
PostGIS version upgrade has not been completed, unpackaged
raster files present. Follow the steps at
https://postgis.net/documentation/tips/tip-removing-raster-from-2-3/ to
fix before major version upgrade. |
Pulisci i file raster non pacchettizzati. |
PostGIS funzioni ritirate |
PostGIS version upgrade has not been completed, deprecated
functions present. Please drop all objects using deprecated functions
and upgrade to a different version of PostGIS before major version
upgrade. |
Trova e rimuovi o modifica gli oggetti di database che utilizzano le funzioni PostGIS ritirate prima di eseguire l'upgrade dell'estensione PostGIS . |
Proprietà dell'estensione | Please ensure that the owner of the postgres_fdw extension
has the cloudsqlsuperuser role assigned to them before attempting an
upgrade: (database: my_db, extension name: postgres_fdw, owner: some_user) |
Modifica il proprietario dell'estensione utilizzando
ALTER EXTENSION postgres_fdw OWNER TO postgres; . |
Dipendenze non supportate
La seguente tabella elenca gli errori comuni relativi alle dipendenze non supportate che il controllo preliminare dell'upgrade della versione principale potrebbe rilevare:
Tipo | Esempio di errore | Risoluzione |
---|---|---|
Proprietà del trigger evento | Please ensure that the owners of all event triggers have the
cloudsqlsuperuser role assigned to them before attempting an upgrade:
(database: your_db, triggerName your_trigger, owner: non_super_user) |
Connettiti al database identificato utilizzando psql o
Cloud SQL Studio e cambia il proprietario del trigger in un utente
postgres . |
Istruzioni preparate non confermate | Please commit/rollback the following usages of 'Uncommitted
Prepared Statements'... (database: my_db, gid: my_prepared_xact) |
Esegui il commit o il rollback dell'istruzione preparata. |
Flag ritirati | flag "force_parallel_mode" is deprecated in new postgres
version, Please delete this flag before retrying again |
Rimuovi il flag di database dalla configurazione dell'istanza. |
Incompatibilità del database
La seguente tabella elenca gli errori comuni relativi alle incompatibilità del formato dei dati che il controllo preliminare dell'upgrade della versione principale potrebbe rilevare:
Tipo | Esempio di errore | Risoluzione |
---|---|---|
Tipo di dati sconosciuto | Please remove the following usages of 'Unknown' data types
before attempting an upgrade: (database: my_db, relation: my_table,
attribute: my_column) |
Rimuovi la colonna o la tabella oppure modifica il tipo di dati della tabella utilizzando
ALTER TABLE my_table ALTER COLUMN my_column TYPE TEXT; . |
Tipo di dati di reg* |
Please remove the following usages of 'reg*' data types before
attempting an upgrade: (database: my_db, relation: my_table, attribute:
my_column) |
Rimuovi la colonna o modifica il tipo di dati. |
Tipo di dati rimosso | Please remove the following usages of 'sql_identifier' data
types before attempting an upgrade: ... |
Converti in TEXT , timestamptz o un altro
tipo di dati adatto. |
aclitem Formato interno |
Please remove the following usages of 'aclitem' data types before attempting an upgrade: ... |
Interrompi l'utilizzo di aclitem nelle definizioni delle tabelle del database. |
Tipi di dati compositi definiti dal sistema | Please remove the following usages of 'composite' data types
before attempting an upgrade: (database: my_db, relation: my_table,
attribute: my_column) |
Modifica le colonne identificate in modo che utilizzino un tipo composito definito dall'utente o un tipo di dati standard. I tipi compositi di sistema potrebbero non essere coerenti tra le versioni principali. |
Tabelle con OIDS |
Please remove the following usages of tables with OIDs before attempting an upgrade: (database: my_db, relation: my_table) |
Aggiorna la tabella utilizzando ALTER TABLE my_table SET WITHOUT OIDS; . |
Operatori postfix definiti dall'utente |
Please remove the following usages of 'postfix operators'
before attempting an upgrade: (database: my_db, operation id: 12345,
operation namespace: public, operation name: !!, type namespace:
public, type name: mytype) |
Rimuovi gli operatori personalizzati postfix . Potresti dover
riscrivere il codice per utilizzare gli operatori prefisso o le chiamate di funzione. |
Funzioni polimorfiche incompatibili | Please remove the following usages of 'incompatible polymorphic'
functions before attempting an upgrade: (database: my_db, object kind:
function, object name: public.my_poly_func) |
Rimuovi o modifica la funzione per rimuovere le funzioni polimorfiche non compatibili. Ciò potrebbe significare modificare le firme o la logica delle funzioni per funzionare con Cloud SQL per PostgreSQL 14 e versioni successive. |
Conversioni di codifica definite dall'utente | Please remove the following usages of user-defined encoding
conversions before attempting an upgrade: (database: my_db, namespace
name: public, encoding conversions name: my_encoding_conv) |
Rimuovi la conversione della codifica definita dall'utente. Potresti doverla ricreare dopo l'upgrade con una firma compatibile con la nuova versione. |
Controlla la presenza di un riferimento di colonna ambiguo | Cloud SQL controlla automaticamente le viste definite dall'utente che
si basano sulle viste del catalogo di sistema. La struttura delle colonne di queste visualizzazioni
del catalogo di sistema potrebbe cambiare tra le versioni principali.Please remove the following usages of views that depend on functions returning data types of pg_stat_activity before attempting an upgrade: (database: my_db, schema name: public, view name: my_stat_activity_view)
|
Trova le visualizzazioni elencate nel messaggio di errore e rimuovile utilizzando il comando
DROP VIEW . Dopo l'upgrade, ricrea le visualizzazioni. |
Tabelle non registrate con colonne generate o sequenze registrate | Please drop the following usages of 'Unlogged Tables with Logged
Sequence' before attempting an upgrade: (database: your_db, table name: problematic_table) |
Puoi convertire la tabella in LOGGED o rimuoverla
utilizzando il comando DROP TABLE . Ricrea la tabella dopo
l'upgrade. |
Risolvi il problema del percorso di ricerca vuoto | Please update the search path of the 'll_to_earth' function (database: your_db, search path: ) |
L'estensione earthdistance utilizza earth
e cube types senza specificare il percorso di ricerca della funzione.
Aggiorna il percorso di ricerca utilizzando
ALTER FUNCTION ll_to_earth SET search_path = public; . |
Ripristina la versione principale precedente dell'istanza primaria
Se il sistema di database aggiornato non funziona come previsto, potrebbe essere necessario ripristinare la versione precedente dell'istanza principale. A questo scopo, ripristina il backup pre-upgrade in un'istanza di recupero Cloud SQL, ovvero una nuova istanza che esegue la versione pre-upgrade.
Per ripristinare una versione precedente dell'istanza primaria, segui questi passaggi:
Identifica il backup pre-upgrade.
Consulta Backup automatici degli upgrade.
Crea un'istanza di recupero.
Crea una nuova istanza Cloud SQL utilizzando la versione principale in esecuzione su Cloud SQL al momento della creazione del backup pre-upgrade. Imposta gli stessi flag e le stesse impostazioni dell'istanza utilizzate dall'istanza originale.
Ripristina il backup precedente all'upgrade.
Ripristina il backup pre-upgrade nell'istanza di recupero. L'operazione potrebbe richiedere diversi minuti.
Aggiungi le repliche di lettura.
Se utilizzi repliche di lettura, aggiungile singolarmente.
Connetti la tua applicazione.
Dopo aver recuperato il sistema di database, aggiorna l'applicazione con i dettagli sull'istanza di recupero e sulle relative repliche di lettura. Puoi riprendere a pubblicare il traffico nella versione precedente del database.
Domande frequenti
Quando esegui l'upgrade della versione principale del database, potrebbero sorgere le seguenti domande.
- Sì. La tua istanza rimane non disponibile per un periodo di tempo mentre Cloud SQL esegue l'upgrade.
- Quanto tempo richiede un upgrade?
L'upgrade di una singola istanza in genere richiede meno di 10 minuti. Se la configurazione dell'istanza ha un numero ridotto di vCPU o memoria, l'upgrade potrebbe richiedere più tempo.
Se la tua istanza ospita troppi database o tabelle oppure se i database sono molto grandi, l'upgrade potrebbe richiedere ore o addirittura andare in timeout perché il tempo totale di upgrade corrisponde al numero di oggetti nei database. Se hai più istanze di cui eseguire l'upgrade, il tempo di upgrade aumenta proporzionalmente. Se includi repliche nell'upgrade, l'operazione di upgrade può richiedere fino a un'ora, a seconda del numero di repliche dell'istanza principale.
- Posso monitorare ogni passaggio della procedura di upgrade?
- Anche se Cloud SQL ti consente di monitorare se un'operazione di upgrade è ancora in corso, non puoi monitorare i singoli passaggi di ogni upgrade.
- Posso annullare l'upgrade dopo averlo avviato?
- No, non puoi annullare un upgrade una volta avviato. Se l'upgrade non va a buon fine, Cloud SQL recupera automaticamente l'istanza nella versione precedente.
- Cosa succede alle mie impostazioni durante un upgrade?
Quando esegui un upgrade della versione principale in loco, Cloud SQL conserva le impostazioni del database, inclusi il nome dell'istanza, l'indirizzo IP, i valori dei flag configurati in modo esplicito e i dati utente. Tuttavia, il valore predefinito delle variabili di sistema potrebbe cambiare. Ad esempio, il valore predefinito del flag
password_encryption
in PostgreSQL 13 e versioni precedenti èmd5
. Quando esegui l'upgrade a PostgreSQL 14, il valore predefinito di questo flag cambia inscram-sha-256
.Per scoprire di più, consulta Configurare i flag di database. Se un determinato flag o valore non è più supportato nella versione di destinazione, Cloud SQL rimuove automaticamente il flag durante l'upgrade.
Passaggi successivi
- Scopri di più sulle opzioni per connettersi a un'istanza.
- Scopri di più sull'importazione e l'esportazione dei dati.
- Scopri di più sull'[impostazione dei flag di database][flags].