Quali sono le limitazioni all'utilizzo di ZDP quando eseguo un aggiornamento della versione secondaria del mio cluster di database Aurora compatibile con PostgreSQL?
Desidero sapere quali sono i limiti dell'utilizzo della funzionalità Zero-Downtime Patching (ZDP). Desidero risolvere le limitazioni prima di eseguire un aggiornamento della versione secondaria del mio cluster di database Amazon Aurora compatibile con PostgreSQL.
Breve descrizione
Prima di aggiornare il cluster, verifica e risolvi i problemi relativi ai seguenti fattori che possono impedire l'utilizzo di ZDP:
- Query lente
- Operazioni DDL (Data Definition Language) attive
- Tablespace temporanei
- Blocchi di tabelle attivi
- Sessioni che ascoltano su canali di notifica
- Versione di TLS incompatibile
Per un elenco completo delle limitazioni, consulta Limitazioni dell’applicazione di patch senza tempo di inattività.
Per un elenco delle versioni di Aurora compatibile con PostgreSQL che supportano ZDP, consulta Aggiornamenti della versione secondaria e applicazione di patch senza tempi di inattività. Per identificare la versione attuale di Aurora compatibile con PostgreSQL, consulta Identificazione delle versioni di Amazon Aurora PostgreSQL.
Nota: il cluster deve utilizzare la classe di istanza supportata db.r, db.t, db.x o db.serverless.
Risoluzione
Identifica e risolvi i problemi relativi alle query lente
Completa i seguenti passaggi:
-
Connettiti al cluster Aurora compatibile con PostgreSQL.
-
Per identificare le query lente, esegui questo comando:
SELECT pid, now() - pg_stat_activity.query_start AS duration, query, state FROM pg_stat_activity WHERE (now() - pg_stat_activity.query_start) > interval '5 minutes' AND state = 'active'; -
Per interrompere le query lente, esegui questo comando:
SELECT pg_terminate_backend(PID);Nota: sostituisci PID con l'ID del tuo processo.
-
Per verificare di aver interrotto tutte le query lente, esegui nuovamente la query dal passaggio 2.
Verifica e completa le operazioni DDL
Puoi attendere il completamento delle operazioni DDL oppure interromperle.
Completa i seguenti passaggi:
-
Per verificare le operazioni DDL attive, esegui questo comando:
SELECT pid, query, state, now() - query_start AS duration FROM pg_stat_activity WHERE query ILIKE '%CREATE%' OR query ILIKE '%ALTER%' OR query ILIKE '%DROP%' AND state = 'active'; -
Per interrompere un'operazione DDL, esegui questo comando:
SELECT pg_terminate_backend(PID);Nota: sostituisci PID con l'ID del tuo processo.
-
Per verificare di aver interrotto l'operazione DDL, esegui nuovamente la query dal passaggio 1.
Identifica e chiudi le tabelle temporanee
Completa i seguenti passaggi:
-
Per identificare le sessioni con tabelle temporanee, esegui questo comando:
SELECT schemaname, tablename, pidFROM pg_stat_user_tablesWHERE schemaname LIKE 'pg_temp_%'; -
Per chiudere le sessioni con tabelle temporanee, esegui questo comando:
SELECT pg_terminate_backend(PID);Nota: sostituisci PID con l'ID del tuo processo.
-
Per verificare di aver chiuso tutte le tabelle temporanee, esegui nuovamente la query dal passaggio 1.
Controlla e sblocca i blocchi delle tabelle
Completa i seguenti passaggi:
-
Per verificare la presenza di blocchi di tabelle attivi, esegui questo comando:
SELECT l.locktype, l.database, l.relation, l.page, l.tuple, l.pid, a.queryFROM pg_locks lJOIN pg_stat_activity a ON l.pid = a.pidWHERE l.granted = true AND l.locktype = 'relation'; -
Per sbloccare i blocchi, interrompi le sessioni bloccanti eseguendo questo comando:
SELECT pg_terminate_backend(PID);Nota: sostituisci PID con l'ID del tuo processo.
-
Per verificare di aver sbloccato tutti i blocchi, esegui nuovamente la query dal passaggio 1.
Verifica e interrompi i listener su canali di notifica
Completa i seguenti passaggi:
-
Per identificare le sessioni in ascolto su canali di notifica, esegui questo comando:
SELECT pid, query, stateFROM pg_stat_activityWHERE query ILIKE '%LISTEN%' AND state = 'idle'; -
Per interrompere i listener su canali di notifica, connettiti a ogni sessione ed esegui questo comando:
UNLISTEN *;Oppure esegui il comando pg_terminate_backend per interrompere le sessioni:
SELECT pg_terminate_backend(PID);
Controlla la versione di TLS
ZDP supporta le connessioni TLSv1.3.
Per verificare la versione di TLS attualmente in uso, esegui questo comando:
SELECT pid, ssl, ssl_versionFROM pg_stat_sslJOIN pg_stat_activity USING (pid) WHERE ssl = true;
Se utilizzi una versione di TLS precedente alla 1.3, aggiornala.
Aggiorna il motore e monitora l'aggiornamento
Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Per aggiornare il cluster di database, consulta Aggiornamento del motore Aurora PostgreSQL a una nuova versione secondaria.
Per monitorare gli eventi di aggiornamento, esegui questo comando AWS CLI describe-events:
aws rds describe-events --source-identifier CLUSTER-NAME --source-type db-cluster --start-time START-TIME
Nota: sostituisci CLUSTER-NAME con il nome del tuo cluster e STARTIME con l'ora di inizio dell'aggiornamento in formato ISO.
Analizza i risultati di ZDP
Per controllare i risultati di ZDP nei log del database, connettiti al cluster ed esegui questo comando:
SELECT * FROM pg_stat_activity WHERE query LIKE '%zero downtime%';
Se l'operazione ZDP è riuscita, vedi un evento del log simile al seguente:
"Attempt to upgrade the database instance ###-### with zero downtime finished. The process took 3485 ms, 378 connections preserved, 0 connections dropped."
Se l'operazione ZDP non è riuscita, vedi un evento del log simile al seguente:
"Database cluster engine minor version upgrade complete. Previous version: 13.12.9. New version: 13.18.4. Total time offline: 21.0 seconds. Taking database cluster offline while the primary instance completes the patch/upgrade process."
Nota: ZDP opera al meglio per quanto possibile. La riuscita dell'operazione dipende dal completamento di tutte le attività di preparazione e del database al momento dell'aggiornamento.
Informazioni correlate
Aggiornamento dei cluster di database Amazon Aurora PostgreSQL
- Lingua
- Italiano
