Mit WAL-Logdateien der PostgreSQL-Datenbank arbeiten

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

Konfigurationsparameter für PostgreSQL-WAL-Dateien festlegen

Wir empfehlen, die folgenden Konfigurationseinstellungen für Ihre PostgreSQL-Datenbank zu verwenden:

  • max_slot_wal_keep_size: Legen Sie diesen Parameter (nur für PostgreSQL 13 und höher verfügbar) fest, um die Menge des vom Replikationsslot verwendeten Speichers zu begrenzen. Dies ist besonders wichtig für lang andauernde Transaktionen, 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 verringern, die durch lang andauernde Transaktionen 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 (zum Deaktivieren des Zeitlimits) oder einen Wert von mindestens 10 Minuten fest.

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, müssen Sie die folgenden Parameter ändern:

  • max_replication_slots: Erhöhen Sie den Wert dieses Parameters entsprechend der Anzahl der für Ihre Datenbank festgelegten Replikations-Slots (Sie benötigen 1 Replikations-Slot pro Stream). Sie können max_replication_slots nur beim Start des Servers 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 Größe von WAL-Logdateien bei der Replikation von Daten aus einer PostgreSQL-Quelle zu vermeiden, sollten Sie die folgenden Vorsichtsmaßnahmen ergreifen:

  • Vermeiden Sie große, lang andauernde Vorgänge, da sie die Größe Ihrer WAL-Datei erheblich erhöhen können.
  • Verwenden Sie UNLOGGED- oder TEMPORARY-Tabellen bei Batchvorgängen.
  • Prüfen Sie die WAL-Konfiguration und erwägen Sie, die Häufigkeit von Checkpoints zu verringern. 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 kann die Datenmenge in WAL-Dateien erheblich reduziert werden. Sie müssen jedoch vorsichtig sein, da Datastream TRUNCATE-Vorgänge nicht repliziert.

Nächste Schritte