Beschreiben Sie die Protokollierung von Schreibvorgängen

Abgeschlossen

Wenn Änderungen in der Datenbank vorgenommen werden, z. B. INSERTS oder DELETES, werden diese Änderungen zuerst in ein Protokoll geschrieben und dann nur auf den Datenträger geschrieben. Dieser Vorgang wird als Schreib-Ahead-Protokoll bezeichnet, da Änderungen in das Protokoll geschrieben werden, bevor sie in Datendateien übertragen werden. Wenn ein Problem wie zum Beispiel Stromausfall auftritt, enthält das Protokoll immer die neuesten Daten und kann verwendet werden, um sicherzustellen, dass sich die Datenbank in einem konsistenten Zustand befindet.

Ein zweiter Vorteil besteht darin, dass Änderungen zunächst in das Protokoll geschrieben werden, sodass Änderungen an Tabellen und Indizes in Stapeln und nicht einzeln vorgenommen werden können. Dieser Vorgang reduziert die Anzahl der Datenträgerschreibvorgänge, die erforderlich sind, um Tabellen und Indizes auf dem neuesten Stand zu halten. Schreibvorgänge in das Protokoll sind schnell, da sie sequenziell ausgeführt werden. Langsamere Schreibvorgänge in Tabellen und Indizes können sicher in Batches durchgeführt werden, da alle Daten aus dem Protokoll wiederhergestellt werden können. Bei Arbeitslasten, die in der Regel viele kleine Updates umfassen, wird die Leistung verbessert.

Anmerkung

Bei lokalen Implementierungen von PostgreSQL wird die Protokolldatei im pg_wal Verzeichnis gespeichert. Azure Database for PostgreSQL bietet keinen Zugriff auf das Dateisystem, daher müssen Sie sich keine Gedanken über den physischen Speicher der Protokolldatei machen.

Es gibt mehrere Serverparameter, mit denen Sie steuern können, wie Write-Ahead-Logging arbeitet und es für Ihre Workload optimieren können:

  • commit_delay – die Verzögerung zwischen dem Übertragen der Transaktion und dem Schreiben des Protokolls auf die Festplatte.
  • wal_buffers – Die Anzahl der Seitenpuffer im gemeinsam genutzten Speicher für das Write-Ahead-Logging (WAL).
  • max_wal_size – maximale Größe, damit der WAL wachsen kann, bevor der automatische Prüfpunkt ausgelöst wird.
  • wal_writer_delay - Zeitintervall zwischen WAL-Spülungen, die vom WAL Writer durchgeführt werden.
  • wal_compression – ob vollständige Seiten in der WAL-Datei komprimiert werden.
  • wal_level – bestimmt, wie viele Informationen in das WAL geschrieben werden. Die zulässigen Werte sind REPLICA oder LOGICAL.

Wiederherstellung zu einem bestimmten Zeitpunkt

Der Hauptzweck des Schreib-Ahead-Protokolls (WAL) besteht darin, die Konsistenz und Haltbarkeit der Datenbank sicherzustellen, wenn ein Absturz auftritt. Die lokale Version von PostgreSQL ermöglicht die Verwendung des Protokolls als Archiv, sodass Sie mithilfe der Konfigurationseinstellungen archive_mode und archive_commandzu einem Zeitpunkt wiederherstellen können.

Azure Database for PostgreSQL ist ein verwalteter Dienst, der keinen Zugriff auf das zugrunde liegende Dateisystem zulässt. Dazu gehören jedoch automatische vollständige Sicherungen des Servers einschließlich aller Datenbanken. Mit dieser Sicherung können Sie Ihre Daten zu einem Zeitpunkt neu erstellen. Sicherungen werden automatisch geplant und werden einmal täglich durchgeführt. Wenn Sie die Wiederherstellung durchführen müssen, können Sie bis zu der Anzahl von Tagen wiederherstellen, die Sie für die Aufbewahrung von Sicherungen angegeben haben, bis zu maximal 35 Tage. So geben Sie an, wie lange Sicherungen aufbewahrt werden sollen.

  1. Navigieren Sie im Azure-Portal zu Ihrem flexiblen Azure Database for PostgreSQL-Server.
  2. Wählen Sie im Abschnitt Übersicht Ihre Konfigurationaus.
  3. Unter "Sichern" finden Sie Aufbewahrungszeitraum (in Tagen). Mit der Schiebereglerleiste können Sie die Anzahl der Tage auswählen, die Sicherungen aufbewahrt werden sollen.
  4. Wählen Sie Speichern aus, um Ihre Änderungen beizubehalten.