Aggiornamento a una nuova versione principale

A partire da dicembre 2025, Databases for PostgreSQL offre tre diversi percorsi di aggiornamento:

  • Aggiornamento in loco a una nuova versione principale.
  • Ripristino dal backup.
  • Aggiornamento da una replica di sola lettura.

Quando una versione principale di un database è prossima alla fine del suo ciclo di vita (EOL), è consigliabile eseguire l'aggiornamento a una versione principale corrente.

Trova le versione disponibili di Databases for PostgreSQL nella pagina IBM Cloud del catalogo, dall'endpoint Cloud Databases CLI ibmcloud cdb deployables-showo dall'API Cloud Databases /deployables.

Quando si esegue l'aggiornamento a una nuova istanza, è necessario modificare anche le informazioni di connessione nell'applicazione.

Nei seguenti comandi di esempio, è necessario il CRN completo dell'istanza del database per l' {id} e. Poiché il CRN contiene caratteri speciali, deve essere codificato con l' URL a per evitare un errore "not_found".

Requisiti per l'aggiornamento a una versione principale più recente di PostgreSQL

Prima di procedere con qualsiasi aggiornamento di versione principale, verifica che tutte le estensioni, gli oggetti di replica e le dipendenze delle applicazioni siano stati prima messi a norma.

Alcune estensioni e alcuni oggetti di replica logica sono specifici di una determinata versione oppure dipendono da componenti lato server che devono corrispondere alla versione principale di PostgreSQL. Rimuoverli prima dell'aggiornamento aiuta a evitare errori e consente di ricreare solo gli oggetti supportati una volta che la nuova versione è attiva.

Estensioni e oggetti di replica logica da esaminare

Prima di procedere all'aggiornamento, verificare i seguenti punti:

Estensioni

  • pg_repack
  • old_snapshot
  • wal2json
  • anon
  • PostGIS

Slot di replica

  • Logical replication slots

Dipendenze dell'applicazione

Se si rimuovono estensioni o oggetti di replica da cui dipendono le applicazioni, verificare i flussi di dati e il comportamento delle applicazioni prima di procedere con l'aggiornamento. Inoltre, tieni conto delle possibili interruzioni nella logica della tua applicazione che dipende da specifiche funzionalità di PostgreSQL.

pg_repack

Eliminare la directory pg_repack prima dell'aggiornamento e ricrearla dopo l'aggiornamento. pg_repack utilizza un'estensione specifica per la versione e componenti client/server che devono corrispondere alla versione principale di PostgreSQL.

DROP EXTENSION pg_repack;

Ricrea l'estensione dopo l'aggiornamento solo se il tuo carico di lavoro lo richiede ancora.

CREATE EXTENSION pg_repack;

old_snapshot

Prima dell'aggiornamento, eliminare la cartell old_snapshot. PostgreSQL NON ricrearlo dopo l'aggiornamento a Windows 18, poiché non è più supportato.

DROP EXTENSION old_snapshot;

wal2json slot di replica

Se si utilizza " wal2json " per la decodifica logica, è necessario eliminare tutti gli slot di replica associati prima dell'aggiornamento. L'utilità pg_upgrade vieta categoricamente l'aggiornamento alla versione principale finché sono presenti slot di replica; in tal caso, genererà un errore critico e interromperà l'aggiornamento.

Prima dell'aggiornamento:

  1. Assicurarsi che tutti i dati WAL in sospeso siano stati elaborati.
  2. Chiudi l'applicazione che utilizza lo slot di replica.
  3. Eliminare gli slot di replica:
SELECT pg_drop_replication_slot('your_slot_name');

Dopo l'aggiornamento, è possibile ricreare gli slot di replica secondo necessità. Si noti che wal2json non viene installato tramite CREATE EXTENSION, ma viene configurato tramite i parametri del database (wal_level, max_replication_slots, max_wal_senders) e le autorizzazioni delle tabelle, che non impediscono gli aggiornamenti.

anon

Rimuovi l'estensione " anon " prima dell'aggiornamento e riattivala dopo l'aggiornamento, se ne hai ancora bisogno. Prima di disattivare anon sono necessari alcuni passaggi aggiuntivi.

Se è installata l'estensione " anon ", seguire la procedura riportata di seguito ed eseguire i comandi come utente amministratore prima di procedere all'aggiornamento.

  1. Rimuovere tutte le regole di mascheramento (se abilitate).

    SELECT anon.remove_masks_for_all_columns();
    
  2. Disattivare il mascheramento dei ruoli (l'aggiornamento potrebbe fallire se alcuni ruoli sono contrassegnati come mascherati).

    SECURITY LABEL FOR anon ON ROLE <role_name> IS NULL;
    
  3. Eliminare l'estensione anon con l'opzione cascata.

    DROP EXTENSION anon CASCADE;
    
  4. Se l'estensione " anon " è installata in più database all'interno di un'istanza, eseguire i passaggi indicati per ciascun database.

  5. Al termine dell'aggiornamento, riabilitare l'estensione anon e riapplicare le regole di mascheramento come richiesto.

Si consiglia vivamente di convalidare i dati prima e dopo aver eliminato l'estensione per garantire la coerenza del mascheramento prima di eseguire l'aggiornamento.

PostGIS

Se utilizzi PostGIS,, esegui prima l'aggiornamento di PostGIS prima di aggiornare PostgreSQL.

SELECT postgis_extensions_upgrade();

Utilizzare la seguente query per convalidare l'aggiornamento dell'estensione PostGIS.

SELECT postgis_full_version();

Logical replication slots

Eliminare tutti gli slot di replica logica prima dell'aggiornamento e ricrearli dopo l'aggiornamento. Gli slot logici sono legati allo stato del server di origine e devono essere ricreati da zero sull'istanza aggiornata.

SELECT pg_drop_replication_slot('<slot_name>');

Aggiornamenti delle versioni principali in loco

L'aggiornamento della versione principale in loco consente di aggiornare l'installazione a una versione principale supportata, eliminando la necessità di ripristinare un backup in una nuova installazione. Questo approccio mantiene le stesse stringhe di connessione, senza la necessità di riconfigurare la distribuzione. Tuttavia, se la nuova versione principale richiede adeguamenti dell'applicazione, questi devono essere affrontati.

Durante la finestra di aggiornamento della versione principale in loco, la distribuzione subirà un breve periodo di inattività. Ciò è prevedibile, poiché il processo segue l'approccio di aggiornamento raccomandato dal fornitore. La durata esatta può variare a seconda delle dimensioni e della complessità dello schema dell'installazione. Se il servizio ha bisogno di leggere i dati dall'istanza aggiornata durante questo periodo, è possibile creare un'istanza di standby e aggiornare i dettagli di connessione dell'applicazione per puntare allo standby. In questo modo si ottiene una copia aggiornata del database prima di iniziare l'aggiornamento. L'istanza di standby può anche essere promossa e utilizzata come istanza primaria se l'aggiornamento in loco non viene completato correttamente. Per ulteriori informazioni, vedere Stato della replica in sola lettura durante gli aggiornamenti di versione principali in corso.

Databases for PostgreSQL offre ai clienti flessibilità nella gestione dei propri backup. Il processo di aggiornamento della versione principale in loco non crea automaticamente un backup prima o dopo l'attività. Se l'aggiornamento non va a buon fine, potrebbe essere necessario ripristinare la distribuzione da un backup valido più recente su una nuova istanza.

Per garantire il miglior ripristino possibile, si consiglia vivamente di eseguire un nuovo backup prima dell'IPU e un altro subito dopo il completamento dell'IPU.

  • Un backup eseguito prima dell'IPU contribuisce a proteggere l'integrità dei dati e fornisce una fonte di ripristino dello stato più recente del database nel caso in cui l'aggiornamento non vada a buon fine.
  • Un backup eseguito subito dopo l'IPU crea il primo punto di ripristino per la nuova linea temporale della versione principale di PostgreSQL.
  • Se si attende il prossimo backup pianificato dopo un'operazione IPU riuscita, le operazioni PITR e di ripristino per la nuova versione non saranno disponibili fino a quando non verrà eseguito tale backup. È comunque possibile identificare un timestamp PITR precedente al tentativo IPU. Ciò consente di utilizzare l'ultimo backup disponibile prima dell'IPU, insieme al PITR, per ripristinare la versione di PostgreSQL precedente all'IPU in una nuova distribuzione. La stessa procedura vale anche quando si utilizza l'aggiornamento "Backup e ripristino ". Per ulteriori informazioni, consultare la sezione " Ripristino a un punto nel tempo(PITR) ".

Eseguire entrambi i backup manualmente, anziché attendere la pianificazione automatica, ti garantisce un punto di ripristino più prevedibile sia prima che dopo l'aggiornamento.

Prima di iniziare

Prima di avviare la procedura di aggiornamento, considerare i seguenti aspetti.

  • Verifica se è disponibile un aggiornamento per la versione della tua distribuzione controllando le informazioni sulle funzionalità di distribuzione tramite l'interfaccia utente, l'API, la CLI o Terraform.

    Esempio: come consultare le informazioni sull'aggiornamento della versione tramite CLI:

    ibmcloud cdb capability-show versions postgresql
    
  • Assicurati di consultare i requisiti relativi al precheck descritti in questa sezione prima di avviare l'IPU. IPU viene eseguito direttamente sull'ambiente di origine e non crea una nuova istanza. Per garantire la sicurezza dei clienti, il servizio esegue dei controlli preliminari prima dell'avvio dell'aggiornamento e blocca l'operazione qualora venga rilevato un rischio. In particolare, verificare i seguenti punti:

    • La tua distribuzione conta al massimo 3 membri.
    • La tua distribuzione è in buono stato.
    • La tua distribuzione dispone di almeno il 10% di spazio libero su disco. L'utilizzo massimo consentito di default del disco per i controlli preliminari IPU è pari al 90%.
    • La tua distribuzione non è sottoposta a un carico elevato di operazioni di I/O. Il valore predefinito massimo consentito per l'utilizzo dell'I/O nel precheck dell'IPU è del 90%.
    • Le dimensioni dello schema e il numero di oggetti rientrano nelle soglie predefinite del controllo preliminare. Per impostazione predefinita, nessun singolo schema può superare i 100 GB e il numero totale di indici e sequenze deve rimanere inferiore a 50.000.
    • Prima dell'aggiornamento, hai completato tutte le operazioni necessarie di pulizia delle estensioni e degli slot di replica logica.
  • Ogni versione principale contiene alcune funzionalità che potrebbero non essere retrocompatibili con le versioni precedenti. Controlla le note di rilascio fornite dal fornitore del database per verificare se ci sono modifiche che potrebbero influire sulle tue applicazioni.

  • Il downgrade di una distribuzione a una versione precedente non è supportato.

  • Una volta avviato, l'aggiornamento alla versione principale in loco non può essere annullato.

  • Se non disponi di un backup recente, ti consigliamo di crearne uno prima di procedere all'aggiornamento.

Percorsi di aggiornamento in loco supportati
Fonte: versione PostgreSQL Destinazione supportata per l'aggiornamento in loco
14 15, 18
Tutte le altre versioni del codice sorgente supportate 18

Si noti inoltre che, una volta completato l'aggiornamento, il database funzionerà con una nuova versione principale di PostgreSQL. Poiché PostgreSQL memorizza i dati in formati specifici per ciascuna versione, i backup e i punti PITR precedenti all'aggiornamento appartengono alla cronologia della versione precedente e non possono essere ripristinati nella versione aggiornata. Per garantire il ripristino completo e le funzionalità PITR (Point-in-Time Recovery) nella nuova versione, eseguire un nuovo backup subito dopo il completamento dell'aggiornamento. Quel backup diventa il punto di riferimento per le future operazioni di ripristino sulla linea temporale della nuova versione.

Se l'IPU non dovesse funzionare, è comunque possibile utilizzare i backup validi precedenti all'aggiornamento con la funzione PITR per ripristinare la versione precedente di PostgreSQL su una nuova istanza.

Aggiornamento nell'interfaccia utente

  1. Crea un nuovo Databases for PostgreSQL per testare la procedura di aggiornamento.
    Crea la distribuzione ripristinando un backup dalla distribuzione esistente con la stessa versione.

  2. Punta l'applicazione di staging verso l'ambiente di test.
    Aggiorna la tua applicazione di staging in modo che punti alla distribuzione di prova. Verificare che l'applicazione di prova sia in grado di connettersi correttamente alla distribuzione di staging e che funzioni come previsto. Eseguire tutti i test prestazionali e operativi necessari sull'ambiente di staging.

  3. Aggiorna la versione principale della tua distribuzione di prova facendo clic sul pulsante " Aggiorna versione principale " nella pagina Panoramica.
    Prendi nota della durata dell'aggiornamento, in modo da poter utilizzare l'impostazione relativa alla scadenza dell'aggiornamento per far sì che gli aggiornamenti avvengano all'interno della finestra di manutenzione.

  4. Verifica che la tua applicazione di staging funzioni con la nuova versione del database.
    Se l'applicazione funziona, questo passaggio conferma che è possibile eseguire l'aggiornamento del database di produzione in tutta sicurezza.

  5. Aggiorna l'implementazione del database di produzione alla nuova versione.
    Dopo aver verificato che l'applicazione funzioni correttamente con la nuova versione del database, è possibile tornare alla console di gestione e avviare il processo di aggiornamento dell'ambiente di produzione. Nella sezione Dettagli distribuzione della pagina Panoramica, fare clic sul pulsante Aggiorna versione principale e seguire i passaggi indicati.

    Una volta avviato, il processo di aggiornamento in loco non può essere interrotto né annullato. Quindi, nel caso improbabile di un errore, l'implementazione del database potrebbe diventare irrecuperabile. Pertanto, crea un backup che potrai poi utilizzare per ripristinare una nuova distribuzione.

Consente expiration for starting upgrade di configurare un periodo di "timeout" entro il quale il processo di aggiornamento deve essere avviato prima di essere automaticamente annullato. Inoltre, prova l'aggiornamento in anticipo in fase di staging per assicurarti che l'aggiornamento venga completato entro il periodo di tempo desiderato. Se, ad esempio, desideri completare l'aggiornamento entro un'ora e, dopo averlo testato, sai che richiede 30 minuti, il processo di aggiornamento deve avviarsi entro 30 minuti dalla conferma della tua intenzione di procedere. Pertanto, imposta la scadenza a 30 minuti, in modo che se non si avvia entro tale tempo, non supererà la tua finestra.

Aggiornamento tramite l'API

Utilizzare il seguente comando per eseguire l'aggiornamento in loco:

curl -X PATCH https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/version -H 'Authorization: Bearer <>' -H 'Content-Type: application/json' -d '{"version": "15"}'

Consente expiration for starting upgrade di configurare un periodo di "timeout" entro il quale il processo di aggiornamento deve essere avviato prima di essere automaticamente annullato. Inoltre, prova l'aggiornamento in anticipo in fase di staging per assicurarti che l'aggiornamento venga completato entro il periodo di tempo desiderato. Se, ad esempio, desideri completare l'aggiornamento entro un'ora e, dopo averlo testato, sai che richiede 30 minuti, il processo di aggiornamento deve avviarsi entro 30 minuti dalla conferma della tua intenzione di procedere. Pertanto, imposta la scadenza su un timestamp di 30 minuti da adesso, in modo che se non si avvia entro tale tempo, non supererà la tua finestra. La scadenza deve essere compresa tra 5 minuti (impostazione predefinita) e 24 ore da adesso. Per ulteriori informazioni, consultare Cloud Databases l'API.

Aggiornamento tramite la CLI

Disponibile nella versione plugin CDB >= 0.20.0.

Per visualizzare l'elenco delle transizioni di aggiornamento e ripristino consentite per la distribuzione:

ibmcloud cdb deployment-capability-show <NAME|CRN> versions

Per aggiornare il comando con i parametri richiesti:

ibmcloud cdb deployment-version-upgrade <NAME|CRN> <TARGET_VERSION>

Per visualizzare tutti i dettagli dei parametri di comando:

ibmcloud cdb deployment-version-upgrade --help

Consente expiration for starting upgrade di configurare un periodo di "timeout" entro il quale il processo di aggiornamento deve essere avviato prima di essere automaticamente annullato. Inoltre, prova l'aggiornamento in anticipo in fase di staging per assicurarti che l'aggiornamento venga completato entro il periodo di tempo desiderato. Se, ad esempio, desideri completare l'aggiornamento entro un'ora e, dopo averlo testato, sai che richiede 30 minuti, il processo di aggiornamento deve avviarsi entro 30 minuti dalla conferma della tua intenzione di procedere. Pertanto, imposta la scadenza a 30 minuti, in modo che se non si avvia entro tale tempo, non supererà la tua finestra. La scadenza deve essere compresa tra 5 minuti (impostazione predefinita) e 24 ore a partire da ora. Esistono due modi per impostare la scadenza utilizzando CLI --expire-in o --expire-at. Per ulteriori informazioni, consultare la guida del comando.

Aggiornamento tramite Terraform

Disponibile nella versione del provider Terraform >= 1.79.2.

Per eseguire l'aggiornamento, è sufficiente aggiungere o modificare il version valore nella configurazione.

Saltare il backup prima di un aggiornamento di versione è pericoloso e potrebbe causare la perdita dei dati se l'aggiornamento fallisse in qualsiasi fase: non ci sarebbe infatti un backup immediato da cui ripristinare i dati. Pertanto, è consigliabile disporre di un backup aggiornato prima di avviare un'operazione di aggiornamento alla versione principale in loco.

L'aggiornamento potrebbe richiedere più tempo rispetto al timeout predefinito. È possibile impostare un valore di timeout più lungo utilizzando l'attributo timeouts.

Terraform ha dei timeout invece dei timestamp di scadenza. Pertanto, aumenta il tempo di attesa, poiché il valore di aggiornamento del timeout viene utilizzato come data di scadenza. Ad esempio, se si imposta un timeout di 20 minuti, la scadenza sarà impostata su 20 minuti e se l'aggiornamento non viene avviato entro tale intervallo di tempo, scadrà e l'aggiornamento non verrà avviato. Si noti che la scadenza massima è di 24 ore, quindi anche se si imposta un timeout di 36 ore, l'aggiornamento scadrà se non è stato avviato entro le prime 24 ore.

Se è in corso un aggiornamento, tieni presente che alcune operazioni potrebbero essere messe in coda e non verranno eseguite fino al completamento dell'aggiornamento della versione.

Risoluzione dei problemi

Se le tue applicazioni presentano problemi imprevisti dopo un aggiornamento alla versione principale in loco riuscito e devi tornare alla versione PostgreSQL precedente, contatta il nostro team di assistenza per ricevere assistenza. Si raccomanda di non avviare autonomamente una procedura PITR né di ripristinare un backup, poiché ciò potrebbe complicare il processo di ripristino.

Un aggiornamento importante in loco non verrà eseguito finché tutti i controlli preliminari non saranno stati superati. Queste misure di sicurezza sono state predisposte per proteggere la tua distribuzione, poiché l'aggiornamento viene eseguito direttamente sull'istanza di origine. Se l'aggiornamento è bloccato, controlla le seguenti aree:

  • Numero di membri: l'aggiornamento della versione principale in loco supporta distribuzioni con un massimo di 3 membri. Se la tua distribuzione conta più di 3 membri, i controlli preliminari bloccano l'aggiornamento. I membri non possono essere rimossi tramite il ridimensionamento orizzontale, pertanto è necessario aprire un ticket di assistenza presso il supporto di IBM Cloud per ridurre il numero di membri prima di riprovare ad eseguire l'aggiornamento.
  • Stato del cluster: assicurarsi che il cluster Patroni sia in buono stato e che vi sia una chiara distinzione tra leader e repliche. Gli aggiornamenti non possono essere eseguiti se Patroni segnala condizioni di instabilità o failover.
  • Spazio su disco: verificare che sia disponibile spazio libero sufficiente. Il processo utilizza la pg_upgrade modalità link, che richiede un headroom adeguato. Se l'utilizzo del disco supera il limite configurato (impostazione predefinita: 90%), liberare spazio prima di riprovare.
  • Carico I/O del disco: verificare l'utilizzo corrente dell'I/O e gli IOPS. Gli aggiornamenti vengono sospesi quando il sistema è sottoposto a un carico elevato, al fine di evitare un calo delle prestazioni o il fallimento dell'aggiornamento.
  • Dimensioni dello schema e numero di oggetti: come già detto, le dimensioni dello schema influiscono direttamente sulla durata di un aggiornamento maggiore in loco. Assicurarsi che nessuno schema individuale superi la dimensione massima (impostazione predefinita: 100 GB) e che il numero totale di oggetti indice e sequenza rimanga al di sotto del limite (impostazione predefinita: 50.000). Schemi di grandi dimensioni o un numero di oggetti insolitamente elevato potrebbero richiedere una pulizia o un'ottimizzazione prima di procedere con l'aggiornamento. pg_upgrade esegue aggiornamenti rapidi creando nuove tabelle di sistema e riutilizzando semplicemente i vecchi file di dati utente. Il tempo necessario per creare queste tabelle di sistema varia in base al numero di oggetti del database. Il consumo delle risorse può essere valutato utilizzando l 'integrazione del monitoraggio. Se non tutti i componenti del database sono disponibili per l'aggiornamento, l'operazione di aggiornamento non va a buon fine. Questo può verificarsi a causa della manutenzione. Le attività che non sono state completate a causa di controlli di integrità non riusciti possono essere riprovate in un secondo momento. Se l'operazione continua a non riuscire, apri un ticket di assistenza con IBM Cloud support. Se alcuni controlli non sono rilevanti per il tuo ambiente e l'aggiornamento è ancora bloccato, crea un ticket di assistenza per ulteriore supporto.

Aggiornamento da una replica di sola lettura

Eseguire l'aggiornamento configurando una replica di sola lettura. Esegui il provisioning di una replica di sola lettura con la stessa versione di database della tua distribuzione e attendi mentre replica tutti i dati. Quando la propria distribuzione e la relativa replica vengono sincronizzate, promuovere e aggiornare la replica di sola lettura a una distribuzione autonoma completa che esegue la nuova versione del database. Per eseguire la fase di aggiornamento e promozione, utilizzare una richiesta POST all'endpoint /deployments/{id}/remotes/promotion con la versione a cui si desidera eseguire l'aggiornamento nel corpo della richiesta.

Questa richiesta è simile a:

curl -X POST \
  https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/remotes/promotion \
  -H 'Authorization: Bearer <>'  \
 -H 'Content-Type: application/json' \
 -d '{
    "promotion": {
        "version": "14",
        "skip_initial_backup": false
    }
}' \

skip_initial_backup è facoltativo. Se impostato su true, la nuova distribuzione non effettuerà un backup iniziale al termine della promozione. La nuova distribuzione è disponibile in un periodo di tempo più breve, a scapito di non essere sottoposto a backup fino a quando non viene eseguito il backup automatico successivo o si esegue un backup su richiesta.

Esecuzione a secco della promozione e dell'aggiornamento

Per valutare gli effetti degli aggiornamenti delle versioni principali, attivare una prova a secco. Una esecuzione a secco simula la promozione e l'aggiornamento, con i risultati stampati nei log del database. Accedete e visualizzate i registri del vostro database attraverso l'integrazione Analisi dei registri. Ciò garantisce che la versione che si sta attualmente eseguendo con le relative estensioni possa essere aggiornata correttamente alla versione desiderata.

L'esecuzione a secco deve essere eseguita con skip_initial_backup impostato su false e version definito.

Il comando è simile al seguente:

curl -X POST \
  https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/remotes/promotion \
  -H 'Authorization: Bearer <>'  \
 -H 'Content-Type: application/json' \
 -d '{
    "promotion": {
        "version": "14",
        "skip_initial_backup": false,
        "dry_run": true
    }
}' \

Backup e ripristino dell'aggiornamento

È possibile aggiornare la versione del proprio database ripristinando un backup dei propri dati in una nuova distribuzione che esegue la nuova versione del database.

Aggiornamento nell'interfaccia utente

Eseguire l'aggiornamento a una nuova versione quando si ripristina una copia di backup dal menu Backup del dashboard Distribuzione. Fare clic su Ripristina su un backup per accedere alla pagina di provisioning in una nuova scheda, dove è possibile modificare alcune opzioni per la nuova distribuzione. Una delle opzioni è la versione del database, che viene popolata automaticamente con le versioni disponibili per l'aggiornamento. Selezionare una versione e fare clic su Crea per avviare il processo di fornitura e ripristino.

Aggiornamento tramite la CLI

Per eseguire l'upgrade e il ripristino da un backup mediante la CLI IBM Cloud, utilizza il comando di provisioning dal controller della risorsa.

ibmcloud resource service-instance-create <DEPLOYMENT_NAME_OR_CRN> <SERVICE_ID> <SERVICE_PLAN_ID> <REGION> <SERVICE-ENDPOINTS>

I parametri service-name, service-id, service-plan-id, region e service-endpoints sono tutti obbligatori. Inoltre, è necessario fornire all' -p e i parametri relativi alla versione e all'ID del backup in un oggetto JSON. La nuova distribuzione viene ridimensionata automaticamente con lo stesso disco e la stessa memoria della distribuzione di origine al momento del backup.

Questo comando è simile al seguente:

ibmcloud resource service-instance-create example-upgrade databases-for-postgresql standard us-south \
-p \ '{
  "backup_id": "crn:v1:bluemix:public:databases-for-postgresql:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71717:backup:06392e97-df90-46d8-98e8-cb67e9e0a8e6",
  "version":14
}'--service-endpoints "public"

Aggiornamento tramite l'API

Completare i passaggi necessari per utilizzare il file API del controllore di risorse prima di utilizzarlo per l'aggiornamento da un backup. Quindi, invia all'API una richiesta POST. I parametri name, target, resource_group e resource_plan_id sono tutti obbligatori. Vengono forniti anche la versione e l'ID backup. La nuova distribuzione ha la stessa assegnazione di memoria e disco della distribuzione di origine al momento del backup.

Questo comando è simile al seguente:

curl -X POST \
  https://resource-controller.cloud.ibm.com/v2/resource_instances \
  -H 'Authorization: Bearer <>' \
  -H 'Content-Type: application/json' \
    -d '{
    "name": "my-instance",
    "target": "bluemix-us-south",
    "resource_group": "5g9f447903254bb58972a2f3f5a4c711",
    "resource_plan_id": "databases-for-postgresql-standard",
    "backup_id": "crn:v1:bluemix:public:databases-for-postgresql:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71717:backup:06392e97-df90-46d8-98e8-cb67e9e0a8e6",
    "version":14
  }'

Aggiornamento forzato

Dopo la data di fine vita, tutte le distribuzioni Databases for PostgreSQL attive sulla versione obsoleta saranno aggiornate forzatamente alla versione successiva supportata. Ad esempio, PostgreSQL la versione 13 (obsoleta) viene aggiornata alla versione 14.

Eseguite l'aggiornamento prima della data di fine vita per evitare i seguenti rischi:

  • Non sono previsti SLA per questo tipo di aggiornamento forzato.
  • Potresti subire una perdita di dati.
  • Il tuo servizio potrebbe subire un'interruzione prolungata.
  • L'applicazione potrebbe smettere di funzionare se non è compatibile con la nuova versione.
  • Non è possibile controllare la tempistica dell'aggiornamento per la propria installazione.
  • Non è previsto un processo di rollback per questo aggiornamento forzato.

Per le date di fine vita, fare riferimento al " pagina della politica delle versioni.

Problemi relativi ai privilegi dei ruoli durante gli aggiornamenti di versione

A partire da PostgreSQL e 16, l'applicazione dei privilegi di ruolo è più rigorosa. Si tratta di una modifica architetturale a monte di PostgreSQL, non di una modifica comportamentale specifica di {{site.data.keyword.ibm}}. Nelle versioni precedenti, i ruoli dotati dell'attributo " CREATEROLE " potevano gestire altri ruoli in modo più ampio. In PostgreSQL e 16 e successive, un ruolo deve disporre dei diritti di controllo ( ADMIN OPTION ) su un altro ruolo per poterlo concedere o revocare. Per ulteriori informazioni, consultare le note di rilascio della versione 16 di " PostgreSQL ", la sezione " Role Attributes " e la pagina GRANT dedicata ai ruoli.

Se stai effettuando l'aggiornamento da PostgreSQL 15 o versioni precedenti a PostgreSQL 16 o versioni successive, verifica le autorizzazioni associate al tuo ruolo prima di eseguire l'IPU. Se la gestione dei ruoli deve proseguire dopo l'aggiornamento, assicurati che i ruoli richiesti siano stati assegnati tramite WITH ADMIN OPTION prima di avviare l'aggiornamento.

Se dopo l'aggiornamento dovessero verificarsi errori relativi ai privilegi, ad esempio:

ERROR: only roles with the ADMIN OPTION on role "some_role" may grant this role
DETAIL: role "admin" is not permitted to grant role "some_role"

Utilizza la funzione di supporto integrata grant_admin_option_to_roles per ripristinare ADMIN OPTION per ruoli specifici:

  • Si applica solo ai database aggiornati da PostgreSQL v15 e versioni precedenti a PostgreSQL 16 e versioni successive (se si verifica l'errore descritto in precedenza).
  • Accetta un elenco arbitrario di ruoli a cui applicare la correzione.
  • Può essere eseguito solo dall'utente " admin ".
  • È sicuro di essere eseguito più volte (idempotente).

Esempio di utilizzo:

SELECT grant_admin_option_to_roles('role1', 'role2', 'role3');

Questa funzione assegna i ruoli specificati (role1, role2, role3) all'utente admin con ADMIN OPTION, consentendo all'utente admin di gestire (assegnare, revocare, modificare o eliminare) tali ruoli nelle istanze aggiornate.

Changelog per le versioni principali di PostgreSQL