Salta al contenuto

Come posso risolvere gli errori che si verificano quando creo implementazioni blu/verdi in Amazon RDS per PostgreSQL e Aurora compatibile con PostgreSQL?

4 minuti di lettura
0

Desidero risolvere gli errori che si verificano quando creo implementazioni blu/verdi in Amazon Relational Database Service (Amazon RDS) per PostgreSQL e Amazon Aurora compatibile con PostgreSQL.

Risoluzione

Esamina le limitazioni delle implementazioni blu/verdi e identifica l'errore

Esamina le limitazioni delle implementazioni blu/verdi per Amazon RDS e Aurora compatibile con PostgreSQL.

Per trovare il messaggio di errore specifico per l'implementazione, completa i seguenti passaggi:

  1. Apri la console Amazon RDS.
  2. Nel pannello di navigazione, scegli Database.
  3. Seleziona l'implementazione blu/verde.
  4. Scegli la scheda Log ed eventi.
  5. Controlla i log per verificare la presenza di messaggi di errore.

Risolvi l'errore di configurazione della replica logica

Se crei un'implementazione blu/verde ma non attivi la replica logica, ricevi il seguente messaggio di errore:

"Blue/Green Deployments require a DB instance with logical replication enabled. Before you create a Blue/Green Deployment for a DB instance, associate the DB instance with a custom DB instance parameter group that enables logical replication."

Per attivare la replica logica, completa i passaggi seguenti:

  1. Crea un gruppo di parametri personalizzato o modifica un gruppo esistente.
  2. Imposta il parametro rds.logical_replication su 1.
  3. Applica il gruppo di parametri personalizzato all'istanza database.

Nota: non puoi modificare i valori predefiniti del gruppo di parametri.

Risolvi i parametri della replica incompatibili

Se crei un'implementazione blu/verde con slot di replica insufficienti per il numero di database, ricevi il seguente messaggio di errore:

"Creation of blue/green deployment failed due to incompatible parameter(s): max_replication_slots, and max_logical_replication_workers."

Per risolvere il problema, completa i seguenti passaggi:

  1. Esegui questa query per visualizzare un elenco dei database:

    SELECT datname FROM pg_database;
  2. Modifica i seguenti parametri nel gruppo di parametri personalizzato:
    Imposta max_replication_slots su un valore superiore al numero totale dei database.
    Imposta max_wal_senders e max_logical_replication_workers su un valore uguale agli slot di replica logica attivi.
    Imposta max_worker_processes su un valore uguale alla somma di max_logical_replication_workers, autovacuum_max_workers e max_parallel_workers.

  3. Crea una nuova implementazione blu/verde.

Risolvi l'errore degli slot di replica esterni

Se crei un'implementazione blu/verde quando esistono slot di replica esterni, ricevi il seguente messaggio di errore:

"Replica creation is canceled due to external replication."

Per risolvere il problema, completa i seguenti passaggi:

  1. Esegui questo comando per verificare gli slot di replica esistenti:

    SELECT * FROM pg_replication_slots WHERE slot_type NOT LIKE 'physical';
  2. Esegui questo comando per eliminare lo slot identificato:

    SELECT pg_drop_replication_slot(slot_name);

    Nota: sostituisci slot_name con il nome dello slot di replica.

Risolvi le modifiche DDL che si verificano dopo l'implementazione

Se modifichi il Data Definition Language (DDL) o se modifichi oggetti di grandi dimensioni dopo aver creato un'implementazione blu/verde, ricevi il seguente messaggio di errore:

"DDL changes aren't supported for blue/green deployments. These changes aren't replicated from the blue environment to the green environment, and switchover will be blocked. Your green databases now have a status of REPLICATION_DEGRADED. Delete and recreate your blue/green deployment and avoid future DDL changes."

Per risolvere il problema, elimina l'implementazione blu/verde. Quindi creane una nuova.

Dopo l'implementazione, non modificare il DDL e gli oggetti di grandi dimensioni nell'ambiente blu.

Risolvi gli errori della chiave primaria della tabella

Se aggiorni o elimini record in tabelle che non hanno chiavi primarie, ricevi il seguente messaggio di errore:

"Logical replication target relation 'public.image_audit' has neither REPLICA IDENTITY index nor PRIMARY KEY and published relation does not have REPLICA IDENTITY FULL."

Per risolvere il problema, aggiungi le chiavi primarie alle tabelle che richiedono aggiornamenti o eliminazioni. Quindi esegui questo comando per impostare REPLICA IDENTITY FULL:

ALTER TABLE table_name REPLICA IDENTITY FULL;

Nota: sostituisci table_name con il nome della tua tabella.

Risolvi i conflitti di estensione PG_CRON

Se utilizzi l'estensione pg_cron nell'implementazione, potresti ricevere il seguente messaggio di errore:

"role 'rdsrepladmin' cannot SET ROLE to 'rds_superuser'"

Possono verificarsi conflitti di replica perché i worker in background dell'estensione pg_cron vengono eseguiti come superutente e ignorano le impostazioni di sola lettura.

Per risolvere il problema, disattiva l'estensione pg_cron su tutti i database verdi dopo aver creato l'implementazione blu/verde. Mantieni l'estensione disattivata per tutta l'implementazione.