PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Komprimierte PostgreSQL-Archivprotokolle in Windows

Viele haben gebloggt und offen gesagt, wie man Archivprotokolle in PostgreSQL komprimiert, ich möchte eine kurze Version von meiner Seite teilen, die auf Windows läuft.

Wenn es um die Archivspeicherung geht, können Sie die Protokollierungsfunktion für komprimierte Archive in PostgreSQL auswählen.

„archive_command(string)“ in $PGDATA/postgresql.conf , ist wie ein Shell-Befehl, um auszuführen, was im String-Abschnitt übergeben wird, um die fertige Quelldatei zu kopieren (WAL-Dateisegment in $PGDATA/pg_xlog ) zum Ziel (ARCHIVORT ). „String“ kann alles sein wie Shell-Skript (Batch in Windows) selbst, OS-Komprimierungs-Utilities und ein spezielles Tool pg_compresslog. Unter Windows führt cmd.exe den in archive_command „string“.

übergebenen Befehl aus

Da wir uns auf der Windows-Plattform bewerben, sind die Voraussetzungen:

  1. Das Archivverzeichnis sollte vollen Postgres-Benutzerzugriff haben. („C:Program FilesPostgreSQL9.2archives“ in meinem Fall)
  2. Fensterversion des GZIP-Dienstprogramms. Obwohl es zahlreiche gute Komprimierungsprogramme für Windows-Varianten gibt, habe ich mich für gzip entschieden, weil es sowohl unter Linux als auch unter Windows unterstützt wird.
  3. Gzip.exe sollte Zugriff auf den Postgres-Benutzer und auch in PATH haben. („C:Program FilesGnuWin32bin“ in meinem Fall).

Angenommen, alle Voraussetzungen sind vorhanden und der nächste Schritt sollte darin bestehen, die Datei $PGDATA/postgresql.conf zu bearbeiten und die archivierungsbezogenen Parameter zu ändern und den Cluster neu zu starten:

wal_level=archive
archive_mode=on
archive_command = '"C:\Program Files\GnuWin32\bin\gzip.exe -1 " < "%p" > "C:\Program Files\PostgreSQL\9.2\archives\%f.gz"'

c:Program FilesPostgreSQL9.2bin>pg_ctl.exe -D ..data start (You can also start from services.msc)

Gemäß der PG-Dokumentation wurden Änderungen vorgenommen und der Cluster neu gestartet, in der Erwartung, dass meine Archive von nun an komprimiert werden. Sehen wir uns die Protokolle an:

2013-07-26 16:07:22 IST-LOG:Archivierungsbefehl fehlgeschlagen mit Exit-Code 1
2013-07-26 16:07:22 IST-DETAIL:Der fehlgeschlagene Archivierungsbefehl war:"""C :ProgrammdateienGnuWin32bingzip.exe" -1 <"pg_xlog