Mit WAL-Logdateien für PostgreSQL-Datenbanken arbeiten

Überblick

Datastream verwendet das PostgreSQL WAL-Transaktionslog (Write Ahead Log) zum Lesen von PostgreSQL-Streams. Das Protokoll wird in WAL-Dateien auf dem Datenbankserver gespeichert. Jeder Datensatz im WAL-Log stellt eine einzelne Änderung an den 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 in extremen Fällen dazu führen können, dass die WAL-Dateigröße den gesamten Speicher einnimmt und die Datenbank abstürzt.

  • statement_timeout: Setzen Sie diesen Parameter auf einen ausgewählten Wert, um die durch Transaktionen mit langer Ausführungszeit verursachte Latenz zu reduzieren. 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: Setzen Sie diesen Parameter auf 0 (zum Deaktivieren des Zeitlimits) oder auf einen Wert größer oder gleich 10 Minuten.

Wenn Sie mehr als 10 Streams erstellen möchten oder die Anzahl der logischen Replikationsslots, die von anderen Ressourcen zusätzlich zur Anzahl der geplanten Streams verwendet werden, 10 überschreitet, ändern Sie die folgenden Parameter:

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

  • max_wal_senders: Der Wert dieses Parameters wird so erhöht, dass er größer als der Wert des Parameters max_replication_slots ist. Sie können max_wal_senders nur beim Start des Servers festlegen.