Mit WAL-Logdateien der PostgreSQL-Datenbank arbeiten

Datastream liest das PostgreSQL-Write-Ahead-Log (WAL), um Datenänderungen auf Zeilenebene aus Ihren Quelltabellen zu erfassen und zu replizieren. Der Datenbankserver speichert jede Transaktionsänderung in WAL-Dateien. Sie können Parameter für die WAL-Aufbewahrung, das Zeitlimit und den Replikationsslot konfigurieren und das Wachstum von Logdateien optimieren, um eine hohe Stream-Latenz und eine Erschöpfung des Speichers zu verhindern.

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 die vom Replikationsslot verwendete Speichermenge zu begrenzen. Dies ist besonders wichtig für Transaktionen mit langer Laufzeit, die im Extremfall dazu führen können, dass die WAL-Dateigröße den gesamten Speicherplatz belegt und die Datenbank abstürzt.

  • statement_timeout: Legen Sie für diesen Parameter einen ausgewählten Wert fest, um die Latenz zu reduzieren, die durch Transaktionen mit langer Ausführungszeit verursacht wird. 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 für diesen Parameter 0 fest, um das Zeitlimit zu deaktivieren, oder 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 verwendet werden, zusätzlich zur Anzahl der geplanten Streams 10 überschreitet, müssen Sie die folgenden Parameter ändern:

  • max_replication_slots: Erhöhen Sie den Wert dieses Parameters, je nachdem, wie viele Replikations-Slots für Ihre Datenbank festgelegt sind. Sie benötigen einen Replikations-Slot 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 beim Starten des Servers festlegen.

WAL-Logdateien optimieren

Um eine hohe Latenz Ihrer Streams und ein schnelles Wachstum der WAL-Logdateien bei der Replikation von Daten aus einer PostgreSQL-Quelle zu vermeiden, sollten Sie die folgenden Vorsichtsmaßnahmen treffen:

  • Vermeiden Sie große Vorgänge mit langer Ausführungszeit, da sie die Größe Ihrer WAL-Datei erheblich erhöhen können.
  • Verwenden Sie bei Batchvorgängen UNLOGGED- oder TEMPORARY-Tabellen.
  • Prüfen Sie Ihre WAL-Konfiguration und reduzieren Sie gegebenenfalls die Prüfpunkthäufigkeit. Weitere Informationen finden Sie unter WAL-Konfiguration.
  • Suchen Sie nach großen DELETE-Vorgängen und ersetzen Sie sie gegebenenfalls durch TRUNCATE-Vorgänge. Dadurch können die WAL-Dateidaten erheblich reduziert werden. Sie müssen jedoch vorsichtig sein, da Datastream keine TRUNCATE-Vorgänge repliziert.

Nächste Schritte