Datastream verwendet das PostgreSQL-Transaktionsprotokoll 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 WAL-Dateien von PostgreSQL festlegen
Wir empfehlen, die folgenden Konfigurationseinstellungen auf Ihre PostgreSQL-Datenbank anzuwenden:
max_slot_wal_keep_size
: Mit diesem Parameter (nur für PostgreSQL 13 und höher verfügbar) können Sie die vom Replikationsslot verwendete Speichermenge begrenzen. Dies ist besonders wichtig für langlaufende Transaktionen, die in Extremfällen dazu führen können, dass die WAL-Datei 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 lang laufende Transaktionen verursacht wird. Sie könnenstatement_timeout
auch als alternative Vorsichtsmaßnahme für Datenbanken verwenden, diemax_slot_wal_keep_size
nicht unterstützen.wal_sender_timeout
: Legen Sie für diesen Parameter den Wert0
fest, um die Zeitüberschreitung zu deaktivieren, oder einen Wert, der mindestens 10 Minuten beträgt.
Wenn Sie mehr als 10 Streams erstellen möchten oder die Anzahl der logischen Replikationsslots, die zusätzlich zu den geplanten Streams von anderen Ressourcen verwendet werden, 10 übersteigt, müssen Sie die folgenden Parameter ändern:
max_replication_slots
: Erhöhen Sie den Wert dieses Parameters entsprechend der Anzahl der Replikationsslots, die für Ihre Datenbank festgelegt sind. Sie benötigen einen Replikationsslot pro Stream. Sie könnenmax_replication_slots
nur beim Starten des Servers festlegen.max_wal_senders
: Erhöhen Sie den Wert dieses Parameters, sodass er über dem Wert des Parametersmax_replication_slots
liegt. Sie könnenmax_wal_senders
nur beim Starten des Servers festlegen.
WAL-Protokolldateien optimieren
Um eine hohe Latenz Ihrer Streams und ein schnelles Wachstum der WAL-Protokolldateien beim Replizieren von Daten aus einer PostgreSQL-Quelle zu vermeiden, sollten Sie die folgenden Vorsichtsmaßnahmen beachten:
- Vermeiden Sie große, langwierige Vorgänge, da sie die Größe der WAL-Datei erheblich erhöhen können.
- Verwenden Sie
UNLOGGED
- oderTEMPORARY
-Tabellen bei Batchvorgängen. - Prüfen Sie die WAL-Konfiguration und reduzieren Sie gegebenenfalls die Häufigkeit der Checkpoints. Weitere Informationen finden Sie unter WAL-Konfiguration.
- Prüfen Sie, ob es große
DELETE
-Vorgänge gibt, und ersetzen Sie sie gegebenenfalls durchTRUNCATE
-Vorgänge. Dadurch können die WAL-Daten erheblich reduziert werden. Sie müssen jedoch vorsichtig sein, daTRUNCATE
-Vorgänge in Datastream nicht repliziert werden.
Nächste Schritte
- Weitere Informationen zu PostgreSQL als Quelle
- Weitere Informationen zum Konfigurieren einer PostgreSQL-Quelldatenbank