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önnenstatement_timeoutauch als alternative Vorsichtsmaßnahme für Datenbanken verwenden, diemax_slot_wal_keep_sizenicht unterstützen.wal_sender_timeout: Legen Sie für diesen Parameter0fest, 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önnenmax_replication_slotsnur beim Serverstart festlegen.max_wal_senders: Erhöhen Sie den Wert dieses Parameters, sodass er größer als der Wert des Parametersmax_replication_slotsist. Sie könnenmax_wal_sendersnur 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- oderTEMPORARY-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 durchTRUNCATE-Vorgänge. Dadurch können die WAL-Dateidaten erheblich reduziert werden. Sie müssen jedoch vorsichtig sein, da Datastream keineTRUNCATE-Vorgänge repliziert.