Mit WAL-Logdateien für PostgreSQL-Datenbanken arbeiten

Überblick

Datastream verwendet das PostgreSQL WAL-Transaktionslog (Write Ahead Log), um PostgreSQL-Streams zu lesen. Das Protokoll wird in WAL-Dateien auf dem Datenbankserver gespeichert. Jeder Datensatz im WAL-Log stellt eine einzelne Änderung der tatsächlichen Daten in einer der Tabellen in der Datenbank dar.

Konfigurationsparameter für PostgreSQL-WAL-Dateien festlegen

Es wird empfohlen, die folgenden Konfigurationseinstellungen auf Ihre PostgreSQL-Datenbank anzuwenden:

  • max_slot_wal_keep_size: Legen Sie diesen Parameter fest (nur für PostgreSQL 13 und höher verfügbar), um den vom Replikationsslot belegten Speicherplatz zu begrenzen. Dies ist besonders wichtig bei Transaktionen mit langer Ausführungszeit, die im Extremfall dazu führen können, dass die WAL-Datei den gesamten Speicher belegt und die Datenbank zum Absturz bringt.

  • statement_timeout: Legen Sie für diesen Parameter einen ausgewählten Wert fest, um die Latenz aufgrund von Transaktionen mit langer Ausführungszeit zu verringern. Sie können statement_timeout auch als alternative Vorsichtsmaßnahme für Datenbanken verwenden, die max_slot_wal_keep_size nicht unterstützen.

  • wal_sender_timeout: Legen Sie diesen Parameter auf 0 fest, um das Zeitlimit zu deaktivieren, oder auf einen Wert größer oder gleich 10 Minuten.

Wenn Sie mehr als 10 Streams erstellen möchten oder die Anzahl der Slots für die logische Replikation, die neben der Anzahl der geplanten Streams von anderen Ressourcen verwendet werden, 10 überschreitet, müssen Sie die folgenden Parameter ändern:

  • max_replication_slots: Erhöhen Sie den Wert dieses Parameters in Abhängigkeit von der Anzahl der Replikationsslots, die für Ihre Datenbank festgelegt sind (Sie benötigen 1 Replikationsslot pro Stream). Sie können max_replication_slots nur beim Serverstart festlegen.

  • max_wal_senders: Erhöhen Sie den Wert dieses Parameters, sodass er größer als der Wert des Parameters max_replication_slots ist. Sie können max_wal_senders nur festlegen, wenn Sie den Server starten.