Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Esecuzione di un aggiornamento della versione principale
Gli aggiornamenti a una versione principale potrebbero contenere modifiche al database non compatibili con le versioni precedenti del database. La nuova funzionalità in una nuova versione può causare l'interruzione del funzionamento corretto delle applicazioni esistenti. Per evitare problemi, Amazon Aurora non applica automaticamente aggiornamenti alla versione principale. Si consiglia, invece, di pianificare attentamente un aggiornamento alla versione principale seguendo questi passaggi:
-
Scegli la versione principale desiderata dall'elenco delle destinazioni disponibili tra quelle elencate per la versione nella tabella. È possibile ottenere un elenco preciso delle versioni disponibili nella Regione AWS versione corrente utilizzando il AWS CLI. Per informazioni dettagliate, consultare Ottenere un elenco di versioni disponibili nel Regione AWS.
-
Verifica che le applicazioni funzionino come previsto su un'implementazione di prova della nuova versione. Per informazioni sul processo completo, consulta Test di un aggiornamento del cluster database di produzione a una nuova versione principale.
-
Dopo aver verificato che le applicazioni funzionano come previsto nell'implementazione di prova, puoi aggiornare il cluster. Per informazioni dettagliate, consultare Aggiornamento del motore Aurora PostgreSQL a una nuova versione principale.
Nota
È possibile eseguire un aggiornamento della versione principale da Babelfish per Aurora PostgreSQL dalle versioni di Aurora PostgreSQL 13 a partire dalla 13.6 alle versioni di Aurora PostgreSQL 14 a partire dalla 14.6. Babelfish per Aurora PostgreSQL 13.4 e 13.5 non supporta l'aggiornamento della versione principale.
È possibile ottenere un elenco delle versioni del motore disponibili come obiettivi di aggiornamento delle versioni principali per il cluster Aurora PostgreSQL DB interrogando l'utente utilizzando il comando, come segue. Regione AWS describe-db-engine-versions AWS CLI
In Linux, macOS, oppure Unix:
aws rds describe-db-engine-versions \ --engine aurora-postgresql \ --engine-version
version-number
\ --query 'DBEngineVersions[].ValidUpgradeTarget[?IsMajorVersionUpgrade == `true`].{EngineVersion:EngineVersion}' \ --output text
In Windows:
aws rds describe-db-engine-versions ^ --engine aurora-postgresql ^ --engine-version
version-number
^ --query "DBEngineVersions[].ValidUpgradeTarget[?IsMajorVersionUpgrade == `true`].{EngineVersion:EngineVersion}" ^ --output text
In alcuni casi, la versione di destinazione dell'aggiornamento non è una destinazione per la versione corrente. In questi casi, utilizza le informazioni contenute in versions table per eseguire aggiornamenti della versione secondaria fino a quando la versione del cluster non dispone della destinazione scelta nella relativa riga di destinazioni.
Test di un aggiornamento del cluster database di produzione a una nuova versione principale
Ogni nuova versione principale include miglioramenti all'ottimizzatore di query progettati per migliorare le prestazioni. Tuttavia, il carico di lavoro può includere query che restituiscono prestazioni peggiori nella nuova versione. Ecco perché ti consigliamo di testare e rivedere le prestazioni prima di eseguire l'aggiornamento in produzione. È possibile gestire la stabilità del piano di query tra le varie versioni utilizzando l'estensione Query Plan Management (QPM), come descritto in Garantire la stabilità del piano dopo un aggiornamento di versione principale.
Prima di aggiornare i cluster database Aurora PostgreSQL di produzione a una nuova versione principale, è fortemente consigliato eseguire il test dell'aggiornamento per verificare che tutte le applicazioni funzionino correttamente:
-
Tieni a portata di mano un gruppo di parametri compatibile con la versione.
Se utilizzi un'istanza database personalizzata o un gruppo di parametri del cluster database, puoi scegliere tra due opzioni:
-
Puoi specificare l'istanza database predefinita, il gruppo di parametri del cluster di database o entrambi per la nuova versione del motore di database.
-
Oppure è possibile creare un gruppo di parametri personalizzato per la nuova versione del motore database.
Se associ una nuova istanza database o gruppo di parametri del cluster di database come una parte della richiesta di aggiornamento, devi riavviare il database al termine dell'aggiornamento per applicare i parametri. Se, per applicare le modifiche del gruppo di parametri, un'istanza deve essere riavviata, lo stato del gruppo di parametri è
pending-reboot
. È possibile visualizzare lo stato del gruppo di parametri dell'istanza nella console oppure utilizzando un comando CLI come describe-db-instances o describe-db-clusters. -
-
Verifica la presenza di database non validi ed elimina quelli esistenti.
La
datconnlimit
colonna delpg_database
catalogo include il valore-2
per contrassegnare come non validi tutti i database che sono stati interrotti durante un'operazione.DROP DATABASE
Utilizzate la seguente query per verificare se esistono database non validi.SELECT datname FROM pg_database WHERE datconnlimit = - 2;
Se la query restituisce nomi di database, questi database non sono validi. Utilizzate l'
DROP DATABASE invalid_db_name
istruzione per eliminare i database non validi. È possibile utilizzare la seguente istruzione dinamica per eliminare tutti i database non validi.SELECT 'DROP DATABASE ' || quote_ident(datname) || ';' FROM pg_database WHERE datconnlimit = -2 \gexec
-
Controllare l'utilizzo non supportato:
-
Eseguire il commit o il rollback di tutte le transazioni preparate aperte prima di provare a eseguire un aggiornamento. È possibile utilizzare la seguente query per verificare che sull'istanza non siano presenti transazioni preparate aperte.
SELECT count(*) FROM pg_catalog.pg_prepared_xacts;
-
Rimuovere tutti gli utilizzi dei tipi di dati reg* prima di tentare un aggiornamento. Ad eccezione di
regtype
eregclass
, non è possibile aggiornare i tipi di dati reg*. L’utilità pg_upgrade (utilizzata da Amazon Aurora per eseguire l'aggiornamento) non può preservare questo tipo di dati. Per ulteriori informazioni su questa utilità, consulta pg_upgradenella documentazione di PostgreSQL. Per verificare che non siano presenti utilizzi di tipi di dati reg* non supportati, utilizzare la query seguente per ogni database.
SELECT count(*) FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n, pg_catalog.pg_attribute a WHERE c.oid = a.attrelid AND NOT a.attisdropped AND a.atttypid IN ('pg_catalog.regproc'::pg_catalog.regtype, 'pg_catalog.regprocedure'::pg_catalog.regtype, 'pg_catalog.regoper'::pg_catalog.regtype, 'pg_catalog.regoperator'::pg_catalog.regtype, 'pg_catalog.regconfig'::pg_catalog.regtype, 'pg_catalog.regdictionary'::pg_catalog.regtype) AND c.relnamespace = n.oid AND n.nspname NOT IN ('pg_catalog', 'information_schema');
-
Se stai eseguendo l'aggiornamento di un cluster di database Aurora PostgreSQL versione 10.18 o successive e l’estensione
pgRouting
è installata, rimuovila prima di eseguire l'aggiornamento alla versione 12.4 o successive.Se stai eseguendo l'aggiornamento di Aurora PostgreSQL 10.x che ha l'estensione
pg_repack
versione 1.4.3 installata, rimuovi l'estensione prima di eseguire l'aggiornamento a una versione successiva.
-
-
Controllare i database template1 e template0.
Per un aggiornamento corretto, i database template1 e template0 devono esistere e devono essere elencati come modello. Per eseguire questa verifica, utilizzare il seguente comando:
SELECT datname, datistemplate FROM pg_database;
datname | datistemplate -----------+--------------- template0 | t rdsadmin | f template1 | t postgres | f
Nell'output del comando, il valore
datistemplate
per i database template1 e template0 deve esseret
. -
Rimuovi slot di replica logica.
Il processo di aggiornamento non può continuare se il cluster database Aurora PostgreSQL utilizza slot di replica logici. Gli slot di replica logica vengono in genere utilizzati per attività di migrazione dei dati a breve termine, come la migrazione dei dati utilizzando AWS DMS o per replicare tabelle dal database ai data lake, agli strumenti di BI o ad altre destinazioni. Prima di eseguire l'aggiornamento, assicurati di conoscere lo scopo degli eventuali slot di replica logica esistenti e verifica che sia corretto eliminarli. Puoi verificare gli slot di replica logica utilizzando la seguente query:
SELECT * FROM pg_replication_slots;
Se gli slot di replica logica sono ancora in uso, non devono essere eliminati e non è possibile procedere con l'aggiornamento. Tuttavia, se gli slot di replica logica non sono necessari, è possibile eliminarli utilizzando il seguente SQL:
SELECT pg_drop_replication_slot(
slot_name
);Negli scenari di replica logica che utilizzano l'estensione
pglogical
devono inoltre essere eliminati gli slot dal nodo publisher per un corretto aggiornamento della versione principale su quel nodo. Tuttavia, è possibile riavviare il processo di replica dal nodo sottoscrittore dopo l'aggiornamento. Per ulteriori informazioni, consulta Riconnessione della replica logica dopo un aggiornamento principale. -
Eseguire un backup.
Il processo di aggiornamento crea uno snapshot del cluster di database durante l'aggiornamento. Se desideri eseguire anche un backup manuale prima del processo di aggiornamento, consulta Creazione di uno snapshot del cluster database per ulteriori informazioni.
-
Aggiornare alcune estensioni alla versione più recente disponibile prima di eseguire l'aggiornamento della versione principale. Le estensioni da aggiornare includono le seguenti:
-
pgRouting
-
postgis_raster
-
postgis_tiger_geocoder
-
postgis_topology
-
address_standardizer
-
address_standardizer_data_us
Esegui il comando seguente per ogni estensione attualmente installata.
ALTER EXTENSION
PostgreSQL-extension
UPDATE TO 'new-version
';Per ulteriori informazioni, consulta Aggiornamento estensioni PostgreSQL. Per ulteriori informazioni sull'aggiornamento di PostGIS, consulta Passaggio 6: Aggiorna l'GISestensione Post.
-
-
Se si esegue l'aggiornamento alla versione 11.x, eliminare le estensioni che non supporta prima di eseguire l'aggiornamento della versione principale. Le estensioni da eliminare includono:
-
chkpass
-
tsearch2
-
-
Eliminare i tipi di dati
unknown
, a seconda della versione di destinazione.La versione 10 di PostgreSQL non supporta il tipo di dati
unknown
. Se un database versione 9.6 utilizza il tipo di datiunknown
, un aggiornamento alla versione 10 mostra un messaggio di errore del tipo seguente:Database instance is in a state that cannot be upgraded: PreUpgrade checks failed: The instance could not be upgraded because the 'unknown' data type is used in user tables. Please remove all usages of the 'unknown' data type and try again."
Per trovare il tipo di dati
unknown
nel database in modo da poter rimuovere tali colonne o modificarle in un tipo di dati supportato, utilizza il seguente codice SQL per ciascun database.SELECT n.nspname, c.relname, a.attname FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n, pg_catalog.pg_attribute a WHERE c.oid = a.attrelid AND NOT a.attisdropped AND a.atttypid = 'pg_catalog.unknown'::pg_catalog.regtype AND c.relkind IN ('r','m','c') AND c.relnamespace = n.oid AND n.nspname !~ '^pg_temp_' AND n.nspname !~ '^pg_toast_temp_' AND n.nspname NOT IN ('pg_catalog', 'information_schema');
-
Esegui un aggiornamento di prova.
Si consiglia di testare un aggiornamento della versione principale su un duplicato del database di produzione prima di eseguire l'aggiornamento sul database di produzione. È possibile monitorare i piani di esecuzione sull'istanza di test duplicata per eventuali regressioni del piano di esecuzione e valutarne le prestazioni. Per creare un'istanza di test duplicata, è possibile ripristinare il proprio database da uno snapshot recente o clonare il database. Per ulteriori informazioni, consulta Ripristino da uno snapshot o Clonazione di un volume per un cluster di database Amazon Aurora.
Per ulteriori informazioni, consulta Aggiornamento del motore Aurora PostgreSQL a una nuova versione principale.
-
Aggiornare la propria istanza di produzione.
Dopo aver testato correttamente l'aggiornamento a una versione principale, dovrebbe essere possibile aggiornare il database di produzione senza problemi. Per ulteriori informazioni, consulta Aggiornamento del motore Aurora PostgreSQL a una nuova versione principale.
Nota
Durante il processo di aggiornamento, Aurora PostgreSQL acquisisce uno snapshot cluster DB se il periodo di conservazione del backup del cluster è maggiore di 0. Non è possibile eseguire un point-in-time ripristino del cluster durante questo processo. Successivamente, puoi eseguire un point-in-time ripristino ai tempi precedenti all'inizio dell'aggiornamento e dopo il completamento dello snapshot automatico dell'istanza. Tuttavia, non è possibile eseguire il point-in-time ripristino di una versione secondaria precedente.
Per informazioni su un aggiornamento in corso, è possibile utilizzare Amazon RDS per visualizzare due log prodotti dall'utilità. Questi sono
pg_upgrade_internal.log
epg_upgrade_server.log
. Amazon Aurora RDS accoda un timestamp al nome file per questi log. Puoi visualizzare questi log come qualsiasi altro log. Per ulteriori informazioni, consulta Monitoraggio dei file di log di Aurora. -
Aggiornare le estensioni PostgreSQL. Un processo di aggiornamento PostgreSQL non aggiorna alcuna estensione PostgreSQL. Per ulteriori informazioni, consulta Aggiornamento estensioni PostgreSQL.
Consigli per la fase successiva all'aggiornamento
Dopo aver completato un aggiornamento della versione principale, è consigliabile quanto segue:
-
Eseguire l'operazione
ANALYZE
per aggiornare la tabellapg_statistic
. È necessario farlo per ogni database su tutte le istanze database di PostgreSQL. Le statistiche di ottimizzazione non vengono trasferite durante un aggiornamento della versione principale, quindi è necessario rigenerare tutte le statistiche per evitare problemi di prestazioni. Esegui il comando senza parametri per generare statistiche per tutte le tabelle regolari del database corrente, come segue:ANALYZE VERBOSE;
Il flag
VERBOSE
è facoltativo, ma usandolo viene mostrato lo stato di avanzamento. Per ulteriori informazioni, consulta ANALYZEnella documentazione di PostgreSQL. Nota
Esegui ANALYZE sul tuo sistema dopo l'aggiornamento per evitare problemi di prestazioni.
-
Se hai eseguito l'aggiornamento a PostgreSQL versione 10, esegui
REINDEX
su qualsiasi indice hash che hai. Gli indici hash sono stati modificati nella versione 10 e devono essere ricostruiti. Per individuare indici hash non validi, eseguire il seguente SQL per ogni database che contiene indici hash.SELECT idx.indrelid::regclass AS table_name, idx.indexrelid::regclass AS index_name FROM pg_catalog.pg_index idx JOIN pg_catalog.pg_class cls ON cls.oid = idx.indexrelid JOIN pg_catalog.pg_am am ON am.oid = cls.relam WHERE am.amname = 'hash' AND NOT idx.indisvalid;
-
Ti consigliamo di testare l'applicazione sul database aggiornato con un carico di lavoro analogo per verificare che tutto funzioni come previsto. Dopo la verifica dell'aggiornamento è possibile eliminare l'istanza di test.
Aggiornamento del motore Aurora PostgreSQL a una nuova versione principale
Quando avvii il processo di aggiornamento a una nuova versione principale, Aurora PostgreSQL acquisisce uno snapshot del cluster database Aurora prima di apportare eventuali modifiche al cluster. Questo snapshot viene creato solo per gli aggiornamenti della versione principale, non per gli aggiornamenti della versione secondaria. Al termine del processo di aggiornamento, questo snapshot è disponibile tra gli snapshot manuali elencati in Snapshots nella console RDS. Il nome dello snapshot include preupgrade
come prefisso, il nome del cluster database Aurora PostgreSQL, la versione di origine, la versione di destinazione e la data e il timestamp, come illustrato nell'esempio seguente.
preupgrade-docs-lab-apg-global-db-12-8-to-13-6-2022-05-19-00-19
Al termine dell'aggiornamento, puoi utilizzare lo snapshot creato e archiviato da Aurora nell'elenco di snapshot manuali per ripristinare il cluster database alla versione precedente, se necessario.
Suggerimento
In generale, gli snapshot forniscono molti modi per ripristinare il cluster database Aurora in momenti diversi. Per ulteriori informazioni, consultare Ripristino da uno snapshot cluster database e Ripristino di un cluster di database a un determinato momento. Tuttavia, Aurora PostgreSQL non supporta l'utilizzo di uno snapshot per il ripristino a una versione secondaria precedente.
Durante il processo di aggiornamento della versione principale, Aurora alloca un volume e clona il cluster database Aurora PostgreSQL di origine. Se l'aggiornamento non va a buon fine per qualsiasi motivo, Aurora PostgreSQL utilizza il clone per eseguire il rollback dell'aggiornamento. Quando vengono allocati più di 15 cloni di un volume di origine, i cloni successivi diventano copie complete e richiedono più tempo. Di conseguenza anche il processo di aggiornamento richiede più tempo. Se Aurora PostgreSQL esegue il rollback dell'aggiornamento, tenere presente quanto segue:
-
È possibile che vengano visualizzate voci di fatturazione e parametri per il volume originale e per il volume clonato allocati durante l'aggiornamento. Aurora PostgreSQL elimina i dati sul volume aggiuntivo quando la finestra di conservazione del backup del cluster supera il termine dell'aggiornamento.
-
La successiva copia snapshot tra regioni da questo cluster sarà una copia completa anziché una copia incrementale.
Per aggiornare in modo sicuro le istanze database che compongono il cluster, Aurora PostgreSQL utilizza l'utilità pg_upgrade. Al termine dell'aggiornamento dell'istanza di scrittura, ogni istanza di lettura riscontra una breve interruzione mentre viene aggiornato alla nuova versione principale. Per ulteriori informazioni su questa utilità, consulta pg_upgrade
È possibile aggiornare il cluster Aurora PostgreSQL DB a una nuova versione utilizzando l'API, the AWS Management Console o RDS. AWS CLI
Modificare la versione del motore di un cluster database
-
Accedi a AWS Management Console e apri la console Amazon RDS all'indirizzo https://console.aws.amazon.com/rds/
. -
Nel riquadro di navigazione, scegliere Databases (Database) quindi selezionare il cluster di database da aggiornare.
-
Scegliere Modify (Modifica). Viene visualizzata la pagina Modify DB cluster (Modifica cluster di database).
-
In Engine version (Versione motore) scegliere la nuova versione.
-
Scegliere Continue (Continua) e controllare il riepilogo delle modifiche.
-
Per applicare immediatamente le modifiche, scegliere Apply immediately (Applica immediatamente). In alcuni casi, la chiusura di questa opzione può causare un'interruzione. Per ulteriori informazioni, consulta Modifica di un cluster database Amazon Aurora.
-
Nella pagina di conferma esaminare le modifiche. Se sono corrette, selezionare Modify Cluster (Modifica cluster) per salvare le modifiche.
Oppure scegliere Back (Indietro) per cambiare le modifiche o Cancel (Annulla) per annullare le modifiche.
Per aggiornare la versione del motore di un cluster DB, usa il modify-db-cluster AWS CLI comando. Specifica i seguenti parametri:
-
--db-cluster-identifier
: il nome del cluster di database. -
--engine-version
– Numero di versione del motore di database a cui effettuare l'aggiornamento. Per informazioni sulle versioni valide del motore, utilizzate il AWS CLI describe-db-engine-versionscomando. -
--allow-major-version-upgrade
– Un flag obbligatorio quando il parametro--engine-version
è una versione principale diversa rispetto alla versione principale corrente del cluster database. -
--no-apply-immediately
– Applica le modifiche durante la finestra di manutenzione successiva. Per applicare immediatamente le modifiche utilizzare--apply-immediately
.
Esempio
In Linux, macOS, oppure Unix:
aws rds modify-db-cluster \ --db-cluster-identifier
mydbcluster
\ --engine-versionnew_version
\ --allow-major-version-upgrade \ --no-apply-immediately
In Windows:
aws rds modify-db-cluster ^ --db-cluster-identifier
mydbcluster
^ --engine-versionnew_version
^ --allow-major-version-upgrade ^ --no-apply-immediately
Per aggiornare la versione del motore di un cluster DB, utilizzare l'DBClusteroperazione Modifica. Specifica i seguenti parametri:
-
DBClusterIdentifier
– Nome del cluster database, ad esempio
.mydbcluster
-
EngineVersion
– Numero di versione del motore di database a cui effettuare l'aggiornamento. Per informazioni sulle versioni valide del motore, utilizzate l'operazione Descrivi DBEngine le versioni. -
AllowMajorVersionUpgrade
– Un flag obbligatorio quando il parametroEngineVersion
è una versione principale diversa rispetto alla versione principale corrente del cluster database. -
ApplyImmediately
– Indica se applicare le modifiche immediatamente o durante la finestra di manutenzione successiva. Per applicare le modifiche immediatamente, imposta il valore sutrue
. Per applicare le modifiche durante la finestra di manutenzione successiva imposta il valore sufalse
.
Principali aggiornamenti per database globali
Per un cluster database globale Aurora, il processo di aggiornamento aggiorna tutti i cluster database che compongono contemporaneamente il database globale Aurora. Esegue questa operazione per garantire che ognuno esegua la stessa versione di Aurora PostgreSQL. Inoltre, assicura che le eventuali modifiche apportate alle tabelle di sistema, ai formati di file di dati e così via vengono replicate automaticamente in tutti i cluster secondari.
Per aggiornare un cluster database globale a una nuova versione principale di Aurora PostgreSQL, si consiglia di eseguire il test delle applicazioni nella versione aggiornata, come descritto in Test di un aggiornamento del cluster database di produzione a una nuova versione principale. Assicurati di preparare le impostazioni del gruppo di parametri del cluster DB e del gruppo di parametri DB per ciascuno Regione AWS nel database globale Aurora prima dell'aggiornamento, come descritto instep 1. . Test di un aggiornamento del cluster database di produzione a una nuova versione principale
Se il cluster database globale Aurora PostgreSQL dispone di un Obiettivo del punto di ripristino (RPO) impostato per il parametro rds.global_db_rpo
, assicurati di ripristinare il parametro prima dell'aggiornamento. Il processo di aggiornamento della versione principale non funziona se l'RPO è attivato. Per impostazione predefinita, questo parametro è disattivato. Per ulteriori informazioni su database globali Aurora PostgreSQL e RPO, consulta Gestione RPOs di database globali basati su Aurora PostgreSQL.
Se verifichi che le applicazioni possano essere eseguite come previsto durante l'implementazione di prova della nuova versione, puoi avviare il processo di aggiornamento. A questo proposito, consulta Aggiornamento del motore Aurora PostgreSQL a una nuova versione principale. Assicurati di scegliere la voce di primo livello dall'elenco Databases (Database) nella console RDS, Database globale, come mostrato nell'immagine seguente.

Come per qualsiasi modifica, puoi confermare che desideri che il processo proceda quando richiesto.

Invece di utilizzare la console, puoi avviare il processo di aggiornamento utilizzando la AWS CLI o l'API RDS. Come per la console, si opera sul cluster database globale Aurora anziché su uno qualsiasi dei suoi componenti, come segue:
-
Usa il modify-global-cluster AWS CLI comando per avviare l'aggiornamento del tuo database globale Aurora utilizzando. AWS CLI
-
Utilizza l'ModifyGlobalClusterAPI per avviare l'aggiornamento.