Esecuzione di un aggiornamento della versione principale - Amazon Aurora

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:

  1. 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 nel Regione AWS per la tua versione attuale utilizzando il AWS CLI. Per i dettagli, vedereOttenere un elenco di versioni disponibili nel Regione AWS.

  2. 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.

  3. 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 Postgre SQL a una nuova versione principale.

Nota

È possibile eseguire un aggiornamento della versione principale dalle versioni basate su Babelfish per Aurora Postgre SQL 13 a partire dalla 13.6 alle versioni basate su Aurora Postgre 14 a partire dalla 14.6. SQL Babelfish for Aurora Postgre SQL 13.4 e 13.5 non supportano l'aggiornamento della versione principale.

Puoi ottenere un elenco delle versioni del motore disponibili come obiettivi di aggiornamento delle versioni principali per il tuo cluster Aurora Postgre SQL DB interrogando il Regione AWS utilizzando il describe-db-engine-versions AWS CLI comando, come segue.

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 versioni utilizzando l'estensione Query Plan Management (QPM), come descritto inGarantire la stabilità del piano dopo un aggiornamento di versione principale.

Prima di aggiornare i cluster Aurora Postgre SQL DB di produzione a una nuova versione principale, ti consigliamo vivamente di testare l'aggiornamento per verificare che tutte le tue applicazioni funzionino correttamente:

  1. 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:

    1. Puoi specificare l'istanza database predefinita, il gruppo di parametri del cluster di database o entrambi per la nuova versione del motore di database.

    2. 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 di un'istanza nella console o utilizzando un comando come o. CLI describe-db-instancesdescribe-db-clusters

  2. 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 e regclass, 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 saperne di più su questa utilità, consulta pg_upgrade nella documentazione di Postgre. SQL

      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 aggiornando un cluster DB Aurora Postgre SQL versione 10.18 o successiva su cui è installata l'pgRoutingestensione, eliminala prima di eseguire l'aggiornamento alla versione 12.4 o successiva.

      Se stai aggiornando una versione di Aurora Postgre SQL 10.x su cui è installata la versione di estensione 1.4.3, elimina l'estensione pg_repack prima di eseguire l'aggiornamento a una versione successiva.

  3. 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 essere t.

  4. Rimuovi slot di replica logica.

    Il processo di aggiornamento non può procedere se il cluster Aurora Postgre SQL DB utilizza uno slot di replica logica. 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 le 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, puoi eliminarli utilizzando quanto segue: 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.

  5. 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.

  6. 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 delle estensioni di Postgres SQL. Per ulteriori informazioni sull'aggiornamento di PostGIS, consulta. Passaggio 6: Aggiorna l'GISestensione Post

  7. 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

  8. Eliminare i tipi di dati unknown, a seconda della versione di destinazione.

    La SQL versione 10 di Postgre non supporta il tipo di dati. unknown Se un database versione 9.6 utilizza il tipo di dati unknown, 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 unknown dati nel tuo database in modo da poter rimuovere tali colonne o cambiarle in tipi di dati supportati, usa il SQL codice seguente per ogni 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');
  9. 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 Postgre SQL a una nuova versione principale.

  10. 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 Postgre SQL a una nuova versione principale.

    Nota

    Durante il processo di aggiornamento, Aurora Postgre SQL acquisisce un'istantanea del 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, puoi utilizzare Amazon RDS per visualizzare due log prodotti dall'utilità pg_upgrade. Questi sono pg_upgrade_internal.log e pg_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.

  11. Aggiorna le estensioni Postgre. SQL Il processo di aggiornamento di Postgre non SQL aggiorna alcuna estensione Postgre. SQL Per ulteriori informazioni, consulta Aggiornamento delle estensioni di Postgres SQL.

Raccomandazioni successive all'aggiornamento

Dopo aver completato un aggiornamento della versione principale, è consigliabile quanto segue:

  • Eseguire l'operazione ANALYZE per aggiornare la tabella pg_statistic. Dovresti farlo per ogni database su tutte le tue istanze DB Postgree. SQL 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 la documentazione di ANALYZEPostgre. SQL

    Nota

    Eseguilo ANALYZE sul tuo sistema dopo l'aggiornamento per evitare problemi di prestazioni.

  • Se hai effettuato l'aggiornamento alla SQL versione 10 di Postgre, esegui REINDEX su tutti gli indici hash che hai. Gli indici hash sono stati modificati nella versione 10 e devono essere ricostruiti. Per individuare indici hash non validi, esegui quanto segue per ogni database che contiene indici hash. SQL

    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 Postgre SQL a una nuova versione principale

Quando si avvia il processo di aggiornamento a una nuova versione principale, Aurora SQL Postgre scatta un'istantanea del cluster Aurora DB prima di apportare modifiche al cluster. Questo snapshot viene creato solo per gli aggiornamenti della versione principale, non per gli aggiornamenti della versione secondaria. Una volta completato il processo di aggiornamento, è possibile trovare questa istantanea tra le istantanee manuali elencate in Istantanee nella console. RDS Il nome dell'istantanea include preupgrade come prefisso il nome del cluster Aurora Postgre SQL DB, la versione di origine, la versione di destinazione e la data e l'ora, 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 Postgre SQL non supporta l'utilizzo di un'istantanea per il ripristino a una versione secondaria precedente.

Durante il processo di aggiornamento della versione principale, Aurora alloca un volume e clona il cluster Aurora Postgre DB di origine. SQL Se l'aggiornamento fallisce per qualsiasi motivo, Aurora Postgre SQL utilizza il clone per ripristinare l'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 Postgre SQL ripristina l'aggiornamento, tieni 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 Postgre SQL pulisce il volume aggiuntivo dopo che la finestra di conservazione del backup del cluster è trascorsa oltre il momento dell'aggiornamento.

  • La successiva copia snapshot tra regioni da questo cluster sarà una copia completa anziché una copia incrementale.

Per aggiornare in sicurezza le istanze DB che compongono il cluster, Aurora SQL Postgre 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 saperne di più su questa utilità Postgre, consulta pg_upgrade nella documentazione di Postgre. SQL SQL

È possibile aggiornare il cluster Aurora Postgre SQL DB a una nuova versione utilizzando AWS Management Console, il AWS CLI, o il RDSAPI.

Modificare la versione del motore di un cluster database
  1. Accedere a AWS Management Console e apri la RDS console Amazon all'indirizzo https://console.aws.amazon.com/rds/.

  2. Nel riquadro di navigazione, scegliere Databases (Database) quindi selezionare il cluster di database da aggiornare.

  3. Scegliere Modify (Modifica). Viene visualizzata la pagina Modify DB cluster (Modifica cluster di database).

  4. In Engine version (Versione motore) scegliere la nuova versione.

  5. Scegliere Continue (Continua) e controllare il riepilogo delle modifiche.

  6. 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.

  7. 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 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-version new_version \ --allow-major-version-upgrade \ --no-apply-immediately

In Windows:

aws rds modify-db-cluster ^ --db-cluster-identifier mydbcluster ^ --engine-version new_version ^ --allow-major-version-upgrade ^ --no-apply-immediately

Per aggiornare la versione del motore di un cluster DB, utilizzate l'odifyDBClusteroperazione M. Specifica i seguenti parametri:

  • DBClusterIdentifier— Il nome del cluster DB, 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 D escribeDBEngine Versions.

  • AllowMajorVersionUpgrade – Un flag obbligatorio quando il parametro EngineVersion è 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 su true. Per applicare le modifiche durante la finestra di manutenzione successiva imposta il valore su false.

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. Lo fa per garantire che ognuno esegua la stessa versione di Aurora SQL Postgre. 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 di database globale a una nuova versione principale di Aurora PostgreSQL, si consiglia di testare le applicazioni sulla versione aggiornata, come descritto in. Test di un aggiornamento del cluster database di produzione a una nuova versione principale Assicuratevi 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 di database SQL globale Aurora Postgre ha un obiettivo del punto di ripristino impostato per il rds.global_db_rpo parametro, assicurati di reimpostare il parametro prima dell'aggiornamento. RPO Il processo di aggiornamento della versione principale non funziona se è attivato. RPO Per impostazione predefinita, questo parametro è disattivato. Per ulteriori informazioni sui database SQL globali di Aurora Postgre e, vedere. RPO Gestione RPOs di database globali basati su Aurora SQL Postgre

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 Postgre SQL a una nuova versione principale. Assicurati di scegliere l'elemento di primo livello dall'elenco Database nella RDS console, Global database, come mostrato nell'immagine seguente.

Immagine della console che mostra un database globale Aurora, un Aurora Serverless Cluster DB e un altro cluster DB Aurora SQL Postgre

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

Immagine della console che mostra la richiesta di conferma del processo di aggiornamento per un cluster Aurora SQL Postgre DB

Anziché utilizzare la console, è possibile avviare il processo di aggiornamento utilizzando AWS CLI o il RDSAPI. Come per la console, si opera sul cluster database globale Aurora anziché su uno qualsiasi dei suoi componenti, come segue: