Per eseguire l'upgrade di un cluster AlloyDB per PostgreSQL a una versione principale di PostgreSQL successiva, mantenendo i nomi delle istanze, gli indirizzi IP e le stringhe di connessione esistenti, puoi pianificare, convalidare ed eseguire un upgrade della versione principale in loco. Per scoprire i casi d'uso, le fasi del flusso di lavoro e i backup automatici dell'upgrade della versione principale del database in loco, consulta Panoramica dell'upgrade della versione principale del database in loco.
Pianifica un upgrade della versione principale del database
Per pianificare l'upgrade della versione principale del database, segui questi passaggi:
Trova la versione principale attuale del database.
Console
Nella console Google Cloud , vai alla pagina Cluster.
Seleziona un cluster dall'elenco. Viene visualizzata la pagina Panoramica.
Individua la versione principale del database nel campo Versione.
gcloud
Per informazioni sull'installazione e su come iniziare a utilizzare gcloud CLI, consulta Installa gcloud CLI. Per informazioni sull'avvio di Cloud Shell, consulta Utilizza Cloud Shell.
Esegui questo comando per visualizzare i dettagli del cluster, inclusa la versione principale corrente:
gcloud alloydb clusters describe CLUSTER_ID --region=REGIONEffettua le seguenti sostituzioni:
- CLUSTER_ID: l'ID del cluster
- REGION: la località o la regione del cluster
REST v1beta
Esegui la seguente richiesta per ottenere i dettagli del cluster, inclusa la versione principale attuale:
GET https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_IDEffettua le seguenti sostituzioni:
- CLUSTER_ID: l'ID del cluster
- PROJECT_ID: l'ID progetto
- REGION: la località o la regione del cluster
Per inviare la richiesta, utilizza una delle seguenti opzioni:
curl (Linux, macOSo Cloud Shell)
Esegui questo comando:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID"PowerShell (Windows)
Esegui questo comando:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID| Select-Object -Expand ContentIdentifica una versione principale del database di destinazione dalla tabella seguente. Per un elenco completo delle versioni del database supportate da AlloyDB, consulta Versioni del database e policy per le versioni.
Versione principale di origine Versioni principali di destinazione supportate POSTGRES_14 - POSTGRES_15
- POSTGRES_16
- POSTGRES_17
- POSTGRES_18
POSTGRES_15 - POSTGRES_16
- POSTGRES_17
- POSTGRES_18
POSTGRES_16 - POSTGRES_17
- POSTGRES_18
POSTGRES_17 - POSTGRES_18
Esamina le funzionalità offerte in ogni versione principale del database.
Identifica eventuali incompatibilità da risolvere. Le nuove versioni principali possono introdurre modifiche incompatibili che potrebbero richiedere la modifica del codice dell'applicazione, dello schema o delle impostazioni del database.
Prima di avviare l'upgrade alla versione principale nel cluster di produzione, ti consigliamo di clonare il cluster e testare l'upgrade alla versione principale nel cluster clonato.
Oltre a verificare che l'upgrade venga completato correttamente, esegui dei test per assicurarti che l'applicazione si comporti come previsto nel cluster di cui è stato eseguito l'upgrade.
Prepara il cluster per un upgrade della versione principale
Per connetterti al database, utilizza una delle seguenti opzioni:
1. Elimina o promuovi le repliche tra regioni. Gli upgrade della versione principale del database sul posto non supportano le repliche tra regioni. Per saperne di più, consulta Replica tra regioni.Se il tuo cluster AlloyDB è un'origine di replica logica, disattiva le sottoscrizioni downstream ed elimina tutti gli slot di replica logica. Puoi riattivare le sottoscrizioni e ricreare gli slot di replica logica dopo l'upgrade. Se l'istanza AlloyDB è solo una destinazione di replica logica, questi passaggi non sono necessari. Per disattivare le sottoscrizioni ed eliminare gli slot di replica logica, segui questi passaggi:
Disattiva ogni sottoscrizione downstream sul sottoscrittore o sulla destinazione di replica downstream. Non disattivare le sottoscrizioni downstream nell'istanza AlloyDB di cui viene eseguito l'upgrade:
Se utilizzi
pglogical, esegui questo comando:SELECT * FROM pglogical.alter_subscription_disable(SUBSCRIPTION_NAME, immediate);Sostituisci
SUBSCRIPTION_NAMEnella query con il nome della sottoscrizione esistente. Se l'abbonamento deve essere disattivato immediatamente, imposta il valore del parametroimmediatesutrue. Per impostazione predefinita, il valore èfalsee l'abbonamento viene disattivato solo al termine della transazione corrente.Ad esempio:
postgres=> SELECT * FROM pglogical.alter_subscription_disable('test_sub',true); alter_subscription_disable ---------------------------- t (1 row)Se utilizzi un'estensione diversa da
pglogical, esegui il seguente comando:ALTER SUBSCRIPTION SUBSCRIPTION_NAME DISABLE;
Elimina tutti gli slot di replica logica nell'istanza principale di AlloyDB eseguendo il comando seguente:
SELECT pg_drop_replication_slot(REPLICATION_SLOT_NAME) FROM pg_replication_slots WHERE slot_type = 'logical';Sostituisci
REPLICATION_SLOT_NAMEnella query con il nome dello slot di replica.
Gestisci le estensioni PostgreSQL. Per saperne di più, consulta Configura le estensioni del database.
I controlli pre-upgrade rilevano le incompatibilità delle estensioni e mostrano queste violazioni nei log, insieme alle azioni suggerite. Per saperne di più, consulta Visualizza gli errori dei controlli pre-upgrade.
Potresti dover eseguire le seguenti operazioni:
- Elimina le estensioni non più supportate nella versione di destinazione.
Esegui l'upgrade di PostGIS e delle relative estensioni (
address_standardizer,address_standardizer_data_us,postgis_raster,postgis_sfcgal,postgis_tiger_geocoderepostgis_topology) a una versione supportata nella versione PostgreSQL di destinazione. Per saperne di più, consulta Estensioni PostGIS. La tabella seguente elenca le versioni minime supportate dell'estensione PostGIS per ogni versione principale di PostgreSQL:Versione PostgreSQL Versione minima supportata di PostGIS PG14 3.1 PG15 3.2 PG16 3,4 PG17 3,5 PG18 3,6 Ad esempio, se la tua versione di PostGIS è 3.1.x e vuoi eseguire l'upgrade da POSTGRES 14 a POSTGRES 16, utilizza il seguente comando per eseguire l'upgrade dell'estensione PostGIS:
ALTER EXTENSION postgis UPDATE TO '3.4.0'; SELECT PostGIS_Version();
Verifica che i tuoi cluster non contengano appartenenze a ruoli orfani. Gli upgrade della versione principale in loco non conservano le appartenenze ai ruoli in cui l'utente che ha concesso l'autorizzazione originale non esiste più. Se un cluster contiene appartenenze orfane nel catalogo
pg_auth_members, queste appartenenze ai ruoli vengono perse dopo l'upgrade.Per rilevare le iscrizioni orfane, esegui questa query:
SELECT roleid::regrole, member::regrole, grantor::regrole FROM pg_auth_members WHERE grantor::regrole::text ~ '^[0-9]+$';Se la query restituisce righe, ricrea le appartenenze ai ruoli prima di eseguire l'upgrade del cluster. Per ogni iscrizione orfana, revoca il privilegio e concedilo di nuovo immediatamente. In questo modo, l'abbonamento viene associato a un concedente attuale e valido (ad esempio
alloydbadmin).Esegui il seguente blocco di transazioni per ogni iscrizione orfana:
BEGIN; REVOKE ROLE_NAME FROM MEMBER_NAME; GRANT ROLE_NAME TO MEMBER_NAME; COMMIT;Sostituisci ROLE_NAME e MEMBER_NAME con i ruoli dei risultati della query.
Verifica che le connessioni siano consentite per ogni database, ad eccezione di
template0, eseguendo la seguente query e controllando il campodatallowconnper ogni database:SELECT datname,datallowconn from pg_database;Un valore
tnel campodatallowconnindica che la connessione è consentita. Un valorefindica che non è possibile stabilire una connessione. Il databasetemplate0non deve consentire le connessioni.Per consentire le connessioni a un database, esegui questo comando:
ALTER DATABASE DATABASE_NAME WITH ALLOW_CONNECTIONS = true;Verifica che
template1sia un database modello eseguendo il seguente comando:SELECT datname, datistemplate FROM pg_database WHERE datname = 'template1';Se
datistemplateèf, impostalo sutrueeseguendo questo comando:ALTER DATABASE template1 WITH IS_TEMPLATE true;
Esegui l'upgrade della versione principale del cluster in loco
L'upgrade della versione principale del database sul posto può richiedere da 40 minuti a 48 ore, a seconda di fattori quali le dimensioni del database, le dimensioni dello schema e il numero di istanze del pool di lettura nel cluster. Il tempo di inattività dell'istanza principale è in genere compreso tra 20 minuti e un'ora e dipende principalmente dallo schema del database.
Quando effettui una richiesta di upgrade della versione principale in loco, AlloyDB esegue innanzitutto i controlli preliminari. Se AlloyDB determina che il cluster non è pronto per l'upgrade della versione principale, la richiesta non va a buon fine. Per saperne di più, consulta Risolvi i problemi relativi a un upgrade in loco della versione principale.
Per eseguire l'upgrade della versione principale del database in loco, segui questi passaggi:
Console
Nella console Google Cloud , vai alla pagina Cluster.
Seleziona un cluster dall'elenco. Viene visualizzata la pagina Panoramica.
Fai clic su Esegui l'upgrade per avviare la procedura di upgrade della versione principale del database.
Nel passaggio Scegli la versione del database, seleziona una delle versioni principali del database disponibili come versione principale di destinazione.
Fai clic su Continua.
Nel passaggio Esegui l'upgrade del cluster, nel campo ID cluster, inserisci il nome del cluster.
Fai clic su Avvia upgrade. Viene visualizzato il passaggio Stato dell'upgrade, in cui puoi controllare lo stato dell'upgrade. Per saperne di più, consulta Monitora l'upgrade della versione principale del database.
gcloud
Avvia l'upgrade della versione principale in loco eseguendo questo comando:
gcloud alloydb clusters upgrade CLUSTER_ID --region=REGION --version=DATABASE_VERSION --asyncDi seguito è riportato un comando di esempio:
gcloud alloydb clusters upgrade my-cluster --region=us-central1 --version=POSTGRES_16 --asyncREST v1beta
Avvia l'upgrade della versione principale in loco eseguendo questo comando:
PATCH https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:upgradeCorpo JSON della richiesta:
{
"version": "DATABASE_VERSION"
}Sostituisci con l'enum della versione principale del database di destinazione, che deve essere successiva alla versione attuale.
Corpo JSON della richiesta di esempio:
{
"version": "POSTGRES_16"
}
To upgrade an instance within your database cluster to a PostgreSQL version, use a [Terraform resource](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/alloydb_instance) and set the `database_version` to a [supported target major version](/alloydb/docs/upgrade-db-inplace-major-version#plan-upgrade).
```none
resource "google_alloydb_instance" "default" {
cluster = google_alloydb_cluster.default.name
instance_id = "alloydb-instance"
instance_type = "PRIMARY"
machine_config {
cpu_count = 2
}
depends_on = [google_service_networking_connection.vpc_connection]
}
resource "google_alloydb_cluster" "default" {
cluster_id = "alloydb-cluster"
location = "us-central1"
network_config {
network = google_compute_network.default.id
}
database_version = "POSTGRES_16"
initial_user {
password = "alloydb-cluster"
}
}
data "google_project" "project" {}
resource "google_compute_network" "default" {
name = "alloydb-network"
}
resource "google_compute_global_address" "private_ip_alloc" {
name = "alloydb-cluster"
address_type = "INTERNAL"
purpose = "VPC_PEERING"
prefix_length = 16
network = google_compute_network.default.id
}
resource "google_service_networking_connection" "vpc_connection" {
network = google_compute_network.default.id
service = "servicenetworking.googleapis.com"
reserved_peering_ranges = [google_compute_global_address.private_ip_alloc.name]
}
```
To learn how to apply or remove a Terraform configuration, see [Basic Terraform commands](/docs/terraform/basic-commands).
Monitora l'upgrade della versione principale del cluster
Dopo l'avvio dell'upgrade della versione principale del database in loco, puoi monitorare lo stato dell'upgrade utilizzando la console Google Cloud , gcloud CLI o l'API REST.
Console
Segui questi passaggi per controllare lo stato dell'upgrade nella console Google Cloud :
Nella console Google Cloud , vai alla pagina Cluster.
Seleziona il cluster di cui è in corso l'upgrade. Viene visualizzata la pagina Panoramica.
Apri la pagina Panoramica.
Fai clic su Stato dell'upgrade. Viene visualizzata la pagina Stato upgrade, in cui puoi controllare lo stato dell'upgrade.
gcloud
Per controllare lo stato dell'upgrade in gcloud CLI, segui questi passaggi:
Recupera l'ID operazione di upgrade eseguendo il comando seguente. Prima di eseguire il comando, sostituisci la variabile
CLUSTER_IDcon il nome del cluster:gcloud alloydb operations list --cluster=CLUSTER_ID --region=REGION_ID --filter=metadata.verb:upgradeLa chiamata gcloud CLI utilizzata per attivare un upgrade della versione principale.
alloydb beta clusters upgrade, restituisce l'ID operazione come risposta sincrona. In alternativa, utilizza il comandogcloud alloydb operations listcon il flag--cluster.Di seguito è riportato un comando di esempio:
gcloud alloydb operations list --cluster=my-cluster --region=us-central1 --filter=metadata.verb:upgradeMonitora lo stato dell'upgrade eseguendo il comando
gcloud alloydb operations describe:gcloud alloydb operations describe OPERATION_ID --region=REGION
REST v1beta
Per controllare lo stato dell'upgrade nell'API REST, segui questi passaggi:
Recupera l'ID dell'operazione di upgrade.
Utilizza la seguente richiesta
GETcon il metodooperations.listper elencare tutte le operazioni di upgrade e trovare quella corrispondente al cluster di destinazione:GET https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/operations/filter=metadata.verb:upgradeLa chiamata API REST restituisce l'ID operazione come risposta sincrona.
Monitora lo stato dell'upgrade.
Utilizza una richiesta GET con il metodo
operations.get:GET https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/operations/OPERATION_IDEffettua le seguenti sostituzioni:
- PROJECT_ID: l'ID progetto
- REGION: la località o la regione del cluster
- OPERATION_ID: l'ID operazione di upgrade, recuperato nel passaggio precedente.
Di seguito è riportato un esempio di risposta quando l'operazione è in corso:
{ "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata", "createTime": "2024-09-16T23:17:39.727319438Z", "target": "projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID", "verb": "upgrade", "requestedCancellation": false, "apiVersion": "v1", "upgradeClusterStatus": { "state": "IN_PROGRESS", "cancellable": true, "stages": [ { "stage": "ALLOYDB_PRECHECK", "state": "IN_PROGRESS" }, { "stage": "PG_UPGRADE_CHECK", "state": "IN_PROGRESS" }, { "stage": "PREPARE_FOR_UPGRADE", "state": "NOT_STARTED" }, { "stage": "PRIMARY_INSTANCE_UPGRADE", "state": "NOT_STARTED" }, { "stage": "CLEANUP", "state": "NOT_STARTED" } ] } }, "done":false }Di seguito è riportato un esempio di risposta quando l'operazione è completata:
{ "operations": [ { "metadata": { "@type": "type.googleapis.com/google.cloud.alloydb.v1betaalpha.OperationMetadata", "createTime": "2024-09-16T21:52:17.303861317Z", "endTime": "2024-09-16T22:29:13.947527949Z", "target": "projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID", "verb": "upgrade", "requestedCancellation": false, "apiVersion": "v1beta", "upgradeClusterStatus": { "state": "SUCCESS", "stages": [ { "stage": "ALLOYDB_PRECHECK", "state": "SUCCESS" }, { "stage": "PG_UPGRADE_CHECK", "state": "SUCCESS" }, { "stage": "PREPARE_FOR_UPGRADE", "state": "SUCCESS" }, { "stage": "PRIMARY_INSTANCE_UPGRADE", "state": "SUCCESS" }, { "stage": "CLEANUP", "state": SUCCESS" } ] } }, "response": { … }, "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID", "done": true } ] }Per saperne di più sulla struttura
response, consulta Risposta all'operazione di upgrade.
Risposta all'operazione di upgrade
La risposta dell'operazione UpgradeCluster include quanto segue:
status: lo stato dell'operazione di upgrade complessiva. I valori possibili sonoSUCCESS,FAILEDePARTIAL_SUCCESS.message: fornisce un breve riepilogo del risultato dell'operazione di upgrade.clusterUpgradeDetails: i dettagli dell'upgrade dei cluster di cui viene eseguito l'upgrade. Questo campo è un array. AlloyDB consente un solo upgrade del cluster, pertanto include una sola voce.name: il nome completo del cluster.upgradeStatus: lo stato dell'upgrade del cluster. I valori possibili sonoSUCCESS,FAILED,PARTIAL_SUCCESS.PARTIAL_SUCCESSindica che non è possibile eseguire l'upgrade di una o più istanze del pool di lettura.clusterType: il tipo di cluster. AlloyDB consente solo di eseguire l'upgrade di un singolo clusterPRIMARY. Questo tipo deve essere semprePRIMARY.databaseVersion: la versione attuale del database del cluster.stageInfo: informazioni sulle fasi di upgrade principali.status:SUCCESSoFAILEDlogs_url: link ai log generati dalla fase. Vuoto per le fasi che non generano log.
instanceUpgradeDetails: informazioni sull'upgrade per tutte le istanze del cluster.name: il nome completo dell'istanzaupgradeStatus:SUCCESSoFAILEDinstanceType:PRIMARYoREAD_POOL
Di seguito è riportato un esempio di risposta dell'operazione di upgrade:
"response": {
"@type": "type.googleapis.com/google.cloud.alloydb.v1alpha.UpgradeClusterResponse",
"status": "SUCCESS",
"message": "Cluster upgraded successfully.",
"clusterUpgradeDetails": [
{
"name": "projects/1234/locations/us-central1/clusters/abc",
"upgradeStatus": "SUCCESS",
"clusterType": "PRIMARY",
"databaseVersion": "POSTGRES_16",
"stageInfo": [
{
"stage": "ALLOYDB_PRECHECK",
"status": "SUCCESS",
"logsUrl": "https://console.cloud.google.com/logs/query..."
},
{
"stage": "PG_UPGRADE_CHECK",
"status": "SUCCESS",
"logsUrl": "https://console.cloud.google.com/logs/query..."
},
{
"stage": "PRIMARY_INSTANCE_UPGRADE",
"status": "SUCCESS",
"logsUrl": "https://console.cloud.google.com/logs/query..."
},
{
"stage": "READ_POOL_INSTANCES_UPGRADE",
"status": "SUCCESS",
}
],
"instanceUpgradeDetails": [
{
"name": "projects/1234/locations/us-central1/clusters/abc/instances/primary",
"upgradeStatus": "SUCCESS",
"instanceType": "PRIMARY",
},
{
"name": "projects/1234/locations/us-central1/clusters/abc/instances/read1",
"upgradeStatus": "SUCCESS",
"instanceType": "READ_POOL",
},
{
"name": "projects/1234/locations/us-central1/clusters/abc/instances/read2",
"upgradeStatus": "SUCCESS",
"instanceType": "READ_POOL",
}
]
}
]
}
Visualizza i log di upgrade di AlloyDB
AlloyDB pubblica tutti i log di upgrade nel nome del log postgres_upgrade.
Per visualizzare i log relativi all'upgrade, segui questi passaggi:
-
Nella console Google Cloud , vai alla pagina Esplora log:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.
Seleziona
alloydb.googleapis.com/postgres_upgradecome nome del log. Questo si traduce nella query"logName="projects/PROJECT_ID/logs/alloydb.googleapis.com%2Fpostgres_upgrade".Utilizza le seguenti etichette per filtrare i log:
Etichetta Descrizione LOG_TYPEFase di upgrade che ha generato il log. I valori possibili sono ALLOYDB_PRECHECK,PG_UPGRADE_CHECKePG_UPGRADE.OPERATION_NAMENome completo dell'operazione di upgrade. FILE_NAMECompilato solo per i log pg_upgrade_checkepg_upgradee corrisponde ai file di log generati dall'utilitàpg_upgrade.
Di seguito è riportata una query di esempio che restituisce i log di upgrade del pre-controllo di AlloyDB per un'operazione specifica:
logName="projects/project1234/logs/alloydb.googleapis.com%2Fpostgres_upgrade"
labels.LOG_TYPE="ALLOYDB_PRECHECK"
labels.OPERATION_NAME="projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID"
Per saperne di più sui controlli di upgrade, consulta Panoramica dell'upgrade della versione principale del database in loco.
Visualizza i log di upgrade di un cluster
Per visualizzare i log di upgrade di un cluster quando non conosci l'ID operazione e l'operazione è scaduta, segui questi passaggi:
-
Nella console Google Cloud , vai alla pagina Esplora log:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.
Esegui una query sui log di pre-controllo di AlloyDB per il tuo cluster.
logName="projects/PROJECT_ID/logs/alloydb.googleapis.com%2Fpostgres_upgrade" labels.LOG_TYPE="ALLOYDB_PRECHECK" resource.labels.cluster_id=CLUSTER_IDTrova
Operation_IDdall'etichetta di logOPERATION_NAME.Nell'esempio seguente,
Operation_IDdiOPERATION_NAMEèoperation-1728225968201-623cff6ed1e02-e34b7191-3cd92013.labels.OPERATION_NAME="projects/myproject/locations/us-central1/operations/operation-1728225968201-623cff6ed1e02-e34b7191-3cd92013"Esegui una query per tutti i log
postgres_upgradeper un'operazione specifica.logName="projects/production-1/logs/alloydb.googleapis.com%2Fpostgres_upgrade" labels.OPERATION_NAME="operation-1728225968201-623cff6ed1e02-e34b7191-3cd92013"
Annulla l'upgrade della versione principale del database in loco
Puoi annullare un'operazione di upgrade della versione principale in corso dalla console Google Cloud , da gcloud CLI o dall'API REST.
Trova l'ID operazione
Per annullare l'operazione di upgrade della versione principale utilizzando gcloud CLI o l'API REST, devi avere l'ID operazione. Devi specificare questo ID nel comando gcloud CLI o API REST in modo che AlloyDB sappia quale operazione annullare.
Non puoi annullare l'upgrade dopo che l'upgrade dell'istanza principale ha raggiunto un determinato punto.
Quando avvii l'upgrade della versione principale in loco, l'ID operazione viene restituito nel campo name della risposta. Consulta l'esempio di risposta.
Puoi anche trovare l'ID operazione effettuando una chiamata operations.list sul cluster AlloyDB.
Annulla l'upgrade
Per annullare l'upgrade della versione principale in loco, segui questi passaggi:
Console
Nella console Google Cloud , vai alla pagina Cluster.
Seleziona un cluster dall'elenco. Viene visualizzata la pagina Panoramica.
Fai clic su Stato dell'upgrade.
Fai clic su Annulla upgrade. Se l'upgrade non è annullabile, questo pulsante non è selezionabile.
gcloud
Utilizza il comando gcloud alloydb operations cancel per annullare l'operazione:
gcloud alloydb operations cancel OPERATION_IDSostituisci la variabile OPERATION_ID con l'ID dell'operazione.
Se UpgradeClusterStatus mostra cancellable come false nell'output del comando gcloud alloydb operations cancel, AlloyDB ignora la richiesta di annullamento e continua con l'upgrade. In questo caso, l'API non genera un errore e restituisce una risposta vuota. Per ulteriori informazioni sullo stato dell'upgrade, consulta
Monitora l'upgrade della versione principale del cluster.
REST v1beta
Esegui questo comando:
POST https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/operations/OPERATION_ID:cancel
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID progetto
- OPERATION_ID: l'ID dell'operazione di importazione o esportazione.
Se cancellable in UpgradeClusterStatus è false, non puoi annullare l'upgrade.
Per inviare la richiesta, utilizza una delle seguenti opzioni:
curl (Linux, macOSo Cloud Shell)
Esegui questo comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://alloydb.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID:cancel"
PowerShell (Windows)
Esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/operations/OPERATION_ID:cancel"| Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente:
Risposta
Questa chiamata API REST non restituisce alcuna risposta.
Completa l'upgrade della versione principale in loco
Per completare l'upgrade della versione principale, connettiti a un'istanza AlloyDB utilizzando AlloyDB Studio, psql o altri metodi di connessione.
Se utilizzi un sistema non AlloyDB, consulta la documentazione del sistema per istruzioni sulla connessione.
Dopo aver eseguito l'upgrade del cluster, segui questi passaggi per completarlo:
Se in precedenza hai disattivato
pglogical, riattiva la replica dipglogical. L'abilitazione della replicapglogicalcrea automaticamente lo slot di replica richiesto.Elimina la sottoscrizione
pglogicalsulla replica di destinazione utilizzando il seguente comando:select pglogical.drop_subscription(subscription_name name);Sostituisci
namecon il nome della sottoscrizione esistente. Ad esempio:postgres=> select pglogical.drop_subscription(subscription_name:= 'test_sub'); -[ RECORD 1 ]-----+-- drop_subscription |1Ricrea la sottoscrizione
pglogicalsulla destinazione o sulla replica fornendo le seguenti informazioni di connessione all'istanza AlloyDB principale:SELECT pglogical.create_subscription( subscription_name :='test_sub',<br> provider_dsn := 'host=primary-ip port=5432 dbname=postgres user=replication_user password=replicapassword' );Controlla lo stato della sottoscrizione utilizzando il seguente comando:
SELECT * FROM pglogical.show_subscription_status('test_sub');Testa la replica eseguendo transazioni di scrittura e verificando che le modifiche siano visibili nella destinazione.
Aggiorna manualmente le estensioni del database nei database di cui è stato eseguito l'upgrade.
Sebbene gli upgrade della versione principale installino automaticamente i file binari dell'estensione più recenti sul software sottostante dell'istanza, non aggiornano automaticamente il catalogo del database dell'estensione. È tua responsabilità aggiornare manualmente le estensioni per assicurarti che utilizzino le ultime versioni supportate. Per le istruzioni, vedi Aggiorna un'estensione.
Aggiorna le statistiche del database.
Al termine dell'upgrade, esegui
ANALYZEsul cluster principale per aggiornare le statistiche di sistema. Statistiche accurate garantiscono che il piano di query di PostgreSQL elabori le query in modo ottimale. La mancanza di statistiche può comportare piani di query imprecisi, che potrebbero peggiorare le prestazioni e occupare troppa memoria.Esegui test di accettazione per assicurarti che il sistema di cui è stato eseguito l'upgrade funzioni come previsto.
Verifica che la versione principale del database di cui è stato eseguito l'upgrade in loco venga visualizzata nella pagina Panoramica del cluster nella console Google Cloud .
Ripristina la versione principale precedente
Se il sistema di database di cui hai eseguito l'upgrade non funziona come previsto, potresti dover ripristinare lo stato precedente all'upgrade. Puoi farlo eseguendo il ripristino da un backup precedente all'upgrade, ovvero quello creato automaticamente da AlloyDB durante il processo di upgrade o un backup esistente precedente all'upgrade, per creare un nuovo cluster con lo stato precedente all'upgrade.
Per eseguire il ripristino a uno stato precedente all'upgrade, segui questi passaggi:
Identifica un backup precedente all'upgrade da cui eseguire il ripristino. Durante il processo di upgrade, AlloyDB crea automaticamente un backup pre-upgrade con il prefisso
pre-upgrade-bkp. Per saperne di più, consulta Visualizza un elenco di backup.Avvia un ripristino dal backup precedente all'upgrade, che crea un nuovo cluster con la versione precedente di PostgreSQL. Per saperne di più, consulta Ripristina un cluster da un backup archiviato.
Connetti la tua applicazione. Aggiorna l'applicazione con i dettagli del cluster ripristinato e delle relative repliche di lettura. Puoi riprendere la gestione del traffico sul cluster ripristinato.
Puoi anche eseguire un recupero point-in-time a un momento precedente all'upgrade. Per saperne di più, consulta Utilizza il recupero point-in-time (PITR).
Limitazioni
Le seguenti limitazioni influiscono sugli upgrade della versione principale in loco per AlloyDB:
- Non puoi eseguire un upgrade della versione principale in loco su un cluster secondario. - Quando esegui un upgrade della versione principale in loco, tieni presente che l'upgrade delle istanze con più di 1000 database o 1 milione di oggetti (come tabelle e viste) richiede molto tempo e potrebbe scadere. Questa limitazione è indipendente dalle dimensioni effettive dei dati. - AlloyDB non supporta l'upgrade dei cluster che utilizzanopg_largeobject_metadata. Se select count(*) from pg_largeobject_metadata;
è diverso da zero, l'upgrade non va a buon fine.
- AlloyDB non conserva le appartenenze ai ruoli in cui l'utente che ha concesso il ruolo non esiste più. Se il tuo database contiene queste
iscrizioni orfane, risolvile prima di eseguire l'upgrade.
Per saperne di più, consulta Prepara il cluster.
- L'operazione di upgrade della versione principale in loco potrebbe essere completata prima del backup pre-upgrade o prima del completamento dei backup post-upgrade, soprattutto se hai un database di grandi dimensioni con meno oggetti schema.
- Potrebbe verificarsi un breve ritardo tra il momento in cui le scritture riprendono sull'istanza di cui è stato eseguito l'upgrade e il momento in cui viene creato il backup post-upgrade. Ciò significa che i contenuti del backup post-upgrade potrebbero non corrispondere ai contenuti del database prima dell'upgrade della versione principale.
- I backup pre-upgrade potrebbero comunque essere creati quando un upgrade della versione principale in loco non va a buon fine.
- Poiché i backup degli upgrade automatici sono continui, non puoi eliminarli finché non raggiungono il periodo di conservazione massimo dei backup e del ripristino continui.
Quando viene raggiunto il periodo di conservazione massimo, i backup vengono sottoposti a garbage collection.
In alternativa, puoi utilizzare gcloud CLI per
eliminare manualmente i backup.
Per saperne di più, consulta
Limitazioni all'eliminazione dei backup.
Passaggi successivi
- Scopri di più sugli upgrade delle versioni principali del database in loco.
- Risolvi i problemi relativi a un upgrade della versione principale in loco.
- Scopri di più sugli errori di upgrade della versione principale del database in loco.