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 ausDa wir uns auf der Windows-Plattform bewerben, sind die Voraussetzungen:
- Das Archivverzeichnis sollte vollen Postgres-Benutzerzugriff haben. („C:Program FilesPostgreSQL9.2archives“ in meinem Fall)
- 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.
- 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