Direkt zum Inhalt

Wie behebe ich Fehler, die auftreten, wenn ich Blau/Grün-Bereitstellungen in Amazon RDS für PostgreSQL und Aurora PostgreSQL-Compatible erstelle?

Lesedauer: 4 Minute
0

Ich möchte Fehler beheben, die auftreten, wenn ich Blau/Grün-Bereitstellungen in Amazon Relational Database Service (Amazon RDS) für PostgreSQL und Amazon Aurora PostgreSQL-Compatible Edition erstelle.

Lösung

Die Einschränkungen für Blau/Grün-Bereitstellungen überprüfen und den Fehler identifizieren

Informiere dich über die Einschränkungen für Blau/Grün-Bereitstellungen für Amazon RDS und Aurora PostgreSQL-Compatible.

Gehe wie folgt vor, um die spezifische Fehlermeldung für die Bereitstellung zu finden:

  1. Öffne die Amazon-RDS-Konsole.
  2. Wähle im Navigationsbereich Datenbanken aus.
  3. Wähle deine Blau/Grün-Bereitstellung aus.
  4. Wähle die Registerkarte Protokolle und Ereignisse aus.
  5. Überprüfe die Protokolle auf Fehlermeldungen.

Den Konfigurationsfehler der logischen Replikation beheben

Wenn du eine Blau/Grün-Bereitstellung erstellst, aber die logische Replikation nicht aktivierst, wird die folgende Fehlermeldung angezeigt:

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

Gehe wie folgt vor, um die logische Replikation zu aktivieren:

  1. Erstelle eine benutzerdefinierte Parametergruppe oder ändere eine vorhandene Gruppe.
  2. Setze den Parameter rds.logical_replication auf 1.
  3. Wende die benutzerdefinierte Parametergruppe auf die DB-Instance an.

Hinweis: Du kannst die Standardwerte für Parametergruppen nicht ändern.

Inkompatible Replikationsparameter beheben

Wenn du eine Blau/Grün-Bereitstellung mit unzureichenden Replikationsslots für die Anzahl der Datenbanken erstellst, wird die folgende Fehlermeldung angezeigt:

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

Gehe wie folgt vor, um dieses Problem zu beheben:

  1. Führe die folgende Abfrage aus, um eine Liste der Datenbanken anzuzeigen:

    SELECT datname FROM pg_database;
  2. Ändere die folgenden Parameter in der benutzerdefinierten Parametergruppe:
    Setze max_replication_slots auf einen Wert, der höher ist als die Gesamtanzahl der Datenbanken.
    Setze max_wal_senders und max_logical_replication_workers auf einen Wert, der den aktiven logischen Replikationsslots entspricht.
    Setze max_worker_processes auf einen Wert, der der Summe von max_logical_replication_workers, autovacuum_max_workers und max_parallel_workers entspricht.

  3. Erstelle eine neue Blau/Grün-Bereitstellung.

Den Fehler mit externen Replikationsslots beheben

Wenn du eine Blau/Grün-Bereitstellung erstellst, obwohl externe Replikationsslots vorhanden sind, wird die folgende Fehlermeldung angezeigt:

„Replica creation is canceled due to external replication.“

Gehe wie folgt vor, um dieses Problem zu beheben:

  1. Führe den folgenden Befehl aus, um nach vorhandenen Replikationsslots zu suchen:

    SELECT * FROM pg_replication_slots WHERE slot_type NOT LIKE 'physical';
  2. Führe den folgenden Befehl aus, um den identifizierten Slot zu löschen:

    SELECT pg_drop_replication_slot(slot_name);

    Hinweis: Ersetze slot_name durch den Namen des Replikationsslots.

DDL-Änderungen beheben, die nach der Bereitstellung auftreten

Wenn du die Datendefinitionssprache (DDL) änderst oder große Objekte änderst, nachdem du eine Blau/Grün-Bereitstellung erstellt hast, wird die folgende Fehlermeldung angezeigt:

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

Um dieses Problem zu beheben, lösche die Blau/Grün-Bereitstellung. Erstelle dann eine neue Blau/Grün-Bereitstellung.

Ändere nach der Bereitstellung nicht die DDL und die großen Objekte in der blauen Umgebung.

Fehler beim Primärschlüssel der Tabelle beheben

Wenn du Datensätze in Tabellen aktualisierst oder löschst, die keine Primärschlüssel haben, wird die folgende Fehlermeldung angezeigt:

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

Um dieses Problem zu beheben, füge Primärschlüssel zu Tabellen hinzu, die aktualisiert oder gelöscht werden müssen. Führe dann den folgenden Befehl aus, um REPLICA IDENTITY FULL festzulegen:

ALTER TABLE table_name REPLICA IDENTITY FULL;

Hinweis: Ersetze table_name durch deinen Tabellennamen.

PG_CRON-Erweiterungskonflikte lösen

Wenn du die Erweiterung pg_cron in der Bereitstellung verwendest, wird möglicherweise die folgende Fehlermeldung angezeigt:

„role 'rdsrepladmin' cannot SET ROLE to 'rds_superuser'“

Replikationskonflikte können auftreten, weil die Hintergrund-Worker der pg_cron-Erweiterung als Superuser ausgeführt werden und schreibgeschützte Einstellungen umgehen.

Um dieses Problem zu beheben, deaktiviere die pg_cron-Erweiterung für alle grünen Datenbanken, nachdem du die Blau/Grün-Bereitstellung erstellt hast. Lasse die Erweiterung während der gesamten Bereitstellung deaktiviert.